The gateway is designed so clients never waste money on a call that was going to be rejected anyway. Three layers of protection run on every request:Documentation Index
Fetch the complete documentation index at: https://docs.ryvo.network/llms.txt
Use this file to discover all available pages before exploring further.
- Rate limits - per-route caps on how often a given client can call.
- Input guardrails - strict validation on request bodies and query parameters before any upstream call or settlement.
- Replay protection - each payment authorization and each wallet sign-in can only be used once.
Rate limits
Current limits on the live deployment:| Scope | Limit | Keyed by |
|---|---|---|
Unpaid 402 challenges | 120 / min | Client IP |
| Solana RPC routes | 50 rps | Per provider:cluster:surface scope |
| Solana DAS routes | 10 rps | Per provider:cluster:surface scope |
| Tokens API routes | 30 rpm | Across the shared upstream credential |
429 Too Many Requests:
retryAfterMs milliseconds and retry.
Input guardrails
The gateway rejects overly broad or malformed requests before settlement or any upstream call. A rejected request returns400 Bad Request with a structured error body and no funds move.
Solana RPC
getBalance,getAccountInfo,getTransaction- accept exactly 1 or 2 params. First param must be a non-empty string.getAccountInfo- ifdataSliceis provided,length <= 1024.getSignaturesForAddress-limit(if provided) must be1..100.getTokenAccountsByOwner- the filter must specify exactly one ofmintorprogramId.getProgramAccounts- requires at least onedataSizeormemcmpfilter (max 4), requires adataSlicewithlength <= 256, andmemcmp.bytes <= 128characters.
Solana DAS
getAsset-params.idrequired, non-empty string.getAssetsByOwner-ownerAddressrequired,limit <= 100.searchAssets-limit <= 100,page <= 10 000.
Tokens API
search-qrequired,limit <= 50.resolve- exactly one ofreformint.curated-listmust be one of the documented values;groupBy(if provided) must beassetormint.market-snapshots-mints+addressescombined must be1..250items.variant-markets-mints+addressescombined must be1..50.variant-top-markets-limit <= 100.tickers/markets-limit <= 50,offset <= 10 000.- OHLCV routes -
intervalmust be one of1m, 5m, 15m, 1H, 4H, 1D, 1W;from <= to. - Asset-level paths -
assetIdpath param must be non-empty.
Replay protection
Paid payments
EveryPAYMENT-SIGNATURE can only be used once. Submitting the same payment header twice returns 400, the second call is not settled. This check runs before the upstream call, so no duplicate charge can ever occur.
SIWX sessions
Each SIWX signature can authorize exactly one request, and only within the 300-second expiry window declared in the challenge envelope. Past that window (or on a second use), the request is rejected.Discovery-friendly 402
x402 discovery crawlers probe routes with an empty body to read the route’s schema and price. The gateway returns 402 Payment Required on those probes, not 400, so discovery works without sending any payment or wallet signature. Paid routes never leak upstream data on an unpaid probe. Full body validation runs once your request carries a payment or sign-in header.
