{"openapi":"3.1.0","info":{"title":"CryptoCoinStat data API","contact":{"name":"CryptoCoinStat","url":"https://cryptocoinstat.io/en/developers","email":"partners@cryptocoinstat.io"},"version":"1.0.0","description":"What can be checked about crypto tokens: live code, real fees, where CoinGecko and CoinMarketCap disagree, real vs paper market cap, owner powers, unlocks, leverage, how much volume the books carry, and on-chain signals. Every answer carries the time its data was read. A key is required (Authorization: Bearer <key> or X-API-Key). Limits depend on the plan: each answer states them in RateLimit-Policy. Keys are made in the account page: /en/account. Never a buy or sell opinion.\n\nVersioning: v1 only grows. New fields, endpoints, parameters and enum values may appear at any time (tolerate unknown ones); nothing is removed or changes type without a deprecation first, announced in the Deprecation and Sunset headers and in the changelog (https://cryptocoinstat.io/en/developers#changelog), at least six months ahead. Breaking changes go to /api/v2."},"x-changelog":[{"version":"1.0.0","date":"2026-11-05","changes":[{"kind":"added","text":"Tokens: list with sorting, filters, batches by id and paging; one token’s full record; price history; resolving a name, ticker or an id from the old API."},{"kind":"added","text":"Lists: the compact index, most searched, newly listed, most looked at, currency rates; money in any listed currency."},{"kind":"added","text":"Exchanges, categories, market gauges, on-chain signals and the contract check."},{"kind":"added","text":"Watchlist per account."},{"kind":"added","text":"Keys and plan limits with RateLimit headers; ETag and 304; X-Request-Id; errors as RFC 9457 problems."}]}],"servers":[{"url":"https://cryptocoinstat.io/api/v1"}],"security":[{"bearer":[]},{"apiKey":[]}],"tags":[{"name":"Tokens","description":"Every token both market lists carry, one token’s full record and its history."},{"name":"Lists","description":"The compact index, most searched, newly listed, most looked at, and currency rates."},{"name":"Watchlist","description":"The tokens the key’s account watches."},{"name":"Exchanges","description":"Exchanges summed across the top 1000: reported volume, what their books carry, trade tests."},{"name":"Categories","description":"Sectors, chains, venues and backers."},{"name":"Market","description":"Market-wide gauges."},{"name":"Signals","description":"On-chain changes, sized against the token’s market."},{"name":"Contracts","description":"Whether an address is a token’s own contract or a copy."}],"paths":{"/tokens":{"get":{"operationId":"listTokens","tags":["Tokens"],"summary":"List tokens","description":"Every token CoinGecko and CoinMarketCap list, in a published order, with what we could check about each. Sort by rank, market cap, volume or price change (sort=change24h&dir=desc for gainers, dir=asc for losers); filter by a flag, a category or a search; page with offset and limit.","parameters":[{"name":"sort","in":"query","required":false,"description":"Order by: rank: market cap rank; name; price; mcap: market cap; code: commits by people over 90 days; fees: fees over 30 days; gap: how far CoinGecko and CoinMarketCap differ on market cap; volume: 24h volume; change1h, change24h, change7d: price change (desc for gainers, asc for losers)","schema":{"default":"rank","description":"Order by: rank: market cap rank; name; price; mcap: market cap; code: commits by people over 90 days; fees: fees over 30 days; gap: how far CoinGecko and CoinMarketCap differ on market cap; volume: 24h volume; change1h, change24h, change7d: price change (desc for gainers, asc for losers)","type":"string","enum":["rank","name","price","mcap","code","fees","gap","volume","change1h","change24h","change7d"]}},{"name":"dir","in":"query","required":false,"description":"asc: smallest first (rank 1 first); desc: largest first. Tokens without the value come last either way","schema":{"default":"asc","description":"asc: smallest first (rank 1 first); desc: largest first. Tokens without the value come last either way","type":"string","enum":["asc","desc"]}},{"name":"q","in":"query","required":false,"description":"Name or ticker contains","schema":{"default":"","description":"Name or ticker contains","type":"string","maxLength":80}},{"name":"flag","in":"query","required":false,"description":"Only tokens carrying this signal. all: every token; code: commits by people in its public code over the last 90 days; fees: users paid fees over the last 30 days (DefiLlama); gaps: CoinGecko and CoinMarketCap differ on market cap by 5% or more; thin: real cap under half the market cap: order books too shallow for its size; unbacked: under half the volume exchanges report is carried by their order books (on $1M+ a day); unlocks: the next 30 days of vesting are worth more than a day of trading; heated: open interest at 30%+ of market cap, or funding beyond ±0.05% per 8h; mint: its contract’s owner can mint; whales: ten wallets hold half the supply; fakes: copies under its ticker whose owner can take or freeze tokens","schema":{"default":"all","description":"Only tokens carrying this signal. all: every token; code: commits by people in its public code over the last 90 days; fees: users paid fees over the last 30 days (DefiLlama); gaps: CoinGecko and CoinMarketCap differ on market cap by 5% or more; thin: real cap under half the market cap: order books too shallow for its size; unbacked: under half the volume exchanges report is carried by their order books (on $1M+ a day); unlocks: the next 30 days of vesting are worth more than a day of trading; heated: open interest at 30%+ of market cap, or funding beyond ±0.05% per 8h; mint: its contract’s owner can mint; whales: ten wallets hold half the supply; fakes: copies under its ticker whose owner can take or freeze tokens","type":"string","enum":["all","code","fees","gaps","thin","unbacked","unlocks","heated","mint","whales","fakes"]}},{"name":"category","in":"query","required":false,"description":"A category slug from /categories, e.g. defi, nft, stablecoins","schema":{"description":"A category slug from /categories, e.g. defi, nft, stablecoins","type":"string","maxLength":60}},{"name":"ids","in":"query","required":false,"description":"Up to 100 token ids, comma separated: answers those tokens in that order, ignoring sort, filters and paging","schema":{"description":"Up to 100 token ids, comma separated: answers those tokens in that order, ignoring sort, filters and paging","type":"string","maxLength":4000}},{"name":"currency","in":"query","required":false,"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","schema":{"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","type":"string","pattern":"^[A-Za-z]{2,10}$"}},{"name":"offset","in":"query","required":false,"description":"How many matching items to skip; the next page’s path is in meta.page.next","schema":{"default":0,"description":"How many matching items to skip; the next page’s path is in meta.page.next","type":"integer","minimum":0,"maximum":1000000}},{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 100","schema":{"default":50,"description":"How many to return, 1 to 100","type":"integer","minimum":1,"maximum":100}},{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTokensResponse"},"example":{"data":[{"id":"bitcoin","symbol":"BTC","name":"Bitcoin","rank":1,"image":"https://coin-images.coingecko.com/coins/images/1/large/bitcoin.png?1696501400","price":77583,"marketCap":1559825896136,"volume24h":28023402167,"circulatingSupply":20105365,"totalSupply":null,"change":null,"sourcesGap":1.1080026755834695,"code":"active","fees30d":6220376,"flags":["code","fees"],"url":"https://cryptocoinstat.io/en/token/bitcoin"},{"id":"ethereum","symbol":"ETH","name":"Ethereum","rank":2,"image":"https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628","price":2294.47,"marketCap":280352274864,"volume24h":8940857175,"circulatingSupply":122186161.86556138,"totalSupply":null,"change":null,"sourcesGap":1.0508810905838208,"code":"active","fees30d":21802051,"flags":["code","fees"],"url":"https://cryptocoinstat.io/en/token/ethereum"}],"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"},"page":{"offset":0,"limit":5,"total":21510,"next":"/api/v1/tokens?limit=5&sort=mcap&dir=desc&offset=5"}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/tokens/index":{"get":{"operationId":"tokenIndex","tags":["Lists"],"summary":"Every token, compact","description":"Id, ticker, name, rank and logo of every token in one answer, by rank: for search and autocomplete.","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenIndexResponse"},"example":{"data":[{"id":"bitcoin","symbol":"BTC","name":"Bitcoin","rank":1,"image":"https://coin-images.coingecko.com/coins/images/1/large/bitcoin.png?1696501400"},{"id":"ethereum","symbol":"ETH","name":"Ethereum","rank":2,"image":"https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628"}],"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/tokens/resolve":{"get":{"operationId":"resolveToken","tags":["Tokens"],"summary":"Find the token a name, ticker or old id stands for","description":"Accepts our id, an id from the old cryptocoinstat.io API (xrp, polygon…), a ticker or a name; answers the token and how it was matched.","parameters":[{"name":"q","in":"query","required":true,"description":"Our id, an old cryptocoinstat.io id, a ticker or a name","schema":{"type":"string","minLength":1,"maxLength":120,"description":"Our id, an old cryptocoinstat.io id, a ticker or a name"}},{"name":"currency","in":"query","required":false,"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","schema":{"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","type":"string","pattern":"^[A-Za-z]{2,10}$"}},{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveTokenResponse"},"example":{"data":{"query":"xrp","via":"legacy","token":{"id":"ripple","symbol":"XRP","name":"XRP","rank":5,"image":"https://coin-images.coingecko.com/coins/images/44/large/xrp-symbol-white-128.png?1696501442","price":1.28,"marketCap":81041897029,"volume24h":1697110982,"circulatingSupply":63351197653,"totalSupply":null,"change":null,"sourcesGap":1.0942746557569927,"code":"active","fees30d":null,"flags":["code"],"url":"https://cryptocoinstat.io/en/token/ripple"}},"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/tokens/trending":{"get":{"operationId":"trendingTokens","tags":["Lists"],"summary":"Most searched","description":"The tokens most searched on CoinGecko over the last day, most first; read hourly.","parameters":[{"name":"currency","in":"query","required":false,"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","schema":{"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","type":"string","pattern":"^[A-Za-z]{2,10}$"}},{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendingTokensResponse"},"example":{"data":[],"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/tokens/new":{"get":{"operationId":"newTokens","tags":["Lists"],"summary":"Newly listed","description":"Tokens we saw listed for the first time, newest first. Kept since 2026-11; older tokens aren’t on it.","parameters":[{"name":"currency","in":"query","required":false,"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","schema":{"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","type":"string","pattern":"^[A-Za-z]{2,10}$"}},{"name":"offset","in":"query","required":false,"description":"How many matching items to skip; the next page’s path is in meta.page.next","schema":{"default":0,"description":"How many matching items to skip; the next page’s path is in meta.page.next","type":"integer","minimum":0,"maximum":1000000}},{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 100","schema":{"default":50,"description":"How many to return, 1 to 100","type":"integer","minimum":1,"maximum":100}},{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewTokensResponse"},"example":{"data":[],"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"},"page":{"offset":0,"limit":50,"total":0,"next":null}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/tokens/popular":{"get":{"operationId":"popularTokens","tags":["Lists"],"summary":"Most looked at","description":"The tokens most looked at on cryptocoinstat.io over the last 7 days: page views by people and API lookups. Counted per day, with no visitor data.","parameters":[{"name":"currency","in":"query","required":false,"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","schema":{"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","type":"string","pattern":"^[A-Za-z]{2,10}$"}},{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PopularTokensResponse"},"example":{"data":[],"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/tokens/{id}":{"get":{"operationId":"getToken","tags":["Tokens"],"summary":"One token, everything we read","description":"Market figures from both lists and where they disagree, the day’s range, all-time high and low, max supply, ICO return, price ranges over 7, 30, 90 days and 52 weeks, links (sites, explorers, forums, chats, code, social), the project’s code and usage, and for the top 1000 what the chain and futures say: supply, owner powers, holders, unlocks, real vs paper cap, how much volume the books carry, leverage, supply on each chain, copies, and its latest signals.","parameters":[{"name":"id","in":"path","required":true,"description":"Token id, e.g. bitcoin","schema":{"type":"string","minLength":1,"maxLength":120,"description":"Token id, e.g. bitcoin"}},{"name":"currency","in":"query","required":false,"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","schema":{"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","type":"string","pattern":"^[A-Za-z]{2,10}$"}},{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTokenResponse"},"example":{"data":{"id":"bitcoin","symbol":"BTC","name":"Bitcoin","rank":1,"image":"https://coin-images.coingecko.com/coins/images/1/large/bitcoin.png?1696501400","price":77583,"marketCap":1559825896136,"volume24h":28023402167,"circulatingSupply":20105365,"totalSupply":null,"change":null,"sourcesGap":1.1080026755834695,"code":"active","fees30d":6220376,"flags":["code","fees"],"url":"https://cryptocoinstat.io/en/token/bitcoin","sources":{"coingecko":{"price":77583,"marketCap":1559825896136,"supply":20105365,"totalSupply":null,"volume24h":28023402167,"rank":1,"url":"https://www.coingecko.com/en/coins/bitcoin","readAt":"2026-11-03T17:17:57.000Z"},"coinmarketcap":{"price":77584.39828194214,"marketCap":1559862645763.8196,"supply":20105365,"totalSupply":null,"volume24h":25291818137.752235,"rank":1,"url":"https://coinmarketcap.com/currencies/bitcoin/","readAt":"2026-11-03T17:19:48.025Z"}},"gaps":{"price":1.00001802304554,"marketCap":1.0000235600831546,"supply":1,"volume24h":1.1080026755834695},"categories":["layer-1","store-of-value"],"project":{"kind":"project","homepage":"http://www.bitcoin.org","code":[{"owner":"bitcoin","foundVia":["CoinGecko"],"repos":4,"liveRepos":2,"commits90d":200,"people90d":32,"newestPush":"2026-11-03","lastRelease":"2026-10-28"}],"usage":{"category":"Chain","fees30d":6220376,"revenue30d":null,"tvl":4126252750.0340185},"readAt":"2026-11-03"},"onchain":null,"signals":[],"market":null,"links":null,"firstSeenAt":null},"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/tokens/{id}/history":{"get":{"operationId":"getTokenHistory","tags":["Tokens"],"summary":"Price over a period, fees and weekly commits","description":"Price over the last `days`: hourly for up to 7 days (top 1000), daily up to a year (top 1000 and every token we read in full). Daily fees from DefiLlama and commits by week.","parameters":[{"name":"id","in":"path","required":true,"description":"Token id, e.g. bitcoin","schema":{"type":"string","minLength":1,"maxLength":120,"description":"Token id, e.g. bitcoin"}},{"name":"days","in":"query","required":false,"description":"How many days back, 1 to 365: hourly points up to 7, daily beyond","schema":{"default":30,"description":"How many days back, 1 to 365: hourly points up to 7, daily beyond","type":"integer","minimum":1,"maximum":365}},{"name":"currency","in":"query","required":false,"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","schema":{"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","type":"string","pattern":"^[A-Za-z]{2,10}$"}},{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTokenHistoryResponse"},"example":{"data":{"id":"uniswap","days":30,"interval":"day","price":[{"at":"2026-10-04T18:21:40.000Z","value":9.000242368987045},{"at":"2026-10-05T18:21:50.000Z","value":9.047772553246856}],"fees":[{"at":"2026-10-05T00:00:00.000Z","value":3634818},{"at":"2026-10-06T00:00:00.000Z","value":2948058}],"commits":{"weekOf":"2025-11-09","weekly":[4,0],"owner":"Uniswap"}},"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/rates":{"get":{"operationId":"listRates","tags":["Lists"],"summary":"Currency rates","description":"Fiat, crypto and commodity rates against the US dollar, from CoinGecko every 3 hours. Any code here works as ?currency= on token answers.","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRatesResponse"},"example":{"data":[],"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/exchanges":{"get":{"operationId":"listExchanges","tags":["Exchanges"],"summary":"Exchanges by reported volume","description":"Every exchange seen across the top 1000’s markets: what it reports, what its order books could carry, on how many tokens its volume runs past its book, and how its trades tested.","parameters":[{"name":"offset","in":"query","required":false,"description":"How many matching items to skip; the next page’s path is in meta.page.next","schema":{"default":0,"description":"How many matching items to skip; the next page’s path is in meta.page.next","type":"integer","minimum":0,"maximum":1000000}},{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 100","schema":{"default":50,"description":"How many to return, 1 to 100","type":"integer","minimum":1,"maximum":100}},{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListExchangesResponse"},"example":{"data":[],"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"},"page":{"offset":0,"limit":3,"total":0,"next":null}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/exchanges/{slug}":{"get":{"operationId":"getExchange","tags":["Exchanges"],"summary":"One exchange and its largest markets","description":"The summary plus its 50 largest markets, each with depth, turnover against the norm and the trade test.","parameters":[{"name":"slug","in":"path","required":true,"description":"The slug a list returned, e.g. binance or defi","schema":{"type":"string","minLength":1,"maxLength":80,"description":"The slug a list returned, e.g. binance or defi"}},{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetExchangeResponse"}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/categories":{"get":{"operationId":"listCategories","tags":["Categories"],"summary":"Categories","description":"Sectors, chains, venues and backers, with their size. Their tokens: /tokens?category={slug}.","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCategoriesResponse"},"example":{"data":[{"slug":"layer-1","name":{"en":"Layer 1","ru":"Layer 1"},"group":"sector","tokens":165,"marketCap":2133625481070.2336,"read":57,"liveCode":54,"fees30d":179857696.37,"sourcesDisagree":23},{"slug":"mineable","name":{"en":"Mineable (PoW)","ru":"Майнинг (PoW)"},"group":"sector","tokens":225,"marketCap":1620197512179.443,"read":16,"liveCode":16,"fees30d":6475425.05,"sourcesDisagree":13}],"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/categories/{slug}":{"get":{"operationId":"getCategory","tags":["Categories"],"summary":"One category","description":"Its size, how much of it we read, live code, fees and where the lists disagree.","parameters":[{"name":"slug","in":"path","required":true,"description":"The slug a list returned, e.g. binance or defi","schema":{"type":"string","minLength":1,"maxLength":80,"description":"The slug a list returned, e.g. binance or defi"}},{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCategoryResponse"},"example":{"data":{"slug":"layer-1","name":{"en":"Layer 1","ru":"Layer 1"},"group":"sector","tokens":165,"marketCap":2133625481070.2336,"read":57,"liveCode":54,"fees30d":179857696.37,"sourcesDisagree":23},"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/market":{"get":{"operationId":"getMarket","tags":["Market"],"summary":"Market gauges","description":"Risk appetite and its parts, altcoin season, leverage, real volume, liquidations, unlocks ahead and search interest, with a month of daily history.","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMarketResponse"}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/signals":{"get":{"operationId":"listSignals","tags":["Signals"],"summary":"Signals, newest first","description":"The last month of on-chain signals for the top 1000, each sized against depth and a day of trading.","parameters":[{"name":"kind","in":"query","required":false,"description":"Only this kind: unlock, mint, bridge, admin, whale, drain, fake (see the Signal schema)","schema":{"description":"Only this kind: unlock, mint, bridge, admin, whale, drain, fake (see the Signal schema)","type":"string","enum":["unlock","mint","bridge","admin","whale","drain","fake"]}},{"name":"token","in":"query","required":false,"description":"Only this token’s signals (token id)","schema":{"description":"Only this token’s signals (token id)","type":"string","maxLength":120}},{"name":"offset","in":"query","required":false,"description":"How many matching items to skip; the next page’s path is in meta.page.next","schema":{"default":0,"description":"How many matching items to skip; the next page’s path is in meta.page.next","type":"integer","minimum":0,"maximum":1000000}},{"name":"limit","in":"query","required":false,"description":"How many to return, 1 to 100","schema":{"default":50,"description":"How many to return, 1 to 100","type":"integer","minimum":1,"maximum":100}},{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSignalsResponse"},"example":{"data":[],"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"},"page":{"offset":0,"limit":3,"total":0,"next":null}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/contracts/{address}":{"get":{"operationId":"checkContract","tags":["Contracts"],"summary":"Is this address the real token?","description":"A token’s own contract, a listed deployment or wrapper, or a copy under its ticker that no list names.","parameters":[{"name":"address","in":"path","required":true,"description":"EVM 0x… or Solana address","schema":{"type":"string","minLength":20,"maxLength":80,"description":"EVM 0x… or Solana address"}},{"name":"If-None-Match","in":"header","required":false,"description":"The ETag of a copy you hold; an unchanged answer comes back as 304 with no body","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckContractResponse"},"example":{"data":{"address":"0x1f9840a85d5af5bf1d1762f925bdaddc4201f984","found":false,"kind":null,"verdict":null,"chain":null,"token":null,"home":null},"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"304":{"description":"Unchanged since the ETag sent in If-None-Match: reuse the copy you have","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}},"ETag":{"description":"Changes with the snapshot; send it back in If-None-Match","schema":{"type":"string"}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/watchlist":{"get":{"operationId":"getWatchlist","tags":["Watchlist"],"summary":"Your watchlist","description":"The tokens the key’s account watches, newest first, with their list rows.","parameters":[{"name":"currency","in":"query","required":false,"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","schema":{"description":"Currency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates","type":"string","pattern":"^[A-Za-z]{2,10}$"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWatchlistResponse"},"example":{"data":[{"token":{"id":"ethereum","symbol":"ETH","name":"Ethereum","rank":2,"image":"https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628","price":2294.47,"marketCap":280352274864,"volume24h":8940857175,"circulatingSupply":122186161.86556138,"totalSupply":null,"change":null,"sourcesGap":1.0508810905838208,"code":"active","fees30d":21802051,"flags":["code","fees"],"url":"https://cryptocoinstat.io/en/token/ethereum"},"addedAt":"2026-11-05T00:00:00.000Z"}],"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/watchlist/{id}":{"put":{"operationId":"watchToken","tags":["Watchlist"],"summary":"Watch a token","description":"Adds the token to the key’s account’s watchlist; adding it again changes nothing.","parameters":[{"name":"id","in":"path","required":true,"description":"Token id","schema":{"type":"string","minLength":1,"maxLength":120,"description":"Token id"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchTokenResponse"},"example":{"data":{"id":"bitcoin","watching":true},"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"operationId":"unwatchToken","tags":["Watchlist"],"summary":"Stop watching a token","description":"Removes the token from the key’s account’s watchlist.","parameters":[{"name":"id","in":"path","required":true,"description":"Token id","schema":{"type":"string","minLength":1,"maxLength":120,"description":"Token id"}}],"responses":{"200":{"description":"OK","headers":{"RateLimit":{"description":"What is left in the tighter window: \"minute\";r=<left>;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}},"X-Request-Id":{"description":"This call’s id, also in our logs: quote it when reporting a problem","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnwatchTokenResponse"},"example":{"data":{"id":"bitcoin","watching":false},"meta":{"publishedAt":"2026-11-04T14:17:36.664Z","readAt":{"markets":"2026-11-03T17:37:09Z","dossiers":"2026-11-03","series":"2026-11-04T12:22:29.526Z"}}}}}},"400":{"description":"Bad request: a parameter is missing or out of range; invalidParams lists every one","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No key, or a key that isn’t valid","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Over the limit; see Retry-After and RateLimit","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}},"Retry-After":{"description":"Seconds until the window that ran out resets","schema":{"type":"string"}},"RateLimit":{"description":"What is left: \"minute\";r=0;t=<seconds to reset>","schema":{"type":"string"}},"RateLimit-Policy":{"description":"The key’s limits: \"minute\";q=<n>;w=60, \"day\";q=<n>;w=86400","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Our fault; it was logged","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"A store the answer needs is down; try again shortly","headers":{"X-Request-Id":{"description":"This call’s id, also in the problem’s requestId","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"schemas":{"PriceChange":{"type":"object","properties":{"h1":{"description":"Price change over the last hour, in percent (5 = +5%); null when the lists don’t state it","type":["number","null"]},"h24":{"description":"Price change over the last 24 hours, in percent","type":["number","null"]},"d7":{"description":"Price change over the last 7 days, in percent","type":["number","null"]}},"required":["h1","h24","d7"],"description":"Price change in percent over the last hour, day and week, from CoinGecko, else CoinMarketCap."},"Page":{"type":"object","properties":{"offset":{"type":"integer","description":"How many matching items were skipped"},"limit":{"type":"integer","description":"How many were asked for"},"total":{"type":"integer","description":"How many match in all"},"next":{"description":"The path of the next page, ready to call; null on the last page","type":["string","null"]}},"required":["offset","limit","total","next"],"description":"Where a list stands: offset and limit asked, how many match in all, and the path of the next page."},"ReadTimes":{"type":"object","properties":{"markets":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When CoinGecko and CoinMarketCap were last read in full"},"dossiers":{"anyOf":[{"type":"string","format":"date","example":"2026-11-05"},{"type":"null"}],"description":"The newest day any project’s code and usage were read; null before any"},"series":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"When the newest price, fee or commit series was written; null before any"}},"required":["markets","dossiers","series"],"description":"When each part of the snapshot was last read from its sources."},"Meta":{"type":"object","properties":{"publishedAt":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When the snapshot answering was published"},"readAt":{"$ref":"#/components/schemas/ReadTimes"},"page":{"$ref":"#/components/schemas/Page"},"currency":{"description":"The currency money figures are in, when not USD; on-chain and exchange figures stay USD","type":"string"}},"required":["publishedAt","readAt"],"description":"When the answering snapshot was published and when each part of it was read; paging for lists."},"InvalidParam":{"type":"object","properties":{"in":{"type":"string","enum":["path","query","header","body"],"description":"Where the value was. path: a path parameter; query: a query parameter; header: a request header; body: a field of the JSON body"},"name":{"type":"string","description":"Its name, dotted for a nested field; empty for the whole value"},"reason":{"type":"string","description":"What is wrong with it"}},"required":["in","name","reason"],"description":"One part of the request that failed validation."},"Problem":{"type":"object","properties":{"type":{"type":"string","description":"A URI naming the problem type: the developers page, one anchor per code"},"title":{"type":"string","description":"A short summary of the problem type, the same for every occurrence"},"status":{"type":"integer","description":"The HTTP status, repeated"},"detail":{"type":"string","description":"This occurrence, in a sentence safe to show a person"},"code":{"type":"string","enum":["not_found","bad_request","unauthorized","gone","rate_limited","unavailable","internal"],"description":"What went wrong, to branch on. not_found: no such endpoint, token, exchange or category (404); bad_request: a parameter or body is missing, malformed or out of range (400); see invalidParams; unauthorized: no key, a key that isn’t valid or was revoked, or not an admin’s (401); gone: a path of the retired old API (410); rate_limited: over the key’s per-minute or per-day limit; see Retry-After (429); unavailable: a store the answer needs is down; try again later (503); internal: our fault; it was logged under requestId (500)"},"instance":{"type":"string","description":"The path that was called"},"requestId":{"type":"string","description":"This call’s id, as in X-Request-Id: quote it when reporting a problem"},"invalidParams":{"description":"For bad_request: every part that failed, not only the first","type":"array","items":{"$ref":"#/components/schemas/InvalidParam"}}},"required":["type","title","status","detail","code"],"description":"Every error, as an RFC 9457 problem (application/problem+json) with our code as an extension."},"Onchain":{"type":"object","properties":{"contract":{"anyOf":[{"$ref":"#/components/schemas/ContractInfo"},{"type":"null"}],"description":"Its home contract; null for a coin on a chain of its own"},"supply":{"description":"Total supply on the chain against the lists","$ref":"#/components/schemas/SupplyCheck"},"owner":{"anyOf":[{"$ref":"#/components/schemas/OwnerPowers"},{"type":"null"}],"description":"Owner powers over the contract; null when not read"},"holders":{"anyOf":[{"$ref":"#/components/schemas/Holders"},{"type":"null"}],"description":"How it is held; null when not read"},"unlocks":{"anyOf":[{"$ref":"#/components/schemas/Unlocks"},{"type":"null"}],"description":"Vesting ahead; null without a schedule"},"liquidity":{"description":"Paper, market and real cap, and the depth behind them","$ref":"#/components/schemas/Liquidity"},"volume":{"anyOf":[{"$ref":"#/components/schemas/VolumeCheck"},{"type":"null"}],"description":"How much reported volume the books could carry; null for stablecoins, wrappers and tokens without exchange books"},"leverage":{"anyOf":[{"$ref":"#/components/schemas/Leverage"},{"type":"null"}],"description":"Perpetual futures on it; null when none trade"},"chains":{"anyOf":[{"$ref":"#/components/schemas/ChainsSupply"},{"type":"null"}],"description":"Supply on each chain; null for single-chain tokens"},"copies":{"anyOf":[{"$ref":"#/components/schemas/Copies"},{"type":"null"}],"description":"Deployments and copies under its ticker; null when not read"}},"required":["contract","supply","owner","holders","unlocks","liquidity","volume","leverage","chains","copies"],"description":"What the chain and the futures markets say, for the top 1000. Money here is US dollars."},"ContractInfo":{"type":"object","properties":{"chain":{"type":"string","enum":["ethereum","solana","bsc","base","arbitrum","polygon","optimism","avalanche"],"description":"The chain of its home contract: one of ethereum, solana, bsc, base, arbitrum, polygon, optimism, avalanche"},"address":{"type":"string","description":"Its home contract address"},"deployments":{"type":"integer","description":"Chains it is deployed on"},"confirmed":{"type":"boolean","description":"CoinMarketCap names this contract as the token’s own"}},"required":["chain","address","deployments","confirmed"],"description":"The token’s home contract."},"SupplyCheck":{"type":"object","properties":{"onchain":{"description":"Total supply read from the home contract, less burn addresses, in tokens; null when not read","type":["number","null"]},"coingecko":{"description":"Total supply CoinGecko states, in tokens; null when not read","type":["number","null"]},"coinmarketcap":{"description":"Total supply CoinMarketCap states, in tokens; null when not read","type":["number","null"]},"verdict":{"type":"string","enum":["agree","coingecko","coinmarketcap","neither","unknown","multichain","unconfirmed"],"description":"Which list the chain agrees with on total supply. agree: the chain agrees with both lists; coingecko: the chain agrees with CoinGecko only; coinmarketcap: the chain agrees with CoinMarketCap only; neither: the chain agrees with neither; unknown: not enough read to say; multichain: deployed on several chains, so one contract isn’t the supply; unconfirmed: the contract isn’t confirmed as the token’s own"},"readAt":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"When the chain was read; null when never"}},"required":["onchain","coingecko","coinmarketcap","verdict","readAt"],"description":"Total supply read on the chain against what the lists state."},"OwnerPowers":{"type":"object","properties":{"powers":{"type":"array","items":{"type":"string","enum":["honeypot","balanceEdit","hiddenOwner","reclaimOwner","mintable","pausable","freezable","blacklist","upgradeable","tax","closedSource"]},"description":"What the contract lets its owner do, from GoPlus. honeypot: holders can buy but not sell; balanceEdit: the owner can change balances; hiddenOwner: an owner the contract hides; reclaimOwner: ownership can be taken back after renouncing; mintable: the owner can mint; pausable: the owner can pause transfers; freezable: the owner can freeze an address; blacklist: the owner can block addresses; upgradeable: the code can be replaced; tax: transfers pay a tax; closedSource: the code isn’t published"},"risk":{"type":"string","enum":["none","some","severe"],"description":"How much the powers can hurt holders. none: no owner powers; some: powers that don’t take holders’ tokens; severe: honeypot, balance edits, hidden or reclaimable owner"},"renounced":{"type":"boolean","description":"The owner renounced the contract"},"readAt":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"When owner powers was read; null when never"}},"required":["powers","risk","renounced","readAt"],"description":"What the contract lets its owner do."},"Holders":{"type":"object","properties":{"count":{"description":"Addresses holding it; null when not read","type":["number","null"]},"top10Share":{"description":"Supply on the ten largest addresses, as a share from 0 to 1; null when not read","type":["number","null"]},"top10WalletsShare":{"description":"The same counting wallets only: no contracts, locks, burns or exchanges, as a share from 0 to 1; null when not read","type":["number","null"]},"readAt":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"When holders was read; null when never"}},"required":["count","top10Share","top10WalletsShare","readAt"],"description":"How the token is held."},"Unlocks":{"type":"object","properties":{"next30dTokens":{"type":"number","description":"Tokens unlocking over the next 30 days, cliffs and linear vesting together"},"next30dUsd":{"description":"Those tokens at today’s price, in US dollars; null when not read","type":["number","null"]},"insiders30dTokens":{"type":"number","description":"Of the cliffs among them, tokens going to team and investors"},"nextCliffAt":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"The next cliff; null when none is scheduled"},"nextCliffTokens":{"description":"Tokens at the next cliff, in tokens; null when not read","type":["number","null"]},"daysOfVolume":{"description":"The next 30 days of unlocks in days of today’s trading volume","type":["number","null"]},"readAt":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"When the vesting schedule (DefiLlama) was read; null when never"}},"required":["next30dTokens","next30dUsd","insiders30dTokens","nextCliffAt","nextCliffTokens","daysOfVolume","readAt"],"description":"Vesting due over the next 30 days."},"Liquidity":{"type":"object","properties":{"paperCap":{"description":"Price × total supply, in US dollars; null when not read","type":["number","null"]},"marketCap":{"description":"Price × circulating supply, in US dollars; null when not read","type":["number","null"]},"realCap":{"description":"Market cap discounted by how thin its order books are for its size, in US dollars; null when not read","type":["number","null"]},"depth2pct":{"description":"What can be sold before the price falls 2%, across exchanges and honest DEX pools, in US dollars; null when not read","type":["number","null"]},"exitDays":{"description":"Days of selling at that depth a day to sell the whole market cap","type":["number","null"]},"dexLiquidity":{"description":"Liquidity in DEX pools quoted against a real asset, in US dollars; null when not read","type":["number","null"]},"readAt":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"When order-book depth was read; null when never"}},"required":["paperCap","marketCap","realCap","depth2pct","exitDays","dexLiquidity","readAt"],"description":"Paper, market and real cap, and the order-book depth behind them. US dollars."},"UnbackedVenue":{"type":"object","properties":{"exchange":{"type":"string","description":"Exchange name"},"volume":{"type":"number","description":"Its reported 24h volume for the token, in US dollars"},"turnoverTimesNorm":{"type":"number","description":"Its volume ÷ its 2% depth, as a multiple of the norm on reputable exchanges"}},"required":["exchange","volume","turnoverTimesNorm"],"description":"An exchange whose reported volume its book couldn’t carry."},"VolumeCheck":{"type":"object","properties":{"claimed":{"type":"number","description":"24h volume reported by exchanges that publish a book, in US dollars"},"backed":{"type":"number","description":"The part their books could carry, in US dollars"},"backedShare":{"type":"number","description":"backed ÷ claimed, from 0 to 1"},"unchecked":{"type":"number","description":"Volume on exchanges with no book to check against, in US dollars"},"unbacked":{"type":"array","items":{"$ref":"#/components/schemas/UnbackedVenue"},"description":"Exchanges whose volume runs past ten times what their book could carry, largest first"}},"required":["claimed","backed","backedShare","unchecked","unbacked"],"description":"How much of the volume exchanges report their books could carry. US dollars."},"Liquidations":{"type":"object","properties":{"long":{"type":"number","description":"Longs closed by force over 24 hours, in US dollars"},"short":{"type":"number","description":"Shorts closed by force over 24 hours, in US dollars"}},"required":["long","short"],"description":"Positions closed by force over 24 hours. US dollars; a lower bound."},"Leverage":{"type":"object","properties":{"openInterest":{"type":"number","description":"Open interest in perpetual futures across the venues read, in US dollars"},"perpVolume24h":{"type":"number","description":"Perpetual futures volume over 24 hours, in US dollars"},"funding8h":{"description":"Funding per 8 hours weighted by open interest, as a fraction (0.0001 = 0.01%, longs pay shorts when positive)","type":["number","null"]},"oiToCap":{"description":"Open interest ÷ market cap, as a share from 0 to 1; null when not read","type":["number","null"]},"oiToDepthDays":{"description":"Days of 2% sell depth it would take to absorb the open interest","type":["number","null"]},"perpToSpot":{"description":"Futures volume ÷ the lists’ 24h (mostly spot) volume","type":["number","null"]},"heated":{"type":"boolean","description":"Open interest at 30%+ of market cap or funding beyond ±0.05% per 8h"},"venues":{"type":"array","items":{"type":"string","enum":["binance","bybit","okx","hyperliquid"]},"description":"Futures venues it trades on: binance, bybit, okx, hyperliquid"},"liquidations24h":{"anyOf":[{"$ref":"#/components/schemas/Liquidations"},{"type":"null"}],"description":"A lower bound from the venues read; null when none were seen"},"readAt":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"When futures was read; null when never"}},"required":["openInterest","perpVolume24h","funding8h","oiToCap","oiToDepthDays","perpToSpot","heated","venues","liquidations24h","readAt"],"description":"Perpetual futures on the token. US dollars."},"ChainSupply":{"type":"object","properties":{"chain":{"type":"string","enum":["ethereum","solana","bsc","base","arbitrum","polygon","optimism","avalanche"],"description":"The chain: one of ethereum, solana, bsc, base, arbitrum, polygon, optimism, avalanche"},"address":{"type":"string","description":"The token’s contract there"},"supply":{"description":"Its supply on this chain, in tokens; null when not read","type":["number","null"]},"kind":{"type":"string","enum":["home","locked","native","unread"],"description":"What this deployment is. home: the home chain; locked: a copy backed by tokens a bridge locks at home; native: a copy minted on its own chain; unread: couldn’t be read"},"backing":{"description":"For a locked copy: what its bridge holds at home ÷ its supply (1 = fully backed), as a share from 0 to 1; null when not read","type":["number","null"]},"share":{"description":"Its part of the cross-chain total, as a share from 0 to 1; null when not read","type":["number","null"]}},"required":["chain","address","supply","kind","backing","share"],"description":"The token on one chain."},"ChainsSupply":{"type":"object","properties":{"rows":{"type":"array","items":{"$ref":"#/components/schemas/ChainSupply"},"description":"One row per chain it is deployed on"},"global":{"description":"Across chains, less what bridges hold locked; null when the home chain is in doubt, in tokens; null when not read","type":["number","null"]},"readAt":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"When supply by chain was read; null when never"}},"required":["rows","global","readAt"],"description":"The token’s supply across the chains it is deployed on."},"Copies":{"type":"object","properties":{"official":{"type":"integer","description":"Deployments the lists name"},"unknown":{"type":"integer","description":"Copies under its ticker that no list names"},"dangerous":{"type":"integer","description":"Of those, copies whose owner can take or freeze tokens"},"readAt":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"When copies was read; null when never"}},"required":["official","unknown","dangerous","readAt"],"description":"Deployments the lists name and copies under its ticker."},"Size":{"type":"object","properties":{"usd":{"type":"number","description":"The sum the change moves, in US dollars"},"depthDays":{"description":"Days of 2% sell depth it takes to absorb; null without depth","type":["number","null"]},"volumeShare":{"description":"The sum as a share of a day of reported trading (1 = a full day); null without volume","type":["number","null"]}},"required":["usd","depthDays","volumeShare"],"description":"How large a change is against the market for the token."},"OwnerHandover":{"type":"object","properties":{"from":{"type":"string","description":"Previous owner"},"to":{"type":"string","description":"New owner"}},"required":["from","to"],"description":"A contract changing hands."},"UnlockSignal":{"type":"object","properties":{"key":{"type":"string","description":"Stable id of this signal: the same change is never announced twice"},"token":{"type":"string","description":"Token id"},"at":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When the reading that showed the change was taken (an unlock: when first seen)"},"size":{"anyOf":[{"$ref":"#/components/schemas/Size"},{"type":"null"}],"description":"Its size against depth and volume; null when the token has no price"},"kind":{"type":"string","const":"unlock","description":"unlock: a cliff unlock within a week"},"date":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When the cliff unlocks"},"tokens":{"type":"number","description":"Tokens it releases"},"insiders":{"type":"boolean","description":"It goes to team and investors"}},"required":["key","token","at","size","kind","date","tokens","insiders"],"description":"A signal of kind unlock."},"AdminSignal":{"type":"object","properties":{"key":{"type":"string","description":"Stable id of this signal: the same change is never announced twice"},"token":{"type":"string","description":"Token id"},"at":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When the reading that showed the change was taken (an unlock: when first seen)"},"size":{"anyOf":[{"$ref":"#/components/schemas/Size"},{"type":"null"}],"description":"Its size against depth and volume; null when the token has no price"},"kind":{"type":"string","const":"admin","description":"admin: the owner gained powers or handed the contract on"},"added":{"type":"array","items":{"type":"string","enum":["honeypot","balanceEdit","hiddenOwner","reclaimOwner","mintable","pausable","freezable","blacklist","upgradeable","tax","closedSource"]},"description":"Powers gained: honeypot, balanceEdit, hiddenOwner, reclaimOwner, mintable, pausable, freezable, blacklist, upgradeable, tax, closedSource (see Onchain.owner.powers)"},"owner":{"anyOf":[{"$ref":"#/components/schemas/OwnerHandover"},{"type":"null"}],"description":"The handover; null when the owner stayed"}},"required":["key","token","at","size","kind","added","owner"],"description":"A signal of kind admin."},"FakeSignal":{"type":"object","properties":{"key":{"type":"string","description":"Stable id of this signal: the same change is never announced twice"},"token":{"type":"string","description":"Token id"},"at":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When the reading that showed the change was taken (an unlock: when first seen)"},"size":{"anyOf":[{"$ref":"#/components/schemas/Size"},{"type":"null"}],"description":"Its size against depth and volume; null when the token has no price"},"kind":{"type":"string","const":"fake","description":"fake: a new copy under its ticker whose owner can take or freeze tokens, with real money in its pools"},"chain":{"type":"string","description":"Chain of the copy"},"address":{"type":"string","description":"Address of the copy"},"name":{"type":"string","description":"Name the copy uses"},"liquidity":{"type":"number","description":"Honest liquidity in its pools, in US dollars"}},"required":["key","token","at","size","kind","chain","address","name","liquidity"],"description":"A signal of kind fake."},"DrainSignal":{"type":"object","properties":{"key":{"type":"string","description":"Stable id of this signal: the same change is never announced twice"},"token":{"type":"string","description":"Token id"},"at":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When the reading that showed the change was taken (an unlock: when first seen)"},"size":{"anyOf":[{"$ref":"#/components/schemas/Size"},{"type":"null"}],"description":"Its size against depth and volume; null when the token has no price"},"kind":{"type":"string","const":"drain","description":"drain: pool liquidity fell 30% or more"},"from":{"type":"number","description":"Liquidity before, in US dollars"},"to":{"type":"number","description":"Liquidity after, in US dollars"}},"required":["key","token","at","size","kind","from","to"],"description":"A signal of kind drain."},"WhaleSignal":{"type":"object","properties":{"key":{"type":"string","description":"Stable id of this signal: the same change is never announced twice"},"token":{"type":"string","description":"Token id"},"at":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When the reading that showed the change was taken (an unlock: when first seen)"},"size":{"anyOf":[{"$ref":"#/components/schemas/Size"},{"type":"null"}],"description":"Its size against depth and volume; null when the token has no price"},"kind":{"type":"string","const":"whale","description":"whale: large holders moved between wallets, exchanges, pools and locks"},"flow":{"type":"string","enum":["toExchange","soldOnDex","fromExchange","boughtOnDex","released"],"description":"Which way: toExchange: large holders sent to exchange addresses; soldOnDex: sold into DEX pools; fromExchange: withdrew from exchanges; boughtOnDex: bought from DEX pools; released: locked tokens reached wallets"},"share":{"type":"number","description":"Share of supply moved, 0 to 1"},"chain":{"type":"string","description":"Chain"},"wallets":{"type":"array","items":{"type":"string"},"description":"The wallets that moved"},"venues":{"description":"Exchanges or pools involved, when known","type":"array","items":{"type":"string"}}},"required":["key","token","at","size","kind","flow","share","chain","wallets"],"description":"A signal of kind whale."},"MintSignal":{"type":"object","properties":{"key":{"type":"string","description":"Stable id of this signal: the same change is never announced twice"},"token":{"type":"string","description":"Token id"},"at":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When the reading that showed the change was taken (an unlock: when first seen)"},"size":{"anyOf":[{"$ref":"#/components/schemas/Size"},{"type":"null"}],"description":"Its size against depth and volume; null when the token has no price"},"kind":{"type":"string","const":"mint","description":"mint: a home-chain mint its vesting and emission schedule doesn’t cover"},"chain":{"type":"string","description":"Chain"},"from":{"type":"number","description":"Total supply before, in tokens"},"to":{"type":"number","description":"Total supply after, in tokens"},"mintable":{"type":"boolean","description":"The owner holds a mint power"}},"required":["key","token","at","size","kind","chain","from","to","mintable"],"description":"A signal of kind mint."},"BridgeSignal":{"type":"object","properties":{"key":{"type":"string","description":"Stable id of this signal: the same change is never announced twice"},"token":{"type":"string","description":"Token id"},"at":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When the reading that showed the change was taken (an unlock: when first seen)"},"size":{"anyOf":[{"$ref":"#/components/schemas/Size"},{"type":"null"}],"description":"Its size against depth and volume; null when the token has no price"},"kind":{"type":"string","const":"bridge","description":"bridge: a bridged copy lost backing, or supply grew on another chain with no mint at home"},"chain":{"type":"string","description":"Chain of the copy"},"what":{"type":"string","enum":["backing","sideMint"],"description":"backing: a lock-and-mint copy lost backing; sideMint: supply grew on a copy with no mint at home"},"from":{"type":"number","description":"Before: backing (0–1) or supply in tokens"},"to":{"type":"number","description":"After: backing (0–1) or supply in tokens"}},"required":["key","token","at","size","kind","chain","what","from","to"],"description":"A signal of kind bridge."},"Signal":{"oneOf":[{"$ref":"#/components/schemas/UnlockSignal"},{"$ref":"#/components/schemas/AdminSignal"},{"$ref":"#/components/schemas/FakeSignal"},{"$ref":"#/components/schemas/DrainSignal"},{"$ref":"#/components/schemas/WhaleSignal"},{"$ref":"#/components/schemas/MintSignal"},{"$ref":"#/components/schemas/BridgeSignal"}],"description":"A change between two readings, sized against the token’s market. Kinds: unlock, mint, bridge, admin, whale, drain, fake.","discriminator":{"propertyName":"kind","mapping":{"unlock":"#/components/schemas/UnlockSignal","admin":"#/components/schemas/AdminSignal","fake":"#/components/schemas/FakeSignal","drain":"#/components/schemas/DrainSignal","whale":"#/components/schemas/WhaleSignal","mint":"#/components/schemas/MintSignal","bridge":"#/components/schemas/BridgeSignal"}}},"AppetitePart":{"type":"object","properties":{"key":{"type":"string","enum":["funding","squeeze","breadth","attention"],"description":"The part: funding: funding weighted by open interest (0.01% per 8h = 50); squeeze: which side the last day of liquidations hit (shorts closed = greed); breadth: share of the top 100 alts up over the week; attention: Google search interest against its 90-day mean"},"score":{"type":"integer","minimum":0,"maximum":100,"description":"This part, 0 to 100"}},"required":["key","score"],"description":"One part of risk appetite."},"AppetiteGauge":{"type":"object","properties":{"score":{"type":"integer","minimum":0,"maximum":100,"description":"Risk appetite, the mean of its parts, 0 to 100"},"parts":{"type":"array","items":{"$ref":"#/components/schemas/AppetitePart"},"description":"The parts read, each shown"}},"required":["score","parts"],"description":"Risk appetite and its parts."},"AltseasonGauge":{"type":"object","properties":{"score":{"type":"integer","minimum":0,"maximum":100,"description":"Share of the top 100 alts that beat bitcoin over 90 days, 0 to 100"},"beat":{"type":"integer","description":"Alts that beat bitcoin"},"of":{"type":"integer","description":"Alts with a 90-day price"}},"required":["score","beat","of"],"description":"Altcoin season."},"LeverageGauge":{"type":"object","properties":{"score":{"type":"integer","minimum":0,"maximum":100,"description":"Leverage heat, 0 to 100"},"funding8h":{"type":"number","description":"Funding per 8h weighted by open interest, as a fraction"},"heated":{"type":"integer","description":"Perp markets running hot"},"of":{"type":"integer","description":"Perp markets read"},"oiUsd":{"type":"number","description":"Open interest across them, in US dollars"}},"required":["score","funding8h","heated","of","oiUsd"],"description":"Leverage across the market."},"VolumeGauge":{"type":"object","properties":{"claimed":{"type":"number","description":"24h volume exchanges report for projects in the top 1000, in US dollars"},"backed":{"type":"number","description":"The part their books could carry, in US dollars"},"share":{"type":"number","description":"backed ÷ claimed, 0 to 1"},"tokens":{"type":"integer","description":"Tokens counted"}},"required":["claimed","backed","share","tokens"],"description":"How much reported volume is real."},"UnlocksGauge":{"type":"object","properties":{"usd":{"type":"number","description":"Unlocks due in the next 30 days at today’s prices, in US dollars"},"depthDays":{"description":"Those in days of the unlocking tokens’ 2% depth","type":["number","null"]},"tokens":{"type":"integer","description":"Tokens unlocking"}},"required":["usd","depthDays","tokens"],"description":"Unlocks due across the market."},"AttentionGauge":{"type":"object","properties":{"score":{"type":"integer","minimum":0,"maximum":100,"description":"Search interest (the 90-day mean = 50), 0 to 100"},"ratio":{"type":"number","description":"The last week ÷ the 90-day mean"},"keywords":{"type":"array","items":{"type":"string"},"description":"The Google searches counted"}},"required":["score","ratio","keywords"],"description":"Google search interest in crypto."},"Market":{"type":"object","properties":{"at":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When the gauges were computed"},"appetite":{"anyOf":[{"$ref":"#/components/schemas/AppetiteGauge"},{"type":"null"}],"description":"Risk appetite; null with fewer than two parts read"},"altseason":{"anyOf":[{"$ref":"#/components/schemas/AltseasonGauge"},{"type":"null"}],"description":"Altcoin season; null with fewer than 50 alts priced"},"leverage":{"anyOf":[{"$ref":"#/components/schemas/LeverageGauge"},{"type":"null"}],"description":"Leverage across the market; null without futures read"},"volume":{"anyOf":[{"$ref":"#/components/schemas/VolumeGauge"},{"type":"null"}],"description":"Real volume; null before books were read"},"liquidations":{"anyOf":[{"$ref":"#/components/schemas/Liquidations"},{"type":"null"}],"description":"Liquidations across the venues read; a lower bound"},"unlocks":{"anyOf":[{"$ref":"#/components/schemas/UnlocksGauge"},{"type":"null"}],"description":"Unlocks ahead; null without schedules"},"attention":{"anyOf":[{"$ref":"#/components/schemas/AttentionGauge"},{"type":"null"}],"description":"Google search interest; null until read"},"history":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"The day’s last reading"},"value":{"type":"number","description":"The gauge’s headline value then"}},"required":["at","value"]}},"description":"Daily headline value per gauge (appetite, altseason, leverage, volume share ×100, liquidations, unlocks, attention), last 30 days"}},"required":["at","appetite","altseason","leverage","volume","liquidations","unlocks","attention","history"],"description":"The market gauges with a month of daily history; see /method#gauges for how each is counted."},"Links":{"type":"object","properties":{"website":{"type":"array","items":{"type":"string"},"description":"The project’s sites; empty when none listed"},"explorers":{"type":"array","items":{"type":"string"},"description":"Block explorers showing the token; empty when none listed"},"forums":{"type":"array","items":{"type":"string"},"description":"Official forums; empty when none listed"},"chat":{"type":"array","items":{"type":"string"},"description":"Chat rooms (Discord and the like); empty when none listed"},"announcements":{"type":"array","items":{"type":"string"},"description":"Announcement channels; empty when none listed"},"github":{"type":"array","items":{"type":"string"},"description":"Code repositories; empty when none listed"},"whitepaper":{"description":"Whitepaper; null when none listed","type":["string","null"]},"twitter":{"description":"X (Twitter) account; null when none listed","type":["string","null"]},"telegram":{"description":"Telegram channel; null when none listed","type":["string","null"]},"reddit":{"description":"Subreddit; null when none listed","type":["string","null"]}},"required":["website","explorers","forums","chat","announcements","github","whitepaper","twitter","telegram","reddit"],"description":"Where the project points people, as CoinGecko lists it; read weekly for the top 1000."},"PriceRange":{"type":"object","properties":{"min":{"type":"number","description":"Lowest daily price"},"max":{"type":"number","description":"Highest daily price"}},"required":["min","max"],"description":"Lowest and highest daily price over a window, in US dollars (or ?currency)."},"PriceRanges":{"type":"object","properties":{"d7":{"anyOf":[{"$ref":"#/components/schemas/PriceRange"},{"type":"null"}],"description":"Over 7 days; null where the daily series doesn’t reach that far"},"d30":{"anyOf":[{"$ref":"#/components/schemas/PriceRange"},{"type":"null"}],"description":"Over 30 days; null where the daily series doesn’t reach that far"},"d90":{"anyOf":[{"$ref":"#/components/schemas/PriceRange"},{"type":"null"}],"description":"Over 90 days; null where the daily series doesn’t reach that far"},"w52":{"anyOf":[{"$ref":"#/components/schemas/PriceRange"},{"type":"null"}],"description":"Over 52 weeks; null where the daily series doesn’t reach that far"}},"required":["d7","d30","d90","w52"],"description":"Price ranges from the daily series (top 1000)."},"Roi":{"type":"object","properties":{"times":{"type":"number","description":"Today’s price ÷ the ICO price"},"currency":{"type":"string","description":"The currency the ICO was priced in, e.g. usd, btc, eth"}},"required":["times","currency"],"description":"Return since the ICO."},"MarketFacts":{"type":"object","properties":{"high24h":{"description":"Highest price over the last 24 hours, in US dollars (or the ?currency asked for); null when no list states it","type":["number","null"]},"low24h":{"description":"Lowest price over the last 24 hours, in US dollars (or the ?currency asked for); null when no list states it","type":["number","null"]},"ath":{"description":"All-time high, in US dollars (or the ?currency asked for); null when no list states it","type":["number","null"]},"athAt":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"When the all-time high was set"},"atl":{"description":"All-time low, in US dollars (or the ?currency asked for); null when no list states it","type":["number","null"]},"atlAt":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"When the all-time low was set"},"maxSupply":{"description":"The most tokens that can ever exist; null when uncapped or unstated, in tokens; null when not read","type":["number","null"]},"roi":{"anyOf":[{"$ref":"#/components/schemas/Roi"},{"type":"null"}],"description":"Return since the ICO; null when CoinGecko has no ICO price"},"ranges":{"$ref":"#/components/schemas/PriceRanges"}},"required":["high24h","low24h","ath","athAt","atl","atlAt","maxSupply","roi","ranges"],"description":"The token’s price extremes and supply cap, from CoinGecko and its daily series."},"TimePoint":{"type":"object","properties":{"at":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"The moment of this point"},"value":{"type":"number","description":"Price in US dollars (or ?currency); fees in US dollars"}},"required":["at","value"],"description":"One point of a series."},"CommitWeeks":{"type":"object","properties":{"weekOf":{"type":"string","format":"date","example":"2026-11-05","description":"The first week’s Sunday"},"weekly":{"type":"array","items":{"type":"integer"},"description":"Commits by people per week, oldest first, 52 weeks"},"owner":{"type":"string","description":"The GitHub owner counted"}},"required":["weekOf","weekly","owner"],"description":"Commits by people per week over the last year."},"TokenHistory":{"type":"object","properties":{"id":{"type":"string","description":"The token"},"days":{"type":"integer","description":"The days asked for"},"interval":{"type":"string","enum":["hour","day"],"description":"How far apart the price points are. hour: one point an hour, for up to 7 days (top 1000); day: one point a day, up to a year"},"price":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/TimePoint"}},{"type":"null"}],"description":"Price over the days asked, oldest first; null when no series reaches this token"},"fees":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/TimePoint"}},{"type":"null"}],"description":"Daily fees from DefiLlama over the same days; null when DefiLlama doesn’t track it"},"commits":{"anyOf":[{"$ref":"#/components/schemas/CommitWeeks"},{"type":"null"}],"description":"Weekly commits over the last year; null when no code was read"}},"required":["id","days","interval","price","fees","commits"],"description":"A token’s series over the days asked for."},"TokenIndexEntry":{"type":"object","properties":{"id":{"type":"string","description":"Our id, as /tokens/{id} takes it"},"symbol":{"type":"string","description":"Ticker"},"name":{"type":"string","description":"Name"},"rank":{"description":"Rank by market cap; null when unranked","type":["integer","null"]},"image":{"description":"Logo URL; null when unknown","type":["string","null"]}},"required":["id","symbol","name","rank","image"],"description":"One token in the compact list of all of them, for search and autocomplete."},"Rate":{"type":"object","properties":{"code":{"type":"string","description":"Currency code, as ?currency takes it, e.g. EUR"},"name":{"type":"string","description":"Currency name"},"unit":{"type":"string","description":"Its sign, e.g. €"},"kind":{"type":"string","enum":["fiat","crypto","commodity"],"description":"What it is. fiat: a national currency; crypto: a cryptocurrency; commodity: gold, silver and the like"},"perUsd":{"type":"number","description":"Units of this currency one US dollar buys"}},"required":["code","name","unit","kind","perUsd"],"description":"One currency against the US dollar, from CoinGecko every 3 hours; usable as ?currency= on token answers."},"TokenSummary":{"type":"object","properties":{"id":{"type":"string","description":"Our id: CoinGecko’s where it lists the token, else CoinMarketCap’s slug"},"symbol":{"type":"string","description":"Ticker, upper case"},"name":{"type":"string","description":"Name as the market lists give it"},"rank":{"description":"Rank by market cap, CoinGecko first, else CoinMarketCap; null when neither ranks it","type":["integer","null"]},"image":{"description":"Logo URL from CoinGecko; null when unknown","type":["string","null"]},"price":{"description":"Price, in US dollars (or the ?currency asked for); null when no list states it","type":["number","null"]},"marketCap":{"description":"Market cap: price × circulating supply, in US dollars (or the ?currency asked for); null when no list states it","type":["number","null"]},"volume24h":{"description":"Reported trading volume over 24 hours, CoinGecko first, in US dollars (or the ?currency asked for); null when no list states it","type":["number","null"]},"circulatingSupply":{"description":"Circulating supply as the lists state it, CoinGecko first, in tokens; null when not read","type":["number","null"]},"totalSupply":{"description":"Total supply as the lists state it, CoinGecko first, in tokens; null when not read","type":["number","null"]},"change":{"anyOf":[{"$ref":"#/components/schemas/PriceChange"},{"type":"null"}]},"sourcesGap":{"description":"The widest gap between CoinGecko and CoinMarketCap on price, supply, market cap or volume, as larger ÷ smaller (1 = agree); null when only one lists it","type":["number","null"]},"code":{"type":"string","enum":["unread","none","blind","silent","thin","active"],"description":"What the read of its public code says. unread: not read yet; none: no public code found; blind: its site refused us, so we couldn’t look; silent: code found, no commits by people in 90 days; thin: a few commits by one or two people; active: regular commits by several people"},"fees30d":{"description":"Fees users paid over 30 days, from DefiLlama, in US dollars; null when not read","type":["number","null"]},"flags":{"type":"array","items":{"type":"string","enum":["code","fees","gaps","thin","unbacked","unlocks","heated","mint","whales","fakes"]},"description":"Signals the token carries. code: commits by people in its public code over the last 90 days; fees: users paid fees over the last 30 days (DefiLlama); gaps: CoinGecko and CoinMarketCap differ on market cap by 5% or more; thin: real cap under half the market cap: order books too shallow for its size; unbacked: under half the volume exchanges report is carried by their order books (on $1M+ a day); unlocks: the next 30 days of vesting are worth more than a day of trading; heated: open interest at 30%+ of market cap, or funding beyond ±0.05% per 8h; mint: its contract’s owner can mint; whales: ten wallets hold half the supply; fakes: copies under its ticker whose owner can take or freeze tokens"},"url":{"type":"string","description":"Its page on cryptocoinstat.io"}},"required":["id","symbol","name","rank","image","price","marketCap","volume24h","circulatingSupply","totalSupply","change","sourcesGap","code","fees30d","flags","url"],"description":"One token as a list returns it."},"SourceFigures":{"type":"object","properties":{"price":{"description":"Price this list states, in US dollars (or the ?currency asked for); null when no list states it","type":["number","null"]},"marketCap":{"description":"Market cap this list states, in US dollars (or the ?currency asked for); null when no list states it","type":["number","null"]},"supply":{"description":"Circulating supply this list states, in tokens; null when not read","type":["number","null"]},"totalSupply":{"description":"Total supply this list states, in tokens; null when not read","type":["number","null"]},"volume24h":{"description":"24h volume this list states, in US dollars (or the ?currency asked for); null when no list states it","type":["number","null"]},"rank":{"description":"Rank on this list; null when unranked","type":["integer","null"]},"url":{"type":"string","description":"The token’s page on this list"},"readAt":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When this list’s figures were read"}},"required":["price","marketCap","supply","totalSupply","volume24h","rank","url","readAt"],"description":"What one market list states about the token."},"Project":{"type":"object","properties":{"kind":{"type":"string","enum":["project","wrapper-or-asset"],"description":"What the token is. project: a project of its own; wrapper-or-asset: a stablecoin, wrapped or staked asset: its supply follows deposits"},"homepage":{"description":"The project’s site, from CoinGecko; null when unknown","type":["string","null"]},"code":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/Repository"}},{"type":"null"}],"description":"GitHub owners found and read, busiest first; null when not read yet"},"usage":{"anyOf":[{"$ref":"#/components/schemas/ProjectUsage"},{"type":"null"}],"description":"From DefiLlama; null when DefiLlama doesn’t track it"},"readAt":{"type":"string","format":"date","example":"2026-11-05","description":"The day this was read"}},"required":["kind","homepage","code","usage","readAt"],"description":"What the project’s own code and usage show, for the 300 largest."},"TokenDetail":{"allOf":[{"$ref":"#/components/schemas/TokenSummary"},{"type":"object","properties":{"sources":{"$ref":"#/components/schemas/TokenSources"},"gaps":{"$ref":"#/components/schemas/SourceGaps"},"categories":{"type":"array","items":{"type":"string"},"description":"Category slugs it belongs to; see /categories"},"project":{"anyOf":[{"$ref":"#/components/schemas/Project"},{"type":"null"}]},"onchain":{"anyOf":[{"$ref":"#/components/schemas/Onchain"},{"type":"null"}],"description":"What the chain and futures say; null outside the top 1000"},"signals":{"type":"array","items":{"$ref":"#/components/schemas/Signal"},"description":"Its latest signals (at most 5), newest first"},"market":{"anyOf":[{"$ref":"#/components/schemas/MarketFacts"},{"type":"null"}]},"links":{"anyOf":[{"$ref":"#/components/schemas/Links"},{"type":"null"}],"description":"Where the project points people; null until read (weekly, top 1000)"},"firstSeenAt":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"When we first saw it listed; null for tokens known before this was kept (Nov 2026)"}},"required":["sources","gaps","categories","project","onchain","signals","market","links","firstSeenAt"]}],"description":"Everything we read about one token, each part with the time it was read."},"TrendingToken":{"allOf":[{"$ref":"#/components/schemas/TokenSummary"},{"type":"object","properties":{"place":{"type":"integer","description":"Its place on the list, 1 = most searched"}},"required":["place"]}],"description":"A token among the most searched on CoinGecko over the last day."},"NewToken":{"allOf":[{"$ref":"#/components/schemas/TokenSummary"},{"type":"object","properties":{"firstSeenAt":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When we first saw it listed"}},"required":["firstSeenAt"]}],"description":"A token we saw listed for the first time."},"PopularToken":{"allOf":[{"$ref":"#/components/schemas/TokenSummary"},{"type":"object","properties":{"pageViews":{"type":"integer","description":"Views of its page by people over the last 7 days"},"apiLookups":{"type":"integer","description":"Lookups of it through the API over the last 7 days"}},"required":["pageViews","apiLookups"]}],"description":"A token among the most looked at on cryptocoinstat.io over the last 7 days."},"WatchItem":{"type":"object","properties":{"token":{"$ref":"#/components/schemas/TokenSummary"},"addedAt":{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z","description":"When it was added to the watchlist"}},"required":["token","addedAt"],"description":"A token on the caller’s watchlist."},"Resolved":{"type":"object","properties":{"query":{"type":"string","description":"What was asked"},"via":{"type":"string","enum":["id","legacy","symbol","name"],"description":"How it matched. id: our id; legacy: an id from the old cryptocoinstat.io API; symbol: an exact ticker (the largest token with it); name: a name, exact or containing the query"},"token":{"$ref":"#/components/schemas/TokenSummary"}},"required":["query","via","token"],"description":"Which token a name, ticker, id or an id from the old cryptocoinstat.io API stands for."},"Repository":{"type":"object","properties":{"owner":{"type":"string","description":"GitHub user or organisation"},"foundVia":{"type":"array","items":{"type":"string"},"description":"Where the link to it was found: site, defillama, coingecko, coinmarketcap"},"repos":{"type":"integer","description":"Public repositories"},"liveRepos":{"type":"integer","description":"Of those, pushed to in the last 90 days"},"commits90d":{"type":"integer","description":"Commits by people (not bots) over 90 days, in the five most recently pushed repos"},"people90d":{"type":"integer","description":"People committing over those 90 days"},"newestPush":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"Last push to any of its repositories; null when none"},"lastRelease":{"anyOf":[{"type":"string","format":"date-time","example":"2026-11-05T12:00:00Z"},{"type":"null"}],"description":"Last tagged release; null when none"}},"required":["owner","foundVia","repos","liveRepos","commits90d","people90d","newestPush","lastRelease"],"description":"One GitHub owner of the project’s code and what it shows."},"ProjectUsage":{"type":"object","properties":{"category":{"description":"DefiLlama’s category for it; null when unknown","type":["string","null"]},"fees30d":{"description":"Fees users paid over 30 days, in US dollars; null when not read","type":["number","null"]},"revenue30d":{"description":"The part of those fees the protocol kept, in US dollars; null when not read","type":["number","null"]},"tvl":{"description":"Value locked in it (a chain’s or a protocol’s), in US dollars; null when not read","type":["number","null"]}},"required":["category","fees30d","revenue30d","tvl"],"description":"What DefiLlama shows of the project’s use."},"TokenSources":{"type":"object","properties":{"coingecko":{"anyOf":[{"$ref":"#/components/schemas/SourceFigures"},{"type":"null"}],"description":"CoinGecko’s figures; null when it doesn’t list the token"},"coinmarketcap":{"anyOf":[{"$ref":"#/components/schemas/SourceFigures"},{"type":"null"}],"description":"CoinMarketCap’s figures; null when it doesn’t list the token"}},"required":["coingecko","coinmarketcap"],"description":"Each market list’s own figures for the token."},"SourceGaps":{"type":"object","properties":{"price":{"description":"Price, larger ÷ smaller; null when one list lacks it","type":["number","null"]},"marketCap":{"description":"Market cap, larger ÷ smaller","type":["number","null"]},"supply":{"description":"Circulating supply, larger ÷ smaller","type":["number","null"]},"volume24h":{"description":"24h volume, larger ÷ smaller","type":["number","null"]}},"required":["price","marketCap","supply","volume24h"],"description":"CoinGecko against CoinMarketCap on each figure, as larger ÷ smaller (1 = agree)."},"ExchangeSummary":{"type":"object","properties":{"slug":{"type":"string","description":"Our id for it, as /exchanges/{slug} takes it"},"name":{"type":"string","description":"Name as CoinGecko’s tickers give it"},"reputable":{"type":"boolean","description":"One of the exchanges whose books set the norm"},"tokens":{"type":"integer","description":"Tokens of the top 1000 it lists (stablecoins and wrappers left out)"},"volume":{"type":"number","description":"Reported 24h volume across those tokens, in US dollars"},"depth":{"type":"number","description":"2% sell depth summed across those tokens, in US dollars"},"carried":{"type":"number","description":"The part of the volume its books could carry, in US dollars"},"carriedShare":{"description":"carried ÷ the volume on books, from 0 to 1; null without books","type":["number","null"]},"unbackedTokens":{"type":"integer","description":"Tokens on which its volume runs past ten times what its book could carry"},"tested":{"type":"integer","description":"Tokens whose trades on it were tested"},"odd":{"type":"integer","description":"Of those, how many didn’t trade like people"},"url":{"description":"Its site, from CoinGecko; null when unknown","type":["string","null"]},"image":{"description":"Its logo, from CoinGecko; null when unknown","type":["string","null"]},"yearEstablished":{"description":"The year it opened; null when unknown","type":["integer","null"]},"country":{"description":"Where it is registered; null when unknown","type":["string","null"]}},"required":["slug","name","reputable","tokens","volume","depth","carried","carriedShare","unbackedTokens","tested","odd","url","image","yearEstablished","country"],"description":"One exchange across the top 1000."},"ExchangeDetail":{"allOf":[{"$ref":"#/components/schemas/ExchangeSummary"},{"type":"object","properties":{"top":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeMarket"},"description":"Its 50 largest markets by volume"}},"required":["top"]}],"description":"One exchange and its largest markets."},"LocalName":{"type":"object","properties":{"en":{"type":"string","description":"English name"},"ru":{"type":"string","description":"Russian name"}},"required":["en","ru"],"description":"A name in English and Russian."},"Category":{"type":"object","properties":{"slug":{"type":"string","description":"Our id for it, as /categories/{slug} and /tokens?category= take it"},"name":{"$ref":"#/components/schemas/LocalName"},"group":{"type":"string","enum":["sector","chain","venue","backer"],"description":"What kind of grouping. sector: what the tokens do (DeFi, AI, memes…); chain: tokens on one chain; venue: tokens listed on one exchange; backer: tokens one fund backed"},"tokens":{"type":"integer","description":"Tokens in it"},"marketCap":{"type":"number","description":"Their market cap together, in US dollars"},"read":{"type":"integer","description":"Tokens whose code and usage we read"},"liveCode":{"type":"integer","description":"Of those, with commits by people in the last 90 days"},"fees30d":{"type":"number","description":"Fees their users paid over 30 days, from DefiLlama, in US dollars"},"sourcesDisagree":{"type":"integer","description":"Tokens where CoinGecko and CoinMarketCap differ on market cap by 5% or more"}},"required":["slug","name","group","tokens","marketCap","read","liveCode","fees30d","sourcesDisagree"],"description":"A category with its size and what we read of it."},"TokenRef":{"type":"object","properties":{"id":{"type":"string","description":"Token id"},"name":{"type":"string","description":"Name"},"symbol":{"type":"string","description":"Ticker"},"rank":{"description":"Rank by market cap; null when unranked","type":["integer","null"]}},"required":["id","name","symbol","rank"],"description":"A token, briefly."},"ContractRef":{"type":"object","properties":{"chain":{"type":"string","description":"Chain"},"address":{"type":"string","description":"Address"}},"required":["chain","address"],"description":"A contract on a chain."},"ContractCheck":{"type":"object","properties":{"address":{"type":"string","description":"The address asked about"},"found":{"type":"boolean","description":"Some list or DEX sighting knows this address"},"kind":{"anyOf":[{"type":"string","enum":["home","official","wrapper","other","bridge","unknown"]},{"type":"null"}],"description":"What it is: home: the token’s own contract; official: a deployment its listing names; wrapper: a separately listed wrapper; other: a different token sharing the ticker; bridge: a chain bridge’s copy; unknown: a copy no list names. Null when not found"},"verdict":{"anyOf":[{"type":"string","enum":["listed","unknown","dangerous"]},{"type":"null"}],"description":"listed: a list names it; unknown: no list names it; dangerous: unknown and its owner can take or freeze tokens. Null when not found"},"chain":{"description":"The chain it was seen on (DexScreener’s chain id); null when unknown","type":["string","null"]},"token":{"anyOf":[{"$ref":"#/components/schemas/TokenRef"},{"type":"null"}],"description":"The token it is, or trades as a copy of; null when not found"},"home":{"anyOf":[{"$ref":"#/components/schemas/ContractRef"},{"type":"null"}],"description":"The token’s own contract, to point to when this address isn’t it; null when unknown"}},"required":["address","found","kind","verdict","chain","token","home"],"description":"What an address is: a token’s own contract, a listed deployment or wrapper, or a copy no list names."},"ExchangeMarket":{"type":"object","properties":{"token":{"type":"string","description":"Token id"},"volume":{"type":"number","description":"Its reported 24h volume for this token, in US dollars"},"depth":{"type":"number","description":"Its 2% sell depth for this token, in US dollars"},"turnoverTimesNorm":{"description":"Volume ÷ depth, as a multiple of the norm on reputable exchanges; null without a book","type":["number","null"]},"unbacked":{"type":"boolean","description":"Its volume runs past ten times what its book could carry"},"odd":{"description":"Its trades failed two of three tests against a reputable exchange; null when not tested","type":["boolean","null"]}},"required":["token","volume","depth","turnoverTimesNorm","unbacked","odd"],"description":"One token on an exchange: its volume, depth and how its trades tested."},"WatchChange":{"type":"object","properties":{"id":{"type":"string","description":"The token"},"watching":{"type":"boolean","description":"Whether it is on the watchlist now"}},"required":["id","watching"],"description":"The watchlist entry after the change."},"ListTokensResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TokenSummary"},"description":"List tokens"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of listTokens: the data and when it was read."},"TokenIndexResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TokenIndexEntry"},"description":"Every token, compact"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of tokenIndex: the data and when it was read."},"ResolveTokenResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Resolved"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of resolveToken: the data and when it was read."},"TrendingTokensResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TrendingToken"},"description":"Most searched"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of trendingTokens: the data and when it was read."},"NewTokensResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NewToken"},"description":"Newly listed"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of newTokens: the data and when it was read."},"PopularTokensResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PopularToken"},"description":"Most looked at"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of popularTokens: the data and when it was read."},"GetTokenResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TokenDetail"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of getToken: the data and when it was read."},"GetTokenHistoryResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TokenHistory"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of getTokenHistory: the data and when it was read."},"ListRatesResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Rate"},"description":"Currency rates"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of listRates: the data and when it was read."},"ListExchangesResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeSummary"},"description":"Exchanges by reported volume"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of listExchanges: the data and when it was read."},"GetExchangeResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ExchangeDetail"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of getExchange: the data and when it was read."},"ListCategoriesResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Category"},"description":"Categories"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of listCategories: the data and when it was read."},"GetCategoryResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Category"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of getCategory: the data and when it was read."},"GetMarketResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Market"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of getMarket: the data and when it was read."},"ListSignalsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Signal"},"description":"Signals, newest first"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of listSignals: the data and when it was read."},"CheckContractResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ContractCheck"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of checkContract: the data and when it was read."},"GetWatchlistResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WatchItem"},"description":"Your watchlist"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of getWatchlist: the data and when it was read."},"WatchTokenResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WatchChange"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of watchToken: the data and when it was read."},"UnwatchTokenResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WatchChange"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"description":"The answer of unwatchToken: the data and when it was read."}},"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"},"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}