Read-only API
Endpoints, pagination, amount formats and observation context for applications and analytics.
On this page
The API reads; wallets transact
The public read API exposes market and account state under /v1. It does not hold a wallet or execute a user’s trade. Obtain its generated schema at /v1/openapi.json on the configured API origin. Do not confuse the read API with the hosted app’s private provider-quote handler or authenticated profile-write endpoints.
GET /v1/launches?sort=age&limit=20
GET /v1/tokens/{tokenAddress}
GET /v1/markets/{hook}/{poolId}
GET /v1/openapi.jsonEndpoint reference
| Endpoint | Response purpose |
|---|---|
GET /v1/launches | Paged launch/migrated feed; sort by age, marketCap or volume. |
GET /v1/openings | Approved migration openings with reference pool, status and timing. |
GET /v1/tokens/{address} | Resolve token identity to its canonical market. |
GET /v1/markets/{hook}/{poolId} | Metadata, price, backing, floor, coverage, treasury and migration details. |
…/rates | Models, current rates, surcharges and smoothed average. |
…/roles | Creator, recipient, Safe roles and prepared operations. |
…/route | Actions, held allocations, results and reward configuration. |
…/trades, …/prices | Paged trade/price history; prices support a Unix-seconds from filter. |
…/rewards | Posted rounds, publication CIDs, winners and commitment context. |
…/rewards/payments, …/rewards/credits | Paid and reserved reward records. |
GET /v1/accounts/{address}/launches | Markets of which the account is currently creator. |
…/accounts/{address}/payments, …/credits, …/trades | Cross-market account history and retained credits. |
Pagination and chain observations
Use limit up to the configured maximum and pass the returned nextCursor unchanged to request the next page. Never infer that the first page contains every market. Keep each response’s observation, indexer block/lag and confirmation flags with its data.
Current market reads are pinned to an observation block; feeds/history come from indexed events. A recent indexed record can be available before finalization. Confirmation uses the chain’s finalized block, not a local elapsed-time assumption. Raw token amounts and large numeric columns are string-encoded to preserve precision.
let cursor: string | null = null;
do {
const url = new URL('/v1/launches', API_ORIGIN);
url.searchParams.set('limit', '20');
if (cursor) url.searchParams.set('cursor', cursor);
const response = await fetch(url);
if (!response.ok) throw new Error('Read API unavailable');
const page = await response.json();
consume(page.items, page.observation, page.indexer);
cursor = page.nextCursor;
} while (cursor);Caching, errors and 24-hour statistics
Successful responses carry configured public cache/stale headers. Errors use no-store; rate limiting is separate from response correctness. Retry transient reads with appropriate backoff rather than turning an error into an empty successful list.
A market path without its hook is rejected because a bare pool ID is ambiguous. API 24-hour market statistics use indexed history and their documented hour buckets; Portfolio’s weighted price movement uses current holdings and historical prices. They are related displays with different measurement definitions.
Skip to documentation