---
title: "Send a signed Solana transaction RAVN must check or land (a TRANSACTION carrying `submit`: Layerswap memo payments and Jupiter orders, except one carrying your fee under Jupiter's 50 bps minimum; broadcastViaRavn quotes only)"
method: POST
path: "/api/v1/submit-transaction"
tags: ["Swap"]
---

# Send a signed Solana transaction RAVN must check or land (a TRANSACTION carrying \`submit\`: Layerswap memo payments and Jupiter orders, except one carrying your fee under Jupiter's 50 bps minimum; broadcastViaRavn quotes only)

`POST /api/v1/submit-transaction`

## Request

- Base URL: `https://app.ravn.exchange`
- URL: `https://app.ravn.exchange/api/v1/submit-transaction`
- Auth: one of:
  - API key in header `x-api-key`
  - none

## Request body

- object
  - `quoteToken` string, required: The quoteToken from the /v1/execute response whose transaction carries `submit` (not the one from /v1/quote).
  - `signedTransaction` string, required: That response's `transaction.serialized` after your user's wallet signed it (a partial signature where it names a second signer, e.g. Jupiter's market maker), base64, otherwise unchanged.

## Response `200`

Checked and sent (Jupiter: landed; allow the call up to 2 minutes) — txHash is the Solana signature; poll POST /api/v1/status with execute's statusRef, or with this txHash when execute gave none. Posting the same signed transaction again is safe and answers the same txHash once it has landed.

- object
  - `data` object
    - `txHash` string, required
  - `meta` Meta
    - `requestId` string, required
    - `version` string, required

## Other responses

- `400`: Invalid request, a quoteToken with nothing to submit, a signed transaction other than the one execute returned (Jupiter: any change to it), or one that no longer pays Layerswap the way it matches deposits (nothing was sent)
- `401`: x-api-key present but invalid
- `422`: ORDER_REJECTED: Solana refused the transaction in preflight (e.g. expired blockhash, too little SOL), or Jupiter refused it (an expired order or market-maker quote, a signature missing, the maker declined) and it hasn't landed; nothing was sent. Get a fresh quote.
- `502`: BUILD_FAILED: Solana or Jupiter couldn't be reached, or Jupiter couldn't confirm the swap. Before the check nothing was sent; when sending, it may still land — check `error.details.txHash` (or the wallet, when absent) before signing a new one. Posting the same signed transaction again is safe.

---

[API](https://skmtc.dev/ravn/apis/ravn-swap-api.md) · [All operations](https://skmtc.dev/ravn/apis/ravn-swap-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ravn/apis/ravn-swap-api/revisions/f1c5a0c63392?raw)
