Conventions
- Amounts are base-unit decimal strings.
"10000000"is 10 USDC or 10 cNGN, since both have 6 decimals. Never floats. - Addresses.
0xaddresses on EVM chains, base58 public keys and mints on Solana. Transaction hashes are0xon EVM and base58 signatures on Solana. - Chains. Every request that starts something takes a
chainId. Without one, the relay uses its primary EVM chain (Base Sepolia, 84532). Solana devnet is 103. - Ids. Quotes, RFQs, executions and limit orders are UUIDs.
- Times. ISO 8601 strings for timestamps; unix seconds for signed deadlines; unix milliseconds for the oracle band’s
at. - Errors. A JSON body
{ "error": "<reason>", ... }with a 4xx or 5xx status. See Errors.
Rate limits
Past a budget the relay answers
429 rate_limited, or 429 too_many_outstanding_rfqs for the RFQ cap.
The swap flow
1
Read the configuration
GET /v1/config lists every chain with its contracts, tokens and minimums, and whether taker proofs are required.2
Ask for a quote
POST /v1/quotes with the pair, the size and the taker. The response carries the terms and the EIP-712 typed data to sign.3
Sign
The taker signs
typedData with eth_signTypedData_v4. On Solana the client rebuilds and checks the transaction, then signs it.4
Submit
POST /v1/executions with the quote id and the signature. The keeper submits and pays gas.5
Follow it
GET /v1/quotes/:id until status is settled and final is true.Reading the network
GET /v1/health, /v1/corridors, /v1/rates, /v1/stats, /v1/feed, /v1/nodes and /v1/resolvers
are public and unauthenticated. They are what the web app’s explorer reads.
Node WebSocket
Resolver nodes speak a separate WebSocket protocol on/ws/node. It is documented under
Node WebSocket; integrators do not need it.
