Versions
The API lives at/api/v1. Its version is the date of the latest entry below, for example
2026-11-09. Every response sends it in the ravn-version header and meta.version, and the
OpenAPI spec carries it as info.version.
What can change in v1
Within/v1 the API only grows. Expect:
- New endpoints, new optional request fields and new response fields. Ignore fields you don’t know.
- New error codes. Show the
messageof acodeyou don’t know. - New
statusvalues. Treat one you don’t know likeexpired(see/status). - New chains, venues and tokens, listed on Supported chains & venues.
/v1 we don’t remove or rename a field or endpoint, change a field’s type or meaning, make a
request field required, or send an executionType you haven’t opted into (AUTHORIZE needs
authorizeSteps). Every change to the API’s shape is checked against these rules before it ships.
Deprecations
When something has to go, we:- Post it here at least 90 days before it stops working, with that date.
- Mark it
deprecatedin the OpenAPI spec and the SDK, so your editor strikes it through. - Send the
DeprecationandSunsetheaders on every call that uses it.
/v2
A/v2 comes only for a change that can’t be made by adding. /v1 keeps working for at least 12
months after /v2 ships.
Changes
ravn-versionandmeta.versionname the API’s version: the date of its latest change. They said2024-01before.- The OpenAPI spec describes the streamed prices of
/quote(PriceDTO) and the answer of/recover(RecoverDTO). - A streamed
/quotesendspreviewlines: an early price from RAVN’s own multi-step route, before itssettled.
- A pair RAVN doesn’t swap answers
400 INVALID_REQUESTwith the reason, not500 INTERNAL.
/v1accepts thex-ravn-sdkheader from browsers: the SDK names its version in it.
transaction.gasLimit, andgasLimiton the swap’s entry incalls: send the EVM transaction with it. See/execute.
- Hinkal private swaps:
authorizeStepson/quote,AUTHORIZEsteps at/execute, andPOST /recoverfor a failed one.
- Public and secret keys:
POST /keys/secret, and403 FORBIDDENfor a public key where the secret key is needed. A key from before keeps full rights until 1 December 2026. expectedOutputAmounton the quote and each alternative,slippage.expectedShortfallBps, andpickableon alternatives.approval.spendernames the contract the approval’s calldata approves.
"stream": trueon/quote: each venue’s price as it lands.quoteTokenis usually a short id./executeprices a quote again up to 10 minutes pastexpiresAt, and answers410 QUOTE_EXPIREDwhen it no longer meets the minimum shown.
excludeVenuesandonlyVenuescover every step of a multi-step route.
- Executions come ready to sign:
callsandbatchon EVM,deposit.psbtfor Bitcoin, anddeposit.transactionfor a Solana deposit that carries your fee.
swapIdon every execution, theIdempotency-Keyheader on/execute, and webhooks for every final swap.timeoutMson/quote: how long the race waits for venues.approvalcomes only when the wallet needs a new allowance, and carriesresetwhen the token needs its allowance set to 0 first.sandbox: trueon the execution of a sandbox quote.- Rate-limit headers and
503 UNAVAILABLE.
onlyVenueson/quote: race only the venues you list.
feeon an execution: your fee, when the route collects it beside the swap or the deposit. See Collecting your fee.- A missing address at
/executeanswers400 INVALID_REQUESTnaming the field, not502 BUILD_FAILED.
broadcastViaRavnon/quoteandPOST /submit-transaction: more Solana routes, sent through RAVN.allowNoMinimumon/quote: let routes with no minimum race beside yourslippageBps.- A
refundAddressgiven at/executeanswers400 INVALID_REQUESTwhere the venue would drop it.
- Every alternative carries its own
expiresAt, andexpiresAtis always a real time. txHashon/status: the transaction that proves your fee./submit-signatureanswers a venue’s refusal with422 ORDER_REJECTEDand its rate limit with503 VENUE_RATE_LIMITED, not500.
/executeanswers502 BUILD_FAILEDwhen the venue can’t build the swap, and503 VENUE_RATE_LIMITEDwhen it is rate-limiting RAVN, not500.
slippage.noMinimum: the route holds no guaranteed minimum. Alternatives carryslippagetoo.

