Quick start
The base URL is /api/v1. Public API v1 requires no API key. It accepts only GET, HEAD and CORS preflight OPTIONS requests.
curl /api/v1/projects
Local development uses the current local origin. Production examples automatically use the deployed page origin; no localhost host is baked into this guide.
Browser project pages use /token/cronos/<contract>. That human-facing route is intentionally separate from the unchanged machine endpoint /api/v1/projects/25/<contract>.
Response conventions
Singular resources use a data wrapper. Paginated project and event collections include data and a stable opaque cursor. Trending and liquidity endpoints return structured objects inside data. Missing numerical data is JSON null, never an invented zero or text placeholder.
{
"data": [],
"pagination": { "limit": 25, "nextCursor": null }
}
Pagination
Project, Project Verification and event collections default to 25 records and accept at most 100. Pass the returned opaque nextCursor unchanged to retrieve the next deterministic page. Trending returns at most 10 items; a larger accepted limit value does not increase that result cap. See the Trending methodology.
Rate limit and CORS
Anonymous clients receive 60 requests per minute per IP by default. Deployments may configure this quota. Responses include RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset; a 429 also includes Retry-After. Only public /api/v1 read routes send Access-Control-Allow-Origin: *. Cookies and credentials are neither required nor permitted by this policy.
Projects
/projectsLists only editorially LISTED projects. Optional filters: chainId=25, verified=true|false (the Project Verification state, not Contract Verification), and the normalized primary dex identifier.
/projects/{chainId}/{address}Returns one project by canonical chain ID and EVM contract. Cronos chain ID 25 is the only supported chain in v1. Private listing states return the same 404 as an unknown record.
{
"data": {
"chainId": 25,
"address": "0x0000000000000000000000000000000000000000",
"name": "Example",
"symbol": "EXM",
"decimals": 18,
"totalSupply": "1000000000000000000000000",
"supply": {
"decimals": 18,
"totalSupplyRaw": "1000000000000000000000000",
"deadSupplyRaw": "150000000000000000000000",
"burnAdjustedSupplyRaw": "850000000000000000000000",
"circulatingSupplyRaw": null,
"source": "CRONOS_RPC",
"state": "KNOWN",
"observedAt": "2026-08-22T10:30:00.000Z",
"blockNumber": "38765432",
"policyVersion": "CRONOS_DEAD_ONLY_V1"
},
"market": {
"priceUsd": 0.0042,
"priceNative": 0.00001,
"marketCapUsd": 3100,
"marketCapMethod": "PROVIDER_REPORTED",
"marketCapConfidence": "PROVIDER_REPORTED",
"estimatedMarketCapUsd": 3570,
"estimatedMarketCapUsdState": "KNOWN",
"estimatedMarketCapUsdUsingLastKnownGood": false,
"estimatedMarketCapUsdObservedAt": "2026-08-22T10:30:00.000Z",
"estimatedMarketCapMethod": "ONCHAIN_BURN_ADJUSTED_SUPPLY_X_PRICE",
"estimatedMarketCapConfidence": "ESTIMATE",
"fdvUsd": 4200,
"totalLiquidityUsd": 182000,
"totalVolume24hUsd": 41000,
"marketCount": 3,
"aggregateComplete": true,
"missingMarketCount": 0,
"liquidityUsd": 182000,
"volume24hUsd": 41000,
"primaryDex": "vvs",
"primaryPair": "0x0000000000000000000000000000000000000001",
"primaryMarket": {
"dex": "vvs",
"name": "VVS Finance",
"symbol": "VVS",
"pairAddress": "0x0000000000000000000000000000000000000001",
"liquidityUsd": 140000,
"volume24hUsd": 30000
},
"updatedAt": "2026-08-22T10:30:00.000Z",
"source": "DEXSCREENER"
},
"verification": {
"projectVerified": false,
"contractVerified": true,
"verifiedAt": null,
"reportId": null
},
"watch": null,
"trending": null,
"indexedAt": "2026-08-22T10:30:00.000Z"
}
}
marketCapUsd, estimatedMarketCapUsd and fdvUsd are separate values. marketCapUsd is never populated from FDV or from Silex's estimate; inspect marketCapMethod and marketCapConfidence to distinguish verified from provider-reported provenance. estimatedMarketCapUsd is an upper-bound estimate calculated from the indexed price and on-chain total supply minus the recognized irreversible burn address. It is not verified circulating market cap. A client may use it when marketCapUsd is null, but must visibly label the value Estimated or Est. and must not rewrite or cache it as marketCapUsd.
The optional supply object preserves exact raw integer strings for totalSupplyRaw, deadSupplyRaw and burnAdjustedSupplyRaw, plus decimals, source, state, observation time, block number and policy version. circulatingSupplyRaw remains null unless circulating supply is independently verified; burn-adjusted supply is never presented as verified circulating supply. The backward-compatible totalSupply field also remains an exact raw integer string.
totalLiquidityUsd and totalVolume24hUsd sum each unique supported, known, non-removed Cronos pool with a current or explicitly retained safe value once. marketCount is the backward-compatible supported known-market count. detectedMarketCount is the full retained canonical inventory; includedMarketCount contributes to the aggregate, while excludedMarketCount remains known but is excluded, including unsupportedDexMarketCount. The invariant is detectedMarketCount = includedMarketCount + excludedMarketCount. Consult the state/count fields when inventory is unavailable. Price, market capitalization and FDV are never summed or naively averaged. The v1 aliases liquidityUsd and volume24hUsd remain available and explicitly carry the same token-total values. Pair-specific primary values remain under primaryMarket.
aggregateComplete=false means one or more detected observations were stale or lacked a required metric. Missing values remain null; Silex does not silently convert unknown data to zero. Normalized USD values and percentages are JSON numbers.
Liquidity
These read-only routes expose Silex's tracked Cronos liquidity observations. Values can be partial, delayed or unavailable; a previous safe observation may be returned with its observation time. A missing comparison is not zero.
/liquidity-flows?window=24h|7dReturns { data: { window, summary, inflows, outflows, migrations, newPools, dexFlows } }. The optional window accepts 24h or 7d and defaults to 24h. Sections are bounded and derived from stored observations; summary coverage uses unique chain/pair identities and comparable history.
/projects/{chainId}/{address}/liquidity-distributionReturns { data: LiquidityDistribution } for a publicly listed Cronos project (chain ID 25). It has no query parameters. The object includes current distribution by DEX and tracked pools with 24-hour and 7-day comparisons; the quality value distinguishes COMPLETE, PARTIAL and DEGRADED observations. An unlisted project returns 404. See Market data and freshness for interpretation.
Both liquidity routes use Cache-Control: public, max-age=60, stale-while-revalidate=120.
Watch Intelligence
/projects/{chainId}/{address}/watchReturns the current public Watch state or null until a substantive current-epoch baseline exists. Status is one of NORMAL, CAUTION, HIGH_RISK or INACTIVE. This project-level state is distinct from event severity.
{
"data": {
"status": "CAUTION",
"calculatedAt": "2026-08-22T10:30:00.000Z",
"lastObservedAt": "2026-08-22T10:29:00.000Z",
"summary": "1 active Watch event.",
"activeReasons": [{
"eventId": "watch_evt_example",
"severity": "NOTABLE",
"summary": "Liquidity decreased 28.4%."
}]
}
}
/projects/{chainId}/{address}/eventsReturns structured public events. Optional filters are severity, type and ISO 8601 since. Internal source-degradation events and provider diagnostics are never returned. The human-readable summary accompanies—not replaces—the stable machine fields.
{
"data": [{
"id": "watch_evt_example",
"type": "LIQUIDITY_DECREASE",
"severity": "NOTABLE",
"status": "OPEN",
"detectedAt": "2026-08-22T10:30:00.000Z",
"summary": "Liquidity decreased 33.82%",
"previousValue": 48200,
"currentValue": 31900,
"percentageChange": -33.8
}],
"pagination": { "limit": 25, "nextCursor": null }
}
Event severity
| Severity | Meaning |
|---|---|
INFO | Meaningful but relatively small observed change. |
NOTABLE | Material observed change worth attention. |
MAJOR | Large observed change crossing a major configured threshold or structural rule. |
CRITICAL | Extreme observed change crossing Silex's highest configured threshold. |
Severity belongs to one event, not to the project permanently. A project may be CAUTION because it has a current MAJOR liquidity event. Public state reasons are ordered by event severity, recency and deterministic event ID.
The website uses /token/cronos/<contract>#watch-event-<event-id> to open an exact expanded event. That fragment is browser navigation and does not change the API route.
Trending
/trending?limit=10Returns at most 10 public Silex Listings with deterministic rank order, algorithm version and calculation freshness. The optional integer limit accepts 1–25 and defaults to 25 at the request layer; the runtime always caps returned items at 10. Sponsorship does not change the ranking.
{
"data": {
"algorithmVersion": "trending-v5.0.0",
"calculatedAt": "2026-08-22T10:00:00.000Z",
"stale": false,
"eligibleProjectCount": 4,
"items": [{
"rank": 1,
"chainId": 25,
"address": "0x0000000000000000000000000000000000000000",
"name": "Example",
"symbol": "EXM",
"momentumState": "ACTIVE"
}]
}
}
rank is relative to eligibleProjectCount, the public Silex listing universe. Internal numeric scores are not published. A rank is not a project rating, safety signal or recommendation.
See How Silex Trending Works for methodology. Recent Community Points votes, unique Silex profile views, price movement in either direction and trading volume contribute to a relative internal ranking of public Listings. Missing market intervals contribute nothing without excluding a Listing. Permanent Poop, Fire, Rocket and Red Flag project reactions are informational only and never affect Trending rank. Trending does not indicate Contract Verification or Project Verification and is not a safety signal or recommendation.
Project Verification results
/verifiedReturns only public Listings whose current Silex projectVerified value is true. Contract Verification alone is insufficient. For canonical distinctions, see Listing, Contract Verification and Project Verification.
Developer infrastructure projections
These public, read-only dashboard endpoints sit outside the versioned project-data base URL. They expose normalized Silex observations and never accept a provider URL, API key or write action.
/api/silex/network/statusCanonical RPC-consensus head plus a recent bounded block sample.
/api/silex/gas/statusObserved eth_gasPrice, 1h/24h history, relative trend and estimated costs.
/api/silex/providers/statusPublic-safe upstream status derived from real Silex collector and RPC observations.
/api/silex/dex-liquidityUnique persistent pool aggregation with current/LKG liquidity and fresh pair-level volume.
Health and OpenAPI
/healthReturns minimal API status and public-safe project, Watch and Trending freshness. It excludes processes, paths, OAuth configuration and provider diagnostics.
/api/silex/rpc/statusReturns the public Cronos RPC Status projection used by the RPC Status dashboard: derived network head, current endpoint classifications, block lag, Silex-measured response time, 24-hour availability and bounded recent history. Internal failure diagnostics and database rows are excluded.
The OpenAPI 3.1 contract is available at /openapi.json and /developers/openapi.json.
Data semantics
Listing
If a project is returned, it is publicly listed. Private editorial states are never represented in v1.
Verification
Contract Verification and Project Verification are separate states, and neither is equivalent to Listing. Project Verification reflects a point-in-time technical pre-scan and manual authenticity review. It is not an audit or guarantee of future behavior. See the canonical verification explanation.
Watch
Silex Watch monitors observable project, market and on-chain state over time and records meaningful changes. Event severity and project Watch state are separate concepts. Watch does not classify intent, assign a permanent project rating or provide second-by-second monitoring.
Trending
Trending orders recent attention and activity across public Silex listings. It is separate from listing, community leaderboard rank, verification and Watch risk state and is not a universe-wide Cronos ranking. Public API v1 does not expose supporter identities or individual Community Points allocations; the website-only signed-in mutation surface is not part of this read-only API contract.
Freshness and caching
| Surface | Browser/shared cache | Freshness field |
|---|---|---|
| Project list / project detail | max-age=0, must-revalidate | indexedAt, market.updatedAt |
| Watch / Watch events | max-age=30, stale-while-revalidate=60 | lastObservedAt, event timestamps |
| Trending / Project Verification | max-age=0, must-revalidate | calculatedAt, stale; verification.verifiedAt |
| Liquidity flows / distribution | max-age=60, stale-while-revalidate=120 | observedAt |
| Health | no-store | timestamp, freshness |
These are response Cache-Control directives, not promises about source refresh cadence. Health responses are not stored. Other developer infrastructure routes have endpoint-specific cache headers, so this table does not assign them one shared duration. Current market fields come from Silex's normalized multi-pair provider observation, refreshed in bounded batches approximately every five minutes. Token liquidity and volume are aggregated across unique valid current Cronos markets; price remains tied to the canonical primary/reference market. market.updatedAt is the actual successful observation time and is not advanced on provider failure. Consumers should inspect timestamps and preserve null when data is unavailable rather than inferring zero.
Errors
Expected status codes are 400 for invalid input, 404 for a non-public or missing resource, 429 for quota exhaustion, 500 for an unexpected failure and 503 when a public data surface is temporarily unavailable. Unexpected failures receive a safe request ID; stack traces are never returned.
{
"error": {
"code": "NOT_FOUND",
"message": "Project not found.",
"requestId": "req_example"
}
}
API v1 and compatibility
API v1 is the first stable public contract. Compatible optional fields and endpoints may be added. Breaking renames or removals require a future major route such as /api/v2.
API keys are not required in v1. The anonymous consumer/rate layer can later resolve developer keys to higher quotas without changing resource schemas. These canonical identifiers, structured events, stable enums and UTC timestamps are also the machine-readable foundation for future Silex Agents or MCP tooling; those products are not implemented today.