Developers
Read the AntSeed marketplace by API.
curl https://antseedstats.com/api/v1/network/summary
Reading a responseThe envelope, the units and who says what
{
"data": { ... },
"meta": {
"version": "v1",
"endpoint": "sellers.daily",
"as_of_block": 52301234,
"as_of_ts": 1791400000,
"indexer_lag_blocks": 3,
"generated_at": 1791400010,
"max_age_s": 300,
"sources": { "days": "chain" }
}
}- as_of_blockThe Base block our indexer had fully processed when the response was built, with its timestamp and how many blocks behind the chain head that was. A number without a block cannot be reconciled with the chain; this one can.
- versionFields never change meaning inside v1; new fields are added, old ones stay. Figures that depend on a definition of ours, such as organic or the trust score, say so in meta.sources, and a change of definition would be a new field or a v2.
- moneyMoney comes twice: an integer in micro-USDC (6 decimals, exact, the on-chain unit) and a formatted string with 2 decimals. Tokens and requests are integers. Prices are USD per 1 million tokens, as advertised.
- timeTimestamps are UTC seconds (fields ending in _ts). Days are UTC calendar days as YYYY-MM-DD. A 24h, 7d or 30d window is rolling and ends now; a day is a full UTC day, and today is partial.
- sourceschain: read from Base events or contract state. announce: what a seller signs and publishes about itself (names, prices), taken as is. antseedstats: a figure that depends on a definition of ours, such as the organic view, the trust score or a projection.
- viewLists of sellers and prices default to all: nothing hidden. Rankings default to organic, like the site: sellers in AntSeed's on-chain wash registry and in clusters we confirmed are left out. Every row still carries wash_registry (the chain's verdict) and organic (ours) so you can choose.
GET/network/summaryLifetime totals, windows, current epoch
The home page numbers. Lifetime settled USDC and fees come from every ChannelSettled event. The 24h, 7d and 30d windows are rolling (not calendar) and count distinct buyers and sellers inside the window. paid_usage_24h comes from settlements whose buyers shared a per-model split, so it is a lower bound.
curl "https://antseedstats.com/api/v1/network/summary"
Response fields (38)
- lifetime.settled_microintegersettled in micro-USDC (integer, 6 decimals)
- lifetime.settled_usdstringsettled in USDC, formatted with 2 decimals
- lifetime.fees_microintegerfees in micro-USDC (integer, 6 decimals)
- lifetime.fees_usdstringfees in USDC, formatted with 2 decimals
- lifetime.settlesintegerSettlement events
- lifetime.buyersintegerDistinct buyers that settled
- lifetime.sellersintegerDistinct sellers that settled
- lifetime.tokens_inintegerInput tokens (MetadataRecorded)
- lifetime.tokens_outintegerOutput tokens
- lifetime.requestsintegerRequests
- windowsobjectRolling windows ending now
- windows.24h.settled_microintegersettled in micro-USDC (integer, 6 decimals)
- windows.24h.settled_usdstringsettled in USDC, formatted with 2 decimals
- windows.24h.settlesintegerSettles
- windows.24h.buyersintegerDistinct buyers
- windows.24h.sellersintegerDistinct sellers
- windows.7d.settled_microintegersettled in micro-USDC (integer, 6 decimals)
- windows.7d.settled_usdstringsettled in USDC, formatted with 2 decimals
- windows.7d.settlesintegerSettles
- windows.7d.buyersintegerDistinct buyers
- windows.7d.sellersintegerDistinct sellers
- windows.30d.settled_microintegersettled in micro-USDC (integer, 6 decimals)
- windows.30d.settled_usdstringsettled in USDC, formatted with 2 decimals
- windows.30d.settlesintegerSettles
- windows.30d.buyersintegerDistinct buyers
- windows.30d.sellersintegerDistinct sellers
- paid_usage_24hobjectRolling 24h from per-model usage (lower bound)
- paid_usage_24h.requestsintegerPaid requests
- paid_usage_24h.tokensintegerPaid tokens
- paid_usage_24h.imagesintegerGenerated images
- paid_usage_24h.free_requestsintegerFree-tier requests
- paid_usage_24h.free_tokensintegerFree-tier tokens
- paid_usage_24h.modelsintegerDistinct models used
- paid_usage_24h.coveragenumberShare of settlements carrying a per-model split, 0 to 1
- epoch.numberintegerCurrent epoch
- epoch.starts_tsintegerUTC seconds
- epoch.ends_tsintegerUTC seconds
- epoch.seconds_leftintegerUntil the next epoch
Cache 45 s. Sources: lifetime = chain, windows = chain, paid_usage_24h = chain, epoch = chain.
GET/network/dailyPer UTC day: settled, users, tokens
One row per UTC calendar day with no gaps. Settled and fees from ChannelSettled; tokens and requests from MetadataRecorded (paid); free usage from the free-tier counters; users are distinct accounts that settled that day. Today is partial.
curl "https://antseedstats.com/api/v1/network/daily?from=2026-09-30&to=2026-10-06"
- fromquery · dateFirst UTC day, YYYY-MM-DD (default: 30 days ago)
- toquery · dateLast UTC day, YYYY-MM-DD (default: today)
- formatquery · json | csv · default jsonjson (default) or csv
Response fields (19)
- fromstringFirst day returned
- tostringLast day returned
- days[]array
- days[].daystringUTC calendar day
- days[].settled_microintegersettled in micro-USDC (integer, 6 decimals)
- days[].settled_usdstringsettled in USDC, formatted with 2 decimals
- days[].fees_microintegerfees in micro-USDC (integer, 6 decimals)
- days[].fees_usdstringfees in USDC, formatted with 2 decimals
- days[].settlesintegerSettlement events
- days[].usersintegerDistinct accounts that settled (buyers plus sellers)
- days[].new_usersintegerAccounts whose first settlement is this day
- days[].buyersintegerDistinct buyers
- days[].sellersintegerDistinct sellers
- days[].free_only_usersintegerAccounts active on the free tier only
- days[].tokens_inintegerPaid input tokens
- days[].tokens_outintegerPaid output tokens
- days[].requestsintegerPaid requests
- days[].free_tokensintegerFree-tier tokens
- days[].free_requestsintegerFree-tier requests
Cache 5 to 8 min. Sources: days = chain.
GET/leadersLast 24h leaders, wash left out
The 'Happening now' band. Rolling 24h window. Sellers we treat as wash trading are left out of every ranking (excluded_sellers says how many were active); this is our judgement, not a chain fact. Model rankings use per-model usage shared by buyers, so they are lower bounds.
curl "https://antseedstats.com/api/v1/leaders"
Response fields (26)
- window_hoursinteger24
- seller.addressstringLowercase 0x
- seller.namestring | nullAnnounced name (untrusted)
- seller.settled_microintegersettled in micro-USDC (integer, 6 decimals)
- seller.settled_usdstringsettled in USDC, formatted with 2 decimals
- seller.buyersintegerDistinct buyers
- top_model_by_sales.modelstringCanonical id
- top_model_by_sales.displaystringName
- top_model_by_sales.settled_microintegersettled in micro-USDC (integer, 6 decimals)
- top_model_by_sales.settled_usdstringsettled in USDC, formatted with 2 decimals
- top_model_by_sales.tokensintegerTokens
- top_model_by_sales.requestsintegerRequests
- top_model_by_sales.buyersintegerBuyers
- top_model_by_tokens.modelstringCanonical id
- top_model_by_tokens.displaystringName
- top_model_by_tokens.settled_microintegersettled in micro-USDC (integer, 6 decimals)
- top_model_by_tokens.settled_usdstringsettled in USDC, formatted with 2 decimals
- top_model_by_tokens.tokensintegerTokens
- top_model_by_tokens.requestsintegerRequests
- top_model_by_tokens.buyersintegerBuyers
- top_free_model.modelstringCanonical id
- top_free_model.displaystringName
- top_free_model.tokensintegerFree tokens
- top_free_model.requestsintegerFree requests
- top_free_model.buyersintegerBuyers
- excluded_sellersintegerWash-trading sellers active in the window and left out
Cache 45 s. Sources: seller = chain, models = chain, exclusion = antseedstats.
GET/sellersEvery seller, lifetime and 7-day figures
The seller leaderboard. Lifetime figures from ChannelSettled and MetadataRecorded. wash_registry is AntSeed's on-chain verdict; organic is our view (registry plus confirmed clusters). The default view is all: nothing is hidden unless you ask.
curl "https://antseedstats.com/api/v1/sellers?sort=revenue_7d&view=organic&limit=10"
- sortquery · revenue_7d | revenue | tokens | requests · default revenue_7dSort key, descending
- viewquery · all | organic · default allorganic leaves out sellers in the on-chain wash registry plus our confirmed clusters; all keeps every seller
- limitquery · int · default 100Rows to return (1 to 1000)
- offsetquery · int · default 0Rows to skip
Response fields (24)
- totalintegerSellers matching the view
- sellers[]array
- sellers[].addressstringLowercase 0x address
- sellers[].agent_idstring | nullOn-chain agent id (null for announce-only peers)
- sellers[].namestring | nullDisplay name from the seller's own announcement (untrusted text)
- sellers[].verifiedbooleanHas a domain or GitHub proof we verified
- sellers[].livebooleanAnnouncing on the DHT right now
- sellers[].revenue_microintegerrevenue in micro-USDC (integer, 6 decimals)
- sellers[].revenue_usdstringrevenue in USDC, formatted with 2 decimals
- sellers[].revenue_7d_microintegerrevenue 7d in micro-USDC (integer, 6 decimals)
- sellers[].revenue_7d_usdstringrevenue 7d in USDC, formatted with 2 decimals
- sellers[].fees_microintegerfees in micro-USDC (integer, 6 decimals)
- sellers[].fees_usdstringfees in USDC, formatted with 2 decimals
- sellers[].settlesintegerLifetime settlement events
- sellers[].channelsintegerLifetime payment channels
- sellers[].tokensintegerLifetime tokens served, input plus output (MetadataRecorded)
- sellers[].requestsintegerLifetime requests (MetadataRecorded)
- sellers[].modelsintegerModels advertised
- sellers[].reputationnumber | nullTrust score 0 to 100 (AntSeed SDK formula, recomputed by us)
- sellers[].ghost_ratenumber | nullShare of channels opened and never settled, 0 to 1
- sellers[].wash_registrybooleanProven wash trader in AntSeed's on-chain registry (chain fact)
- sellers[].organicbooleanIn our Organic view: not in the registry and not in a cluster we confirmed (our judgement)
- sellers[].first_settle_tsinteger | nullFirst settlement, UTC seconds (null if none)
- sellers[].last_settle_tsinteger | nullLast settlement, UTC seconds (null if none)
Cache 5 to 8 min. Sources: figures = chain, name = announce, reputation = antseedstats, wash_registry = chain, organic = antseedstats.
GET/sellers/{address}One seller: totals, trust, verification
Everything the seller page shows. trust holds the four weighted parts of the AntSeed trust score (history 50, usage 20, power 10, identity 20) as we recompute them from on-chain inputs; wash_registry comes from the registry contract.
curl "https://antseedstats.com/api/v1/sellers/0xd19ffae0e85b5230422019926b2f37ec0f1f41f3"
- addresspath · address · requiredSeller address (0x, 40 hex, any case)
Response fields (39)
- addressstringLowercase 0x
- agent_idstring | nullOn-chain agent id
- peer_idstring | nullDHT peer id
- namestring | nullAnnounced name (untrusted)
- rankinteger | nullPosition by lifetime revenue
- sharenumber | nullShare of lifetime network revenue, 0 to 1
- revenue_microintegerrevenue in micro-USDC (integer, 6 decimals)
- revenue_usdstringrevenue in USDC, formatted with 2 decimals
- revenue_7d_microintegerrevenue 7d in micro-USDC (integer, 6 decimals)
- revenue_7d_usdstringrevenue 7d in USDC, formatted with 2 decimals
- revenue_prev_7d_microintegerrevenue prev 7d in micro-USDC (integer, 6 decimals)
- revenue_prev_7d_usdstringrevenue prev 7d in USDC, formatted with 2 decimals
- fees_microintegerfees in micro-USDC (integer, 6 decimals)
- fees_usdstringfees in USDC, formatted with 2 decimals
- settlesintegerSettlements
- channelsintegerChannels
- buyersintegerDistinct buyers
- tokensintegerTokens served
- requestsintegerRequests
- reputationnumber | nullTrust score 0 to 100
- trust.historynumber | null0 to 50
- trust.usagenumber | null0 to 20
- trust.powernumber | null0 to 10
- trust.identitynumber | null0 to 20
- trust.identity_kindstring | nullKind of identity claim
- trust.epochinteger | nullEpoch the score was computed for
- ghost_ratenumber | nullChannels never settled over channels opened, 0 to 1
- stake_usdcnumber | nullUSDC stake on-chain
- verifiedbooleanHas a domain or GitHub proof we verified
- verification[]array
- verification[].kindstringdomain or github
- verification[].targetstringDomain or GitHub user
- verification[].verifiedbooleanEffective state
- verification[].hrefstringVerified resource
- livebooleanAnnouncing on the DHT now
- wash_registrybooleanProven wash trader on-chain
- organicbooleanIn our Organic view
- first_settle_tsinteger | nullUTC seconds
- last_settle_tsinteger | nullUTC seconds
Cache 45 s. Sources: figures = chain, name = announce, prices = announce, reputation = antseedstats, verification = antseedstats, wash_registry = chain, organic = antseedstats.
GET/sellers/{address}/dailyOne seller per UTC day (the cross-check)
The cross-check series. settled is what changed hands on-chain for this seller that day (every ChannelSettled where it is the seller), which is why it can differ from what the seller measured as served. Tokens come from MetadataRecorded for the seller's agent and are null for announce-only peers.
curl "https://antseedstats.com/api/v1/sellers/0xd19ffae0e85b5230422019926b2f37ec0f1f41f3/daily?from=2026-09-30&to=2026-10-06"
- addresspath · address · requiredSeller address (0x, 40 hex, any case)
- fromquery · dateFirst UTC day, YYYY-MM-DD (default: 30 days ago)
- toquery · dateLast UTC day, YYYY-MM-DD (default: today)
- formatquery · json | csv · default jsonjson (default) or csv
Response fields (13)
- addressstringLowercase 0x
- fromstringFirst day
- tostringLast day
- days[]array
- days[].daystringUTC day
- days[].settled_microintegersettled in micro-USDC (integer, 6 decimals)
- days[].settled_usdstringsettled in USDC, formatted with 2 decimals
- days[].fees_microintegerfees in micro-USDC (integer, 6 decimals)
- days[].fees_usdstringfees in USDC, formatted with 2 decimals
- days[].settlesintegerSettlements
- days[].buyersintegerDistinct buyers
- days[].tokens_ininteger | nullInput tokens
- days[].tokens_outinteger | nullOutput tokens
Cache 5 to 8 min. Sources: days = chain.
GET/sellers/{address}/modelsWhat a seller advertises and sold
advertised is the signed metadata as the network sees it (prices in USD per 1M tokens). sold is decoded from settlements whose buyers shared a per-model split, so it is a lower bound and names come as advertised.
curl "https://antseedstats.com/api/v1/sellers/0xd19ffae0e85b5230422019926b2f37ec0f1f41f3/models"
- addresspath · address · requiredSeller address (0x, 40 hex, any case)
Response fields (19)
- addressstringLowercase 0x
- advertised[]array
- advertised[].modelstringCanonical id
- advertised[].model_displaystringName
- advertised[].advertised_asstringRaw announced name
- advertised[].input_usd_per_mnumber | nullUSD per 1M input
- advertised[].cached_input_usd_per_mnumber | nullUSD per 1M cached input
- advertised[].output_usd_per_mnumber | nullUSD per 1M output
- advertised[].freeboolean0 and 0
- advertised[].protocolsstring | nullCSV of API protocols
- advertised[].categoriesstring | nullSeller tags, CSV
- sold[]array
- sold[].modelstringCanonical id
- sold[].model_displaystringName
- sold[].settled_microintegersettled in micro-USDC (integer, 6 decimals)
- sold[].settled_usdstringsettled in USDC, formatted with 2 decimals
- sold[].tokensintegerTokens
- sold[].requestsintegerRequests
- sold[].buyersintegerDistinct buyers
Cache 90 s. Sources: advertised = announce, sold = chain.
GET/modelsCatalogue: sellers, prices, usage
One row per canonical model (name variants merged). Prices are the min and max advertised across sellers. Usage is lifetime and a lower bound (per-model splits are opt-in). all counts every seller; organic leaves out wash-trading sellers. The default view is organic, like the site; models with no organic usage are still listed.
curl "https://antseedstats.com/api/v1/models?view=organic&limit=10"
- viewquery · all | organic · default organicorganic leaves out sellers in the on-chain wash registry plus our confirmed clusters; all keeps every seller
- sortquery · revenue | tokens | requests | sellers · default revenueSort key, descending, applied to the chosen view
- limitquery · int · default 100Rows to return (1 to 1000)
- offsetquery · int · default 0Rows to skip
Response fields (27)
- totalintegerModels
- models[]array
- models[].modelstringCanonical id
- models[].displaystringName
- models[].custombooleanA seller's own model, not in any catalog
- models[].sellersintegerSellers advertising it
- models[].image_generationbooleanPriced per image
- models[].min_input_usd_per_mnumber | nullCheapest input price
- models[].max_input_usd_per_mnumber | nullDearest input price
- models[].min_output_usd_per_mnumber | nullCheapest output
- models[].max_output_usd_per_mnumber | nullDearest output
- models[].min_image_usdnumber | nullCheapest price per image
- models[].usageobjectIn the chosen view
- models[].usage.settled_microintegersettled in micro-USDC (integer, 6 decimals)
- models[].usage.settled_usdstringsettled in USDC, formatted with 2 decimals
- models[].usage.tokensintegerTokens
- models[].usage.imagesintegerImages
- models[].usage.requestsintegerRequests
- models[].usage.buyersintegerBuyers
- models[].usage.sellersintegerSellers with sales
- models[].usage_allobjectEvery seller, always
- models[].usage_all.settled_microintegersettled in micro-USDC (integer, 6 decimals)
- models[].usage_all.settled_usdstringsettled in USDC, formatted with 2 decimals
- models[].usage_all.tokensintegerTokens
- models[].usage_all.requestsintegerRequests
- models[].usage_all.buyersintegerBuyers
- models[].usage_all.sellersintegerSellers with sales
Cache 5 to 8 min. Sources: prices = announce, usage = chain, organic = antseedstats.
GET/models/{id}Where to buy one model
Accepts the canonical id or any advertised spelling. Sellers are deduplicated (cheapest input price) and sorted by price. Use reputation, verified and organic to pick; the list hides nobody.
curl "https://antseedstats.com/api/v1/models/kimi-k3"
- idpath · string · requiredCanonical model id or an advertised name
Response fields (31)
- modelstringCanonical id
- displaystringName
- custombooleanSeller's own model
- advertised_as[]array
- usageobjectLifetime, every seller, lower bound
- usage.settled_microintegersettled in micro-USDC (integer, 6 decimals)
- usage.settled_usdstringsettled in USDC, formatted with 2 decimals
- usage.tokensintegerTokens
- usage.requestsintegerRequests
- usage.buyersintegerBuyers
- usage.sellersintegerSellers
- usage_organic.settled_microintegersettled in micro-USDC (integer, 6 decimals)
- usage_organic.settled_usdstringsettled in USDC, formatted with 2 decimals
- usage_organic.tokensintegerTokens
- usage_organic.requestsintegerRequests
- usage_organic.buyersintegerBuyers
- usage_organic.sellersintegerSellers
- sellers[]array
- sellers[].addressstring | nullLowercase 0x
- sellers[].agent_idstringAgent id
- sellers[].namestring | nullAnnounced name (untrusted)
- sellers[].advertised_asstringRaw name
- sellers[].input_usd_per_mnumber | nullUSD per 1M input
- sellers[].cached_input_usd_per_mnumber | nullUSD per 1M cached input
- sellers[].output_usd_per_mnumber | nullUSD per 1M output
- sellers[].image_usdnumber | nullUSD per image
- sellers[].freeboolean0 and 0
- sellers[].reputationnumber | nullTrust score
- sellers[].verifiedbooleanVerified proof
- sellers[].organicbooleanIn our Organic view
- sellers[].request_idstring | nullpeerId@model, what a buyer sends
Cache 90 s. Sources: prices = announce, reputation = antseedstats, organic = antseedstats, usage = chain.
GET/pricesEvery listing with list-price savings
The network explorer flattened: one row per seller and model with the advertised prices, whether it is free, the OpenRouter list price for the same model and the saving against it. Filter by model to compare sellers.
curl "https://antseedstats.com/api/v1/prices?model=kimi-k3"
- modelquery · stringCanonical model id to filter on
- freequery · booltrue: only free listings; false: only paid
- viewquery · all | organic · default allorganic leaves out sellers in the on-chain wash registry plus our confirmed clusters; all keeps every seller
- limitquery · int · default 100Rows to return (1 to 1000)
- offsetquery · int · default 0Rows to skip
Response fields (18)
- totalintegerListings matching
- listings[]array
- listings[].sellerstringLowercase 0x address
- listings[].seller_namestring | nullAnnounced display name (untrusted text)
- listings[].agent_idstring | nullOn-chain agent id
- listings[].modelstringCanonical model id (the /models/{id} slug)
- listings[].model_displaystringDisplay name
- listings[].advertised_asstringThe raw name the seller announces
- listings[].input_usd_per_mnumber | nullUSD per 1M input tokens
- listings[].cached_input_usd_per_mnumber | nullUSD per 1M cached input tokens
- listings[].output_usd_per_mnumber | nullUSD per 1M output tokens
- listings[].freebooleanInput and output both priced at 0
- listings[].list_input_usd_per_mnumber | nullOpenRouter list price for the same model, USD per 1M input
- listings[].save_pctinteger | nullPercent below the list price, 1 to 99, only when the listing beats it
- listings[].reputationnumber | nullTrust score 0 to 100
- listings[].verifiedbooleanHas a domain or GitHub proof we verified
- listings[].organicbooleanSeller in our Organic view
- listings[].capabilities[]array
Cache 90 s. Sources: prices = announce, list_price = antseedstats, reputation = antseedstats, organic = antseedstats.
GET/epochsEvery epoch: emission, points, burn
Epochs are 7 days from genesis (2026-04-09 09:54:21 UTC). Points are the on-chain usage accruals in USDC; from epoch 22 they come from the usage accounting contract, which leaves out registry-proven wash traders, so totals drop at that boundary for the same real activity. burn_ants is what the gate burned at the close of that epoch.
curl "https://antseedstats.com/api/v1/epochs"
Response fields (13)
- currentintegerCurrent epoch number
- epochs[]array
- epochs[].epochintegerNumber
- epochs[].starts_tsintegerUTC seconds
- epochs[].ends_tsintegerUTC seconds
- epochs[].statusstringcomplete, current or future
- epochs[].emission_antsnumberEmission for the epoch
- epochs[].modelstringlegacy or recognized
- epochs[].seller_points_microintegerseller points in micro-USDC (integer, 6 decimals)
- epochs[].seller_points_usdstringseller points in USDC, formatted with 2 decimals
- epochs[].buyer_points_microintegerbuyer points in micro-USDC (integer, 6 decimals)
- epochs[].buyer_points_usdstringbuyer points in USDC, formatted with 2 decimals
- epochs[].burn_antsnumber | nullANTS burned at close (null before the burn)
Cache 5 to 8 min. Sources: epochs = chain.
GET/epochs/{n}One epoch, live economics if current
Same row as /epochs. For the current epoch, economics adds the budget per bucket, the usage and stake inputs and the projected burn as read from the gate now. buyer_ants_per_usd_projected divides the buyer budget by buyer usage so far: our projection, it settles only at epoch close.
curl "https://antseedstats.com/api/v1/epochs/25"
- npath · int · requiredEpoch number
Response fields (37)
- epochintegerNumber
- starts_tsintegerUTC seconds
- ends_tsintegerUTC seconds
- statusstringcomplete, current or future
- emission_antsnumberEmission
- modelstringlegacy or recognized
- seller_points_microintegerseller points in micro-USDC (integer, 6 decimals)
- seller_points_usdstringseller points in USDC, formatted with 2 decimals
- buyer_points_microintegerbuyer points in micro-USDC (integer, 6 decimals)
- buyer_points_usdstringbuyer points in USDC, formatted with 2 decimals
- burn_antsnumber | nullBurned at close
- economics.minted_antsnumberMinted so far this epoch
- economics.allocated_antsnumberBudgets granted
- economics.unallocated_antsnumberLeft over
- economics.buckets[]array
- economics.buckets[].keystringBucket
- economics.buckets[].cap_pctnumberCeiling, % of emission
- economics.buckets[].cap_antsnumberCeiling
- economics.buckets[].allocated_antsnumberGranted
- economics.buckets[].dynamicbooleanScales with usage or stake
- economics.burn.cap_antsnumber30% of emission
- economics.burn.projected_antsnumberIf someone settles
- economics.burn.realized_antsnumberBurned so far
- economics.usage.seller_microintegerseller in micro-USDC (integer, 6 decimals)
- economics.usage.seller_usdstringseller in USDC, formatted with 2 decimals
- economics.usage.buyer_microintegerbuyer in micro-USDC (integer, 6 decimals)
- economics.usage.buyer_usdstringbuyer in USDC, formatted with 2 decimals
- economics.usage.target_microintegertarget in micro-USDC (integer, 6 decimals)
- economics.usage.target_usdstringtarget in USDC, formatted with 2 decimals
- economics.usage.pct_of_targetnumberInput over target, %
- economics.usage.seller_budget_antsnumberSeller usage budget
- economics.usage.buyer_budget_antsnumberBuyer usage budget
- economics.stake.active_antsnumberActive stake
- economics.stake.target_antsnumberTarget
- economics.stake.pct_of_targetnumber%
- economics.buyer_ants_per_usd_projectednumber | nullBuyer budget over buyer usage so far
- economics.degradedbooleanTrue when a chain read failed and these figures are not trustworthy
Cache 45 s. Sources: epoch = chain, economics = chain, buyer_ants_per_usd_projected = antseedstats.
GET/ants/supply$ANTS minted, emitted, burned, staked
The canonical token is 0xa87EE81b2C0Bc659307ca2D9ffdC38514DD85263 (transfers gated, no market price; an unrelated token with the same ticker is indexed elsewhere). emitted_ants counts completed epochs only. The partition is null when any identity it depends on failed to tie out.
curl "https://antseedstats.com/api/v1/ants/supply"
Response fields (19)
- tokenstringCanonical $ANTS address
- transfers_enabledbooleanToken transfers open to everyone
- total_supply_antsnumbertotalSupply, includes burned-to-dead
- max_supply_antsnumberCap
- emitted_antsnumberCompleted-epoch emission
- burned_antsnumber | nullBoth burn sinks
- burned_dead_antsnumberAt 0x...dEaD
- partition.staked_antsnumberIn pools
- partition.stakable_antsnumber | nullStaked plus earned not yet staked
- partition.staked_pctnumber | nullStaked over stakable
- partition.minted_antsnumberMinted
- partition.pre22_antsnumberMinted before epoch 22
- partition.segments[]array
- partition.segments[].keystringSegment
- partition.segments[].antsnumberANTS
- partition.segments[].pctnumber% of total
- burns[]array
- burns[].epochintegerEpoch
- burns[].antsnumberBurned at its close
Cache 5 to 8 min. Sources: supply = chain, partition = chain.
GET/statusIndexer head, lag, subsystems
Never cached. last_indexed_block is the oldest watermark across the ingestion streams, which is also the as_of_block every other endpoint reports.
curl "https://antseedstats.com/api/v1/status"
Response fields (13)
- overallstringok, warn or down
- head_blockinteger | nullBase head, read live
- last_indexed_blockinteger | nullOldest stream watermark
- lag_blocksinteger | nullhead minus last indexed
- streams[]array
- streams[].keystringStream
- streams[].last_blockintegerWatermark
- streams[].lag_blocksinteger | nullLag
- streams[].statusstringok, warn or down
- subsystems[]array
- subsystems[].keystringSubsystem
- subsystems[].statusstringok, warn or down
- subsystems[].detailstringHuman summary
Cache never cached. Sources: status = antseedstats.
Built by @gekko_eth. Missing an endpoint? Ask there. An MCP server for AI clients is next.