Skip to content
DocsContracts and API

Tech

Contracts and API

Every contract Animr calls or deployed, and the public HTTP API behind the pages.

Contracts

Contracts
ContractAddressAnimr uses
AnimrTradeGuard (Animr)0x92D3d4Af4B3b0F29Ec020e407803e135af61987bView 0x92D3d4Af4B3b0F29Ec020e407803e135af61987b on the explorer (opens in a new tab)trade, configure, disable, setBuyOnly; views canTrade, maxAmountIn, quoteFloor, limitsOf, isBuyOnly. Events Traded, Configured, Disabled, BuyOnlySet.
AnimrTrophies (Animr)0x7720Ed65f3DdfC4AD812D8A5ACd25762712b513dView 0x7720Ed65f3DdfC4AD812D8A5ACd25762712b513d on the explorer (opens in a new tab)award, awarded, accountOf, balanceOfBatch. Event TrophyAwarded.
Chog Genesis (ERC-721)0xc96d31F8626c6D03Fae5dCD3d61e3FB9F4a73763View 0xc96d31F8626c6D03Fae5dCD3d61e3FB9F4a73763 on the explorer (opens in a new tab)ownerOf, tokenURI
$CHOG (ERC-20)0x350035555E10d9AfAF1566AaebfCeD5BA6C27777View 0x350035555E10d9AfAF1566AaebfCeD5BA6C27777 on the explorer (opens in a new tab)balanceOf, transfer (simulated in the heist proof)
WMON (ERC-20)0x3bd359C1119dA7Da1D913D1C4D2B7c461115433AView 0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A on the explorer (opens in a new tab)balanceOf
CHOG/WMON pool (Capricorn CL, 1%)0x116e7D070f1888B81E1E0324F56d6746B2D7d8f1View 0x116e7D070f1888B81E1E0324F56d6746B2D7d8f1 on the explorer (opens in a new tab)observe (TWAP), candles via GeckoTerminal
Swap router0xdac97b6a3951641B177283028A8f428332333071View 0xdac97b6a3951641B177283028A8f428332333071 on the explorer (opens in a new tab)exactInputSingle, called only by the guard
QuoterV20xB430EDD2b54cdB3B25703fb3342ca3a88663A04DView 0xB430EDD2b54cdB3B25703fb3342ca3a88663A04D on the explorer (opens in a new tab)Quotes for on-chain trades
ERC-6551 Registry v0.3.10x000000006551c19487814612e58FE06813775758View 0x000000006551c19487814612e58FE06813775758 on the explorer (opens in a new tab)createAccount, account
Tokenbound AccountProxy0x55266d75D1a14E4572138116aF39863Ed6596E7FView 0x55266d75D1a14E4572138116aF39863Ed6596E7F on the explorer (opens in a new tab)initialize; the implementation in every wallet address
Tokenbound AccountV3Upgradable0x41C8f39463A868d3A88af00cd0fe7102F30E44eCView 0x41C8f39463A868d3A88af00cd0fe7102F30E44eC on the explorer (opens in a new tab)owner, isValidSigner, execute, setPermissions
Multicall30xcA11bde05977b3631167028862bE2a173976CA11View 0xcA11bde05977b3631167028862bE2a173976CA11 on the explorer (opens in a new tab)aggregate3 for create + initialize

Public keys and wallets

