Skip to main content
RAVN spans three settlement models. POST /execute returns exactly one of them, tagged by executionType. Your integration reads that single field and branches — nothing else about the flow changes.

TRANSACTION

Sign & broadcast the returned transaction.
Across · Relay · Mayan · Jupiter

SIGNATURE

Sign typed data — no gas, no send. RAVN submits it.
0x Gasless · Bebop · CoW

DEPOSIT

Send the origin asset to an address.
NEAR Intents · Rift (BTC)

The payloads

{
  "executionType": "TRANSACTION",
  "transaction": { "to": "0x…", "data": "0x…", "value": "0", "chainId": 1 }
}
{
  "executionType": "SIGNATURE",
  "typedData": { },
  "approvalData": { },
  "submit": { "url": "/api/v1/submit-signature" }
}
{
  "executionType": "DEPOSIT",
  "deposit": { "address": "0x…", "amount": "1000000000000000000", "chainId": 1 },
  "statusRef": "0x…"
}

Branch logic

switch (res.data.executionType) {
  case "TRANSACTION": await wallet.sendTransaction(res.data.transaction); break;
  case "SIGNATURE":   { const sig = await wallet.signTypedData(res.data.typedData);
                        await submitSignature(quoteToken, sig); } break;
  case "DEPOSIT":     await wallet.send(res.data.deposit.address, res.data.deposit.amount); break;
}
A DEPOSIT can be fulfilled automatically (build a wallet transfer to the address, as an EVM/Solana wallet does) or manually (show the address + a QR, as a native-BTC send does). Both are the same execution type — you choose the UX.