Public

Config, Status & Prices

Key-free discovery routes (60 requests a minute per IP) and the price tables. Call GET /api/v1/config before anything else: the network, every contract, the mains and their pair assets, the path rules and the feature switches.

Rendered from /openapi.json. Amounts are raw decimal strings in the units of the asset named beside them; USD values are USD × 1e18, null when unknown, with a usdSource. Quotes are hints: the contract is the final check.

GET
/api/v1/config
Deployment config. Everything an SDK or agent needs before its first call: the network, every contract, the mains with their pair assets, the path rules, the create-form limits, the market-approval EIP-712 domain and the feature switches. No key (discovery tier, 60 a minute per IP). No RPC, no database.
Auth: None
FieldTypeDescription
apiVersionstring
networkstring
chainIdinteger
chainNamestring
nativeSymbolstring
deploymentBlockinteger | null
contractsobjectContract name to EIP-55 checksummed address; null when not deployed on this network.
legacyLoanHubsstring[]
defaultMainstringKey of the main the dapp opens on.
mainsobject[]
bondobject
pathRulesobjectThe ASwap route rules. "pairAsset" = the main's quoteToken, "token" = a factory token whose quoteToken is that main.
createLimitsobject
eip712object
featuresobjectFeature switches: which products are live on this network.
discoveryobject
200 Config429 Rate limit exceeded (60 a minute per IP). X-RateLimit-* headers on every answer.
GET
/api/v1/status
Index status. Lets an agent tell stale data from no data: the chain head, the newest synced block, the lag between them and the transactions whose projection is incomplete. No key (discovery tier, 60 a minute per IP). Cached 10 s.
Auth: None
FieldTypeDescription
networkstring
chainIdinteger
headBlockinteger | null
headTimeinteger | nullUnix seconds.
lastSyncedBlockinteger | nullNewest synced tx from any source (dapp, sdk, backfill). An on-demand sync of a fresh tx moves it to the head, so it does not measure lag.
lastSyncedTimeinteger | nullUnix seconds.
lastBackfilledBlockinteger | nullThe sync worker's cursor: the newest block it has posted a tx from to POST /api/v1/sync, including txs another caller synced first. Null before its first post.
lastBackfilledTimeinteger | nullUnix seconds of lastBackfilledBlock. Null when it cannot be read.
lagBlocksinteger | nullheadBlock - lastBackfilledBlock (the sync worker's lag). Null when either is unknown.
lagSecondsinteger | nullheadTime - lastBackfilledTime. Null when either is unknown. A quiet chain also raises it: read it with partialTxs and rawTxs.
partialTxsinteger
rawTxsinteger
unconfirmedTxsinteger
featuresobjectFeature switches: which products are live on this network.
checkedAtintegerUnix seconds.
200 Status. X-RateLimit-* headers on every answer (200, 429, 503).429 Rate limit exceeded (60 a minute per IP). X-RateLimit-* headers on every answer.503 Status unavailable (status_unavailable)
GET
/contracts.json
Contract addresses. The network, chain id and contract addresses of this deployment, with links to /api/v1/config (`config`) and /api/v1/status (`status`). No key. Addresses are checksummed. Addresses are EIP-55 checksummed here and in /api/v1/config only; every data route answers lower-case addresses.
Auth: None
FieldTypeDescription
chainstringThe network's display name.
chainIdinteger
usdbstringDeprecated single-main key: the default main's pair asset. Use mains[].pairAsset.
swapstring
loanHubstring
mainTokenstringDeprecated single-main key: the default main. Use mains[].main.
stakingstringDeprecated single-main key: the vault (ONE vault serves every main). Use mains[].vault.
factorystring
vestingstring
taxesstring
leveragestring
marketTradingstringThe public market host.
resolverstring
privateMarketstringThe private market host.
readerstringTrancheReader.
trancheReaderstringTrancheReader (same as reader).
redemptionReaderstring
erc8004Registrystring
upDownstring
mainLensstringMainLens (the read helper of the mains: partial-sell amounts and other views).
networkstringThe network key.
deploymentBlockinteger
liquidatorstring
hopExecutorstring
bondTokenstring
bondDecimalsinteger
wrappedNativestring
mainsobject[]
tranchestringThe public market host (same as marketTrading).
tranchePrivatestringThe private market host (same as privateMarket).
configstringPath of GET /api/v1/config.
statusstringPath of GET /api/v1/status.
200 Contracts429 Rate limit exceeded (60 a minute per IP). X-RateLimit-* headers on every answer.
GET
/.well-known/agent.json
Agent manifest. Agent discovery manifest. No key. Its URLs use the site's fixed base URL, never the request host. Static file: no rate limit.
Auth: None
FieldTypeDescription
schema_versionstring
namestring
descriptionstring
urlstring
logostring
docsobject
apiobject
chainobject
agent_registrationobject
integrationsobject
socialobject
200 Manifest
GET
/.well-known/ai-plugin.json
AI plugin manifest. AI plugin manifest. No key. Its URLs use the site's fixed base URL, never the request host. Static file: no rate limit.
Auth: None
FieldTypeDescription
schema_versionstring
name_for_humanstring
name_for_modelstring
description_for_humanstring
description_for_modelstring
authobject
apiobject
logo_urlstring
contact_emailstring
legal_info_urlstring
200 Manifest
GET
/api/v1/prices
USD prices of the pair assets. One row per pair asset, bond asset and native coin: its USD price and where it came from.
Auth: API Key
FieldTypeDescription
dataobject[]
networkstring
chainIdinteger
asOfstring
data[].assetstring
data[].symbolstring | null
data[].decimalsinteger | null
data[].rolestring (pair | bond | native)[]
data[].mainsstring[]
data[].priceUsdE18UsdE18 | nullUSD x 1e18 as a decimal string. null = unknown (never 0, never 1:1). Comes with a usdSource.
data[].sourcestring (fixed | feed | hop | offchain) | nullThe configured price source kind; null when none is configured.
data[].usdSourceUsdSource | nullWhere a USD value came from; null when the value is null. Details per pair asset in GET /api/v1/prices.
data[].feedstring | null
data[].maxAgeSecinteger | null
data[].updatedAtstring | nullThe time the price is for; null when there is no fresh price.
data[].sourceRefstring | null
data[].staleboolean
200 Prices401 Missing or invalid API key429 Rate limit exceeded
GET
/api/v1/prices/tokens
Token prices. Current prices of up to 100 BASIS tokens. An address with no Sync answers found: false with null prices, and so does an invite-only market the caller may not see (GET /api/v1/markets explains the rule).
Auth: API Key
ParamTypeDescription
addresses *stringComma list, 1 to 100 addresses.
FieldTypeDescription
dataobject[]
chainIdinteger
data[].addressstring
data[].foundboolean
data[].mainstring | null
data[].pairAssetstring | null
data[].pairDecimalsinteger | null
data[].priceE18E18 | nullPair per whole token.
data[].priceMainE18E18 | nullMain per whole token.
data[].priceUsdE18UsdE18 | nullUSD x 1e18 as a decimal string. null = unknown (never 0, never 1:1). Comes with a usdSource.
data[].usdSourceUsdSource | nullWhere a USD value came from; null when the value is null. Details per pair asset in GET /api/v1/prices.
data[].blockinteger | null
data[].timestring | null
200 Prices400 addresses missing, malformed or more than 100 (bad_param)401 Missing or invalid API key429 Rate limit exceeded