Skip to content

POST /v1/swap

Submit a signed transaction via Jito bundle endpoints.

Request

http
POST /v1/swap
Content-Type: application/json
X-API-Key: YOUR_API_KEY

Body

FieldTypeRequiredDescription
signedTransactionstringYesBase64-encoded signed VersionedTransaction
quoteIdstringYesQuote ID from /v1/swap/build response (30s TTL)

Example

json
{
  "signedTransaction": "AQAAAAABAAEDhQ...base64...==",
  "quoteId": "q_42_1712000000000"
}

Response

200 OK

json
{
  "signature": "5Kx9abcdef...3nF",
  "status": "submitted",
  "quoteId": "q_42_1712000000000"
}

Response Fields

FieldTypeDescription
signaturestringBase58 transaction signature
statusstringAlways "submitted" on success
quoteIdstringEcho of the quote ID used

WARNING

status: "submitted" means the transaction was sent to Jito. It does not guarantee on-chain confirmation. Verify the signature via Solscan or getSignatureStatuses.

Errors

StatusDescription
400Invalid transaction or not signed
401Missing or invalid API key
404Quote not found (expired or already used)
410Quote expired (30s TTL)
429Rate limit exceeded
502Jito submission failed

Submission Flow

  1. Transaction is deserialized and verified
  2. quoteId is checked (exists, not expired, not already used)
  3. Fee instruction is verified (present, correct amount, correct recipient)
  4. Transaction is serialized to base58
  5. Sent to all 5 Jito sendTransaction endpoints simultaneously
  6. Signature returned immediately (fire-and-forget)
  7. Quote is consumed (cannot be reused)

Rate Limit

10 requests per minute per API key.