Keys
WhoAddressRole
AI operator0x2523bBdD941783C4E565180D2a1b18DE86319cC2View 0x2523bBdD941783C4E565180D2a1b18DE86319cC2 on the explorer (opens in a new tab)guard.operator() and the trophies minter. Holds MON for gas only.
Guard admin0xc742AdA2872a042dD36D2E706907b4036968960CView 0xc742AdA2872a042dD36D2E706907b4036968960C on the explorer (opens in a new tab)The team's main wallet: pause, rotate the operator. Also AnimrTrophies' owner.
House key0xbcfD3a3846e39a687901EB77ed05F4E3CdC1e259View 0xbcfD3a3846e39a687901EB77ed05F4E3CdC1e259 on the explorer (opens in a new tab)Scripts only: deployed the contracts, grew the oracle, pays Oracle Purses through the scheduled purse job
House Chog wallet (CHOG #891 · token 1399)0xa46aE2364eDa19C7d8fCe7F5878C93E50aB2AD71View 0xa46aE2364eDa19C7d8fCe7F5878C93E50aB2AD71 on the explorer (opens in a new tab)The heist's vault and the team's on-chain agent

HTTP API

All routes answer JSON under https://useanimr.vercel.app. Token IDs run 1 to 1,969. Routes marked CRON_SECRET need Authorization: Bearer <CRON_SECRET>; HEIST_ADMIN_SECRET marks moderation. Fan routes set the anonymous animr_fan cookie. Hidden Chogs answer 404 on per-Chog routes.

API routes
RouteMethodPurpose
/api/dna/populationGETAll Chogs ranked by edge vs holding, with headline stats. ?window=30d|45d|max
/api/dna/traitsGETTrait Alpha. ?window=
/api/dna/[tokenId]GETA Chog's snapshot, genome and persona name
/api/dna/[tokenId]/replayGETIts replay on real candles. ?window=
/api/dna/[tokenId]/standingGETIts League rank and edge. ?window=, ?since=
/api/versus/randomGETA fresh random bout (fighters only)
/api/versus/newGETA bout for chosen Chogs. ?a=&b=
/api/versus/[id]GETA bout's preview, or the whole race with ?spectate=1
/api/versus/[id]/pickPOSTBody { fighter: "a" | "b" }: your pick, then the race and reveal
/api/versus/meGETYour Versus record
/api/versus/statsGETVersus totals
/api/bell/todayGETThe latest Bell, with its live move while open
/api/bell/[day]GETOne Bell (YYYY-MM-DD), with its Oracle Purse once settled
/api/bell/[day]/callsGETA page of a Bell's calls. ?cursor=&sort=bold|bull|bear|tokenId|points&limit=
/api/bell/chog/[tokenId]GETA Chog's latest call and season record
/api/bell/recap/[day]GETA settled Bell's recap
/api/bell/standingsGETTop oracles and top fans
/api/bell/ridePOSTBody { tokenId }: ride a Chog on the open (or next) Bell
/api/bell/cron CRON_SECRETGETRing and settle whatever is due (Vercel Cron at 15:00 and 16:00; the pulse at minutes 1 and 11)
/api/fanGET, POSTYour fan card; POST { nickname } sets a nickname
/api/heistGETThe heist page's data
/api/heist/chatPOSTBody { sessionId?, message, recipient? }: one message to the defender
/api/heist/proofPOSTBody { recipient? }: Run the check, the read-only mainnet simulation
/api/heist/hall-of-fame HEIST_ADMIN_SECRETGET, POST, PATCH, DELETEThe wall; POST adds your caving reply; PATCH and DELETE moderate
/api/chog/[tokenId]/askPOSTBody { sessionId?, message, viewer? }: Ask this Chog
/api/agents/[tokenId]GETA Chog's agent and its newest decisions. Cached 5 s at the CDN with no stale-while-revalidate, so a claim or a mode switch shows on the next poll
/api/agents/[tokenId]/activatePOSTWake the AI with the holder's signed message
/api/agents/[tokenId]/modePOSTSwitch paper or on-chain with the holder's signed message
/api/agents/[tokenId]/tickPOSTThink now (paper agents, rate limited; an on-chain agent answers 403)
/api/agent/tick CRON_SECRETGETEvery awake agent thinks once (the pulse at minute 30)
/api/leaderboardGETEvery claimed agent by PnL vs holding
/api/holders/[address]GETThe Chogs an address holds, with League place and Bell call
/api/optoutGET, POSTHide my Chog: list, status, the message to sign, and the signed opt-out
/api/statsGETThe numbers on /stats (counts only)
/api/trophies/meta/[id]GETERC-1155 metadata for a trophy kind
/api/trophies/art/[id]GETA trophy's badge (SVG)