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_KEYBody
| Field | Type | Required | Description |
|---|---|---|---|
signedTransaction | string | Yes | Base64-encoded signed VersionedTransaction |
quoteId | string | Yes | Quote 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
| Field | Type | Description |
|---|---|---|
signature | string | Base58 transaction signature |
status | string | Always "submitted" on success |
quoteId | string | Echo 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
| Status | Description |
|---|---|
400 | Invalid transaction or not signed |
401 | Missing or invalid API key |
404 | Quote not found (expired or already used) |
410 | Quote expired (30s TTL) |
429 | Rate limit exceeded |
502 | Jito submission failed |
Submission Flow
- Transaction is deserialized and verified
quoteIdis checked (exists, not expired, not already used)- Fee instruction is verified (present, correct amount, correct recipient)
- Transaction is serialized to base58
- Sent to all 5 Jito
sendTransactionendpoints simultaneously - Signature returned immediately (fire-and-forget)
- Quote is consumed (cannot be reused)
Rate Limit
10 requests per minute per API key.
