Base URL
Endpoints
Requests
A round request names a source by itsapiConfig, a quorum (signaturesRequired) and the current registryVersion. You never send a sourceId or a timestamp:
- The gateway, SDK and nodes each derive the
sourceIdfrom theapiConfig. See Source ID. - The gateway stamps the round on a 100 ms grid after admitting it. See Round timing.
registryVersionmust equal the current on-chain version; a stale one gets400.
Authentication
RequestAuth
POST /v1/round/execute carries subscriptionOwner, consumerAuthority (the owner itself or one of its delegates), authTimestamp and authSig, an Ed25519 signature over:
authTimestamp is unix seconds, and the gateway rejects it with 401 when it is further from its clock than requestAuthWindowSeconds (see /v1/info; 60 on devnet). Sign a fresh one for every request. RequestAuth only authorizes use of the subscription: it is not part of the round, the signed message or any payment.
Sign-in sessions
Instead of RequestAuth, a caller can sign in once and sendAuthorization: Bearer <token>. Sessions are available when GET /v1/info reports sessionAuth: true.
GET /v1/session/challenge?address=<wallet>[&owner=<owner>]returns the Sign-In-With-X message (data.message) and its terms (data.info).- Sign the message’s UTF-8 bytes with the wallet (Ed25519).
POST /v1/sessionwith aSIGN-IN-WITH-Xheader: base64 JSON of theinfofields plusaddress,chainId,type: "ed25519",signatureScheme: "siws"and the base58signature. It answers201withdata.tokenanddata.expiresAt.- Send
Authorization: Bearer <token>onPOST /v1/round/execute, with noauthSigorauthTimestamp. DELETE /v1/sessionsigns out.
x402
POST /v1/x402/execute takes no RequestAuth: the payment is the authorization. See x402 pay-per-request.
Admission
- Subscription rounds need an active subscription, a quorum within the plan’s
max_signers, and remaining quota. Quota is counted per 30-day term across the owner and its delegates, and a delegate’s rounds also count against its ownmax_data_requests. A round that fails before completing gives its unit back. - x402 rounds need a verified payment of the quoted price to the protocol treasury.
- The Solana program does not settle rounds individually; the gateway enforces payment and quota at admission.
Response
Both execute endpoints return200 with data.attestation:
payload:value,sourceId,registryVersion,signaturesRequired,timestamp(unix ms)signature:signature,commitment,signersBitmap
value, fresh, and, in tolerance mode, aggregation. The x402 endpoint also returns a PAYMENT-RESPONSE header. Field meanings are in Rounds and attestations.
Status codes
409, 429 and capacity 503s are returned before anything is reserved or spent. Any other retry is a new round that spends quota or a payment again.