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 { "data": { ... } }. Collections use data plus a stable opaque cursor. Missing numerical data is always JSON null, never 0, "unknown" or "N/A".
{
"data": [],
"pagination": { "limit": 25, "nextCursor": null }
}
Pagination
Project, Verified 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 accepts at most 25 current items.
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 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.
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=25Returns the current organic Silex Trending ranking with deterministic rank order, algorithm version and calculation freshness. Sponsored content cannot enter this result.
{
"data": {
"algorithmVersion": "trending-v3.2.0",
"calculatedAt": "2026-08-22T10:00:00.000Z",
"stale": false,
"eligibleProjectCount": 4,
"items": [{
"rank": 1,
"chainId": 25,
"address": "0x0000000000000000000000000000000000000000",
"name": "Example",
"symbol": "EXM",
"score": 82.1
}]
}
}
rank is the primary public output and is relative to eligibleProjectCount, the current eligible Silex universe. The retained score is a backward-compatible internal momentum index, not a percentage, project rating, safety signal or recommendation. In Trending v3, 50 is neutral.
See How Silex Trending Works for methodology. Current-day unique Community Points supporters and allocated points may add a bounded boost of at most five momentum points. Supporter breadth carries 75% of that community component and point volume carries 25%. Permanent Poop, Fire, Rocket and Red Flag project reactions are informational only and never affect Trending rank. Trending does not mean Verified, safe, bullish or recommended.
Verified projects
/verifiedReturns only public LISTED projects whose current Silex projectVerified value is true. Contract verification alone is insufficient; historical Nodalis badges have no authority.
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
Silex Project Verification reflects a point-in-time technical pre-scan and manual authenticity review. It is not an audit, investment endorsement or guarantee of future behavior. Contract Verification is a separate signal.
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 organic momentum relative to the projects that currently meet Silex eligibility requirements. 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 | 60 seconds | indexedAt, market.updatedAt |
| Project / Watch / events | 30 seconds | lastObservedAt, event timestamps |
| Trending | 5 minutes | calculatedAt, stale |
| Verified | 5 minutes | verification.verifiedAt |
| Health | No store | timestamp, freshness |
| Developer tools | 60 seconds | observedAt, lastSuccessfulAt, lastAttemptAt |
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. Watch and Trending retain their separate historical cadences. 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.