{"openapi":"3.1.0","info":{"title":"Coral API","version":"1.0.0","description":"Public API for Coral data. The v1 API is unauthenticated, heavily rate limited, and requires visible attribution to Coral with a link to https://0xcoral.com when displayed in another app or agent. Coral data is informational and is not financial advice."},"components":{"schemas":{},"parameters":{}},"paths":{"/community/leaderboard":{"get":{"tags":["Current capabilities"],"summary":"Get the community caller leaderboard","description":"Returns a sanitized 7d community caller leaderboard from Coral community intelligence data. Handles and aggregate performance metrics are included; internal ids are excluded.","responses":{"200":{"description":"Community caller leaderboard","content":{"application/json":{"schema":{"type":"object","properties":{"callers":{"type":"array","items":{"type":"object","properties":{"evaluated":{"type":"number"},"handle":{"type":"string"},"hitRate24h":{"type":"number"},"hits24h":{"type":"number"},"meanReturn24h":{"type":"number"},"platforms":{"type":"array","items":{"type":"string"}},"rank":{"type":"number"},"tier":{"type":"string","enum":["A","B","C","noise","unranked"]}},"required":["evaluated","handle","hitRate24h","hits24h","meanReturn24h","platforms","rank","tier"],"additionalProperties":false}},"computedAt":{"anyOf":[{},{"type":"null"}]},"count":{"type":"number"},"window":{"const":"7d"}},"required":["callers","computedAt","count","window"],"additionalProperties":false}}}},"500":{"description":"Leaderboard unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"const":"leaderboard_unavailable"}},"required":["error"],"additionalProperties":false}}}}}}},"/community/tokens":{"get":{"tags":["Current capabilities"],"summary":"Get trending community tokens","description":"Returns the sanitized cross-community trending rollup (24h): tokens trending across the communities Coral watches, ranked by mention momentum, with distinct-community counts and optional 1h flow. Optional live market fields are fetched at read time. This is an aggregate only — there is no way to query a single server. Raw messages, chat ids, tenant ids, caller handles, and upstream source names are excluded.","responses":{"200":{"description":"Community token candidates","content":{"application/json":{"schema":{"type":"object","properties":{"computedAt":{"type":"string"},"count":{"type":"integer","minimum":0},"tokens":{"type":"array","items":{"type":"object","properties":{"firstCaller":{"type":["object","null"],"properties":{"calledAt":{"type":"string"},"calledMcapUsd":{"type":["number","null"]},"handle":{"type":"string"},"platform":{"type":"string"}},"default":null,"required":["calledAt","calledMcapUsd","handle","platform"]},"flow":{"type":["object","null"],"properties":{"buys1h":{"type":["number","null"]},"sells1h":{"type":["number","null"]}},"required":["buys1h","sells1h"]},"market":{"type":["object","null"],"properties":{"capturedAt":{"type":["string","null"]},"fdvUsd":{"type":["number","null"]},"liquidityUsd":{"type":["number","null"]},"marketCapUsd":{"type":["number","null"]},"pairCreatedAt":{"type":["number","null"]},"priceChange1hPct":{"type":["number","null"]},"priceChange24hPct":{"type":["number","null"]},"priceUsd":{"type":["number","null"]},"volume24hUsd":{"type":["number","null"]}},"required":["fdvUsd","liquidityUsd","marketCapUsd","priceChange1hPct","priceChange24hPct","priceUsd","volume24hUsd"]},"metrics":{"type":"object","properties":{"communityCount":{"type":"integer","minimum":0},"lastMentionAt":{"type":["string","null"],"default":null},"mentionRatePerHour":{"type":"number"},"mentions":{"type":"integer","minimum":0}},"required":["communityCount","mentionRatePerHour","mentions"]},"platforms":{"type":"array","items":{"type":"string"},"default":[]},"rank":{"type":"integer","exclusiveMinimum":0},"token":{"type":"object","properties":{"address":{"type":["string","null"],"default":null},"chain":{"type":["string","null"]},"links":{"type":"object","properties":{"chart":{"type":["string","null"]},"explorer":{"type":["string","null"]},"swap":{"type":["string","null"]}},"required":["chart","explorer","swap"]},"name":{"type":["string","null"]},"profile":{"type":"object","properties":{"description":{"type":["string","null"]},"imageUrl":{"type":["string","null"]},"socials":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["telegram","x"]},"url":{"type":"string"}},"required":["platform","url"]}},"websites":{"type":"array","items":{"type":"string"}}},"required":["description","imageUrl","socials","websites"]},"symbol":{"type":"string"},"tokenId":{"type":"string"}},"required":["chain","links","name","profile","symbol","tokenId"]}},"required":["flow","market","metrics","rank","token"]}},"window":{"type":"string","enum":["24h"]}},"required":["computedAt","count","tokens","window"]}}}},"400":{"description":"Invalid query parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"const":"invalid_query"}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Community token candidates unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"const":"community_tokens_unavailable"}},"required":["error"],"additionalProperties":false}}}}},"parameters":[{"name":"limit","in":"query","required":false,"description":"Maximum tokens to return, from 1 to 50.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"includeMetadata","in":"query","required":false,"description":"Set false, 0, or no to skip cached/live token metadata enrichment.","schema":{"type":"boolean","default":true}}]}},"/dashboard":{"get":{"tags":["Current capabilities"],"summary":"Public Coral dashboard snapshot","description":"Current public Coral aggregate. This is the best starting point for apps and agents: treasury, wallet snapshot, and the latest pulse.","responses":{"200":{"description":"Public dashboard snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"latestPulse":{"anyOf":[{},{"type":"null"}]},"portfolio":{"type":"object","properties":{"openPositions":{"type":"number"},"tokens":{"type":"array","items":{}},"totalUsd":{"type":"number"},"walletHoldings":{},"walletTotalUsd":{},"walletUpdatedAt":{}},"required":["openPositions","tokens","totalUsd"],"additionalProperties":true},"treasury":{}},"required":["latestPulse","portfolio"],"additionalProperties":true}}}},"429":{"description":"Public API rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"const":"rate_limited"},"message":{}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Dashboard snapshot failed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"],"additionalProperties":false}}}}}}},"/traction":{"get":{"tags":["Current capabilities"],"summary":"Coral network traction (aggregate)","description":"Network-wide growth counts: active communities, tokens graded, and linked callers over the rolling window. Aggregate numbers only, no per-community identifiers.","responses":{"200":{"description":"Public traction snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string"},"windowDays":{"type":"number"},"communities":{"type":"number"},"tokensGraded":{"type":"number"},"callersLinked":{"type":"number"}},"required":["generatedAt","windowDays","communities","tokensGraded","callersLinked"],"additionalProperties":false}}}},"503":{"description":"Traction unavailable (site falls back to its static snapshot)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"],"additionalProperties":false}}}}}}},"/tokens/{chain}/{address}":{"get":{"tags":["Current capabilities"],"summary":"Coral's full read on any token","description":"Returns Coral's full read on any token by chain and address: market metrics (including token age), all-time high, Coral Score, holders (with liquidity-and-burn-adjusted concentration), contract safety, socials, cross-community reach, and links. Works for ANY contract, not just Coral's curated registry; the curated profile and risk class are layered in when the token is allowlisted. Public, cached, and heavily rate limited. Superset of GET /score/{chain}/{address}.","parameters":[{"name":"chain","in":"path","required":true,"description":"Chain slug.","schema":{"type":"string","enum":["base","ethereum","polygon","unichain","solana"]}},{"name":"address","in":"path","required":true,"description":"Token contract address on that chain.","schema":{"type":"string"},"example":"0x4e606Cb7370A61060Ad9916462871750D77e2b07"}],"responses":{"200":{"description":"Coral's full token read","content":{"application/json":{"schema":{"type":"object","required":["activity","address","ath","chain","dexPaid","holders","links","market","profile","reach","riskClass","safety","score","socials","symbol","tokenId","whales"],"properties":{"tokenId":{"type":"string"},"chain":{"type":"string"},"address":{"type":"string"},"symbol":{"type":"string"},"market":{"anyOf":[{"type":"object","required":["capturedAt","fdvUsd","liquidityUsd","marketCapUsd","pairCreatedAt","priceChange1hPct","priceChange24hPct","priceUsd","volume24hUsd"],"properties":{"capturedAt":{"type":["string","null"]},"fdvUsd":{"type":["number","null"]},"liquidityUsd":{"type":["number","null"]},"marketCapUsd":{"type":["number","null"]},"pairCreatedAt":{"type":["number","null"]},"priceChange1hPct":{"type":["number","null"]},"priceChange24hPct":{"type":["number","null"]},"priceUsd":{"type":["number","null"]},"volume24hUsd":{"type":["number","null"]}}},{"type":"null"}]},"ath":{"anyOf":[{"type":"object","required":["date","price"],"properties":{"date":{"type":"string"},"price":{"type":"number"}}},{"type":"null"}]},"holders":{"anyOf":[{"type":"object","required":["count","topHoldersExInfraPct","topHoldersPct","topHoldersSlices"],"properties":{"count":{"type":["number","null"]},"topHoldersExInfraPct":{"type":["number","null"]},"topHoldersPct":{"type":["number","null"]},"topHoldersSlices":{"type":"array","items":{"type":"number"}}}},{"type":"null"}]},"links":{"type":"object","required":["chart","explorer","swap"],"properties":{"chart":{"type":["string","null"]},"explorer":{"type":["string","null"]},"swap":{"type":["string","null"]}}},"profile":{"type":"object","required":["description","imageUrl","socials","websites"],"properties":{"description":{"type":["string","null"]},"imageUrl":{"type":["string","null"]},"socials":{"type":"array","items":{"type":"object","required":["platform","url"],"properties":{"platform":{"type":"string","enum":["telegram","x"]},"url":{"type":"string"}}}},"websites":{"type":"array","items":{"type":"string"}}}},"riskClass":{"anyOf":[{"type":"string","enum":["blue_chip","defi","growth","meme"]},{"type":"null"}]},"socials":{"type":"object","required":["telegram","twitter","twitterFollowerCount","website"],"properties":{"telegram":{"type":["string","null"]},"twitter":{"type":["string","null"]},"twitterFollowerCount":{"type":["number","null"]},"website":{"type":["string","null"]}}},"safety":{"anyOf":[{"type":"object","required":["freezeAuthority","freshDeploy","honeypot","mintAuthority","noSocials"],"properties":{"freezeAuthority":{"type":"boolean"},"freshDeploy":{"type":"boolean"},"honeypot":{"type":"boolean"},"mintAuthority":{"type":"boolean"},"noSocials":{"type":"boolean"}}},{"type":"null"}]},"activity":{"anyOf":[{"type":"object","required":["h1","h6","h24","m5"],"properties":{"m5":{"anyOf":[{"type":"object","required":["buyers","buys","sellers","sells","volumeUsd"],"properties":{"buyers":{"type":["number","null"]},"buys":{"type":"number"},"sellers":{"type":["number","null"]},"sells":{"type":"number"},"volumeUsd":{"type":"number"}}},{"type":"null"}]},"h1":{"anyOf":[{"type":"object","required":["buyers","buys","sellers","sells","volumeUsd"],"properties":{"buyers":{"type":["number","null"]},"buys":{"type":"number"},"sellers":{"type":["number","null"]},"sells":{"type":"number"},"volumeUsd":{"type":"number"}}},{"type":"null"}]},"h6":{"anyOf":[{"type":"object","required":["buyers","buys","sellers","sells","volumeUsd"],"properties":{"buyers":{"type":["number","null"]},"buys":{"type":"number"},"sellers":{"type":["number","null"]},"sells":{"type":"number"},"volumeUsd":{"type":"number"}}},{"type":"null"}]},"h24":{"anyOf":[{"type":"object","required":["buyers","buys","sellers","sells","volumeUsd"],"properties":{"buyers":{"type":["number","null"]},"buys":{"type":"number"},"sellers":{"type":["number","null"]},"sells":{"type":"number"},"volumeUsd":{"type":"number"}}},{"type":"null"}]}}},{"type":"null"}]},"whales":{"anyOf":[{"type":"object","required":["count","smartMoneyCount","tier","topLabel","windowHours"],"properties":{"count":{"type":"number"},"smartMoneyCount":{"type":"number"},"tier":{"anyOf":[{"type":"string","enum":["A","B","C"]},{"type":"null"}]},"topLabel":{"type":["string","null"]},"windowHours":{"type":"number"}}},{"type":"null"}]},"dexPaid":{"anyOf":[{"type":"object","required":["boostsActive","enhanced","paidAt","socials"],"properties":{"boostsActive":{"type":"integer","minimum":0},"enhanced":{"type":"boolean"},"paidAt":{"type":["number","null"]},"socials":{"type":"array","items":{"type":"string"}}}},{"type":"null"}]},"reach":{"anyOf":[{"type":"object","required":["communities","mentions","windowHours"],"properties":{"communities":{"type":"number"},"mentions":{"type":"number"},"windowHours":{"type":"number"}}},{"type":"null"}]},"score":{"type":"object","required":["confidence","confidenceLabel","explanation","quality","score","scoredAt","tokenId","validUntil","verdict","version"],"properties":{"version":{"const":"score-v0.1"},"tokenId":{"type":"string"},"score":{"type":"number"},"verdict":{"type":"string","enum":["organic","wash","paid","unknown"]},"confidence":{"type":"number"},"confidenceLabel":{"type":"string","enum":["low","medium","high"]},"quality":{"type":"string","enum":["ok","partial","stale","insufficient_data"]},"scoredAt":{"type":"string"},"validUntil":{"type":"string"},"explanation":{"type":"object","required":["bullets","caveats","headline"],"properties":{"bullets":{"type":"array","items":{"type":"string"}},"caveats":{"type":"array","items":{"type":"string"}},"headline":{"type":"string"}}}}}}}}}},"400":{"description":"Unsupported chain or invalid address","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"address":{"type":"string"},"chain":{"type":"string"},"error":{"type":"string","enum":["invalid_address","token_not_found","unsupported_chain"]}}}}}},"404":{"description":"No token resolves at this address on any provider","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"address":{"type":"string"},"chain":{"type":"string"},"error":{"type":"string","enum":["invalid_address","token_not_found","unsupported_chain"]}}}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"const":"rate_limited"}}}}}}}}},"/resolve":{"get":{"tags":["Current capabilities"],"summary":"Resolve a ticker or address to a token","description":"Maps a $TICKER, bare symbol, or 0x / Solana address to a canonical { chain, address } so a client can navigate to the token. Public, cached, and rate limited. resolved is null when nothing matches.","parameters":[{"name":"q","in":"query","required":true,"description":"A $TICKER, bare symbol, or 0x / Solana contract address.","schema":{"type":"string","minLength":1,"maxLength":64},"example":"CORAL"}],"responses":{"200":{"description":"Resolution result (resolved is null when nothing matches)","content":{"application/json":{"schema":{"type":"object","required":["query","resolved"],"properties":{"query":{"type":"string"},"resolved":{"anyOf":[{"type":"object","required":["address","chain","source","symbol"],"properties":{"address":{"type":"string"},"chain":{"type":"string"},"source":{"type":"string","enum":["address","registry","market"]},"symbol":{"type":["string","null"]}}},{"type":"null"}]}}}}}},"400":{"description":"Missing or malformed query","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"const":"invalid_query"}}}}}}}}},"/callers/{handle}":{"get":{"tags":["Current capabilities"],"summary":"Get a caller profile","description":"Returns a caller's source-neutral profile by handle: 7d aggregate performance (tier, hit rate, mean return, networks) plus recent notable calls with the mcap at call time. Public, cached, and rate limited. Handles and aggregate metrics only; internal ids are excluded.","parameters":[{"name":"handle","in":"path","required":true,"description":"Caller handle (with or without a leading @).","schema":{"type":"string","minLength":1,"maxLength":128},"example":"cobie"}],"responses":{"200":{"description":"Caller profile","content":{"application/json":{"schema":{"type":"object","required":["evaluated","handle","hitRate24h","hits24h","meanReturn24h","platforms","recentCalls","tier","window"],"properties":{"evaluated":{"type":"integer","minimum":0},"handle":{"type":"string"},"hitRate24h":{"type":"number"},"hits24h":{"type":"integer","minimum":0},"meanReturn24h":{"type":"number"},"platforms":{"type":"array","items":{"type":"string"}},"recentCalls":{"type":"array","items":{"type":"object","required":["address","calledAt","calledMcapUsd","chain","returnPct","symbol"],"properties":{"address":{"type":["string","null"]},"calledAt":{"type":"string"},"calledMcapUsd":{"type":["number","null"]},"chain":{"type":["string","null"]},"returnPct":{"type":["number","null"]},"symbol":{"type":"string"}}}},"tier":{"type":"string","enum":["A","B","C","noise","unranked"]},"window":{"const":"7d"}}}}}},"404":{"description":"No caller by that handle","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"const":"caller_not_found"}}}}}}}}}},"webhooks":{}}