Skip to main content
Only for a TRANSACTION from /execute that carries submit: { "url": "/api/v1/submit-transaction" }, which happens only on quotes made with broadcastViaRavn: true (see /quote). Don’t broadcast that transaction yourself. Sign transaction.serialized with the user’s wallet, without sending it, and post it here. RAVN checks it still pays Layerswap the way Layerswap matches deposits, then sends it. Broadcast every transaction without submit yourself, as usual. The check exists because Layerswap matches these payments by instructions that must stay top-level in the transaction, such as its memo. A smart-contract wallet that wraps them in its own program sends the same tokens with nothing Layerswap can match, and they sit at Layerswap. Nothing is sent unless the check passes. /execute simulates this payment when it builds it, so the wallet must already hold the amount and SOL for fees, or /execute returns 502 BUILD_FAILED. Sign and post promptly: the transaction’s blockhash expires about a minute after /execute.

Request

string
required
The quoteToken returned by /execute with the transaction that carries submit, not the one from /quote.
string
required
That response’s transaction.serialized after the user’s wallet signed it, base64. Sign it as returned: a transaction with a different fee payer or blockhash is refused.
No API key required (see Authentication for the optional higher-limit tiers).

Response

string
The Solana transaction signature. Poll /status with the statusRef from /execute.
Posting the same signedTransaction again is always safe: if it already landed, you get 200 with its txHash, so retrying after a lost response or an error never pays twice.

Errors

If the quoteToken came from a sandbox quote, the checks run as usual but nothing is sent: it returns a synthetic txHash immediately.