diff --git a/api-reference/rpc/http/sendbundle.mdx b/api-reference/rpc/http/sendbundle.mdx new file mode 100644 index 00000000..3a8d206f --- /dev/null +++ b/api-reference/rpc/http/sendbundle.mdx @@ -0,0 +1,24 @@ +--- +title: "sendBundle" +"og:title": "sendBundle Solana RPC Method" +sidebarTitle: "sendBundle" +description: "Submit a Jito bundle for atomic, ordered transaction execution on Solana." +"og:description": "Submit a Jito bundle of Solana transactions for atomic, ordered execution on-chain." +openapi: "/openapi/rpc-http/sendBundle.yaml POST /" +--- + +## Request Parameters + + + Array of encoded, serialized transactions to execute as a bundle. Maximum of 5 transactions. Transactions are executed sequentially and atomically — if any transaction fails, the entire bundle is dropped. One of the transactions must include a tip to a Jito tip account. + + + + The encoding used for the transaction strings. + - `base58` + - `base64` + + +## Rate Limits + +`sendBundle` is only available on **Business** plans and higher, and is currently limited to **5 requests per second**. If you need higher throughput, [contact our sales team](https://www.helius.dev/contact) to discuss custom limits. diff --git a/docs.json b/docs.json index 4ae82e6f..10344b53 100644 --- a/docs.json +++ b/docs.json @@ -434,6 +434,7 @@ "api-reference/rpc/http/isblockhashvalid", "api-reference/rpc/http/minimumledgerslot", "api-reference/rpc/http/requestairdrop", + "api-reference/rpc/http/sendbundle", "api-reference/rpc/http/sendtransaction", "api-reference/rpc/http/simulatebundle", "api-reference/rpc/http/simulatetransaction" diff --git a/openapi/rpc-http/sendBundle.yaml b/openapi/rpc-http/sendBundle.yaml new file mode 100644 index 00000000..f2bd5dec --- /dev/null +++ b/openapi/rpc-http/sendBundle.yaml @@ -0,0 +1,213 @@ +openapi: 3.1.0 +info: + title: Solana RPC API + version: 1.0.0 + description: Submit Jito bundles for atomic, ordered transaction execution on Solana. + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0.html +servers: + - url: https://mainnet.helius-rpc.com + description: Mainnet RPC endpoint + - url: https://devnet.helius-rpc.com + description: Devnet RPC endpoint +components: + securitySchemes: + ApiKeyQuery: + type: apiKey + in: query + name: api-key + description: Your Helius API key. You can get one for free in the [dashboard](https://dashboard.helius.dev/api-keys). + schemas: + ErrorResponse: + type: object + properties: + jsonrpc: + type: string + description: The JSON-RPC protocol version. + enum: + - "2.0" + example: "2.0" + error: + type: object + properties: + code: + type: integer + description: The error code. + example: -32602 + message: + type: string + description: The error message. + data: + type: object + description: Additional data about the error. + id: + type: string + description: Identifier matching the request. + example: "1" +paths: + /: + post: + tags: + - RPC + summary: sendBundle + operationId: sendBundle + description: | + Submit a Jito bundle of up to 5 transactions for atomic, ordered execution on the Solana blockchain. + All transactions in the bundle are executed sequentially and atomically — if any transaction fails, + the entire bundle is dropped. Bundles must include a tip to a Jito tip account in one of the transactions. + security: + - ApiKeyQuery: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + jsonrpc: + type: string + enum: + - "2.0" + description: The JSON-RPC protocol version. + example: "2.0" + default: "2.0" + id: + type: string + description: A unique identifier for the request. + example: "1" + default: "1" + method: + type: string + enum: + - "sendBundle" + description: The name of the RPC method to invoke. + example: "sendBundle" + default: "sendBundle" + params: + type: array + description: Parameters for sending a Jito bundle. + items: + oneOf: + - type: array + description: Array of encoded, serialized transactions to execute as a bundle. Maximum of 5 transactions. + items: + type: string + description: An encoded serialized transaction. + - type: object + description: Optional configuration for the bundle submission. + properties: + encoding: + type: string + description: The encoding used for the transaction strings. + enum: + - base58 + - base64 + default: base64 + example: base64 + example: + jsonrpc: "2.0" + id: "1" + method: "sendBundle" + params: + - - "AT2AqtlokikUWgGNnSX5xrmdvBjSaiIPxvFz6zc5Abn5Z0CPFW5GO+Y3rXceLnqLgQFnGw0yTk3NtJdFNsbrwwQBAAIEsXPDJ9cMVbpFQYClVM7PGLh8JOfCD6E2vz5VNmBCF+p4Uhyxec67hYm1VqLV7JTSSYaC/fm7KvWtZOSRzEFT2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI1i3Wzl2VfewCI8oYXParnP78725sKFzYheTEn8v865YQIDABhqaXRvIGJ1bmRsZSAwOiBqaXRvIHRlc3QCAgABDAIAAACghgEAAAAAAA==" + - "AS6fOZuGDsmyYdd+RC0fiFUgNe1BYTOYT+1hkRXHAeroC8R60h3g34EPF5Ys8sGzVBMP9MDSTVgy1/SSTqpCtA4BAAIEsXPDJ9cMVbpFQYClVM7PGLh8JOfCD6E2vz5VNmBCF+p4Uhyxec67hYm1VqLV7JTSSYaC/fm7KvWtZOSRzEFT2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI1i3Wzl2VfewCI8oYXParnP78725sKFzYheTEn8v865YQIDABhqaXRvIGJ1bmRsZSAxOiBqaXRvIHRlc3QCAgABDAIAAACghgEAAAAAAA==" + - encoding: "base64" + responses: + 200: + description: Bundle submitted successfully. Returns a bundle ID that can be used to track the bundle status. + content: + application/json: + schema: + type: object + properties: + jsonrpc: + type: string + enum: + - "2.0" + description: The JSON-RPC protocol version. + example: "2.0" + id: + type: string + description: Identifier matching the request. + example: "1" + result: + type: string + description: The bundle ID. Use this to check the bundle status with `getBundleStatuses` or `getInflightBundleStatuses`. + example: "2id3YC2jK9PXyfaos635MqHj2seMJHc4rxFBRa3pGqoN5H7JnwzYKiyoZPFbBSqBz3atSMEVZR5mhTiLby2VU9Hx" + example: + jsonrpc: "2.0" + id: "1" + result: "2id3YC2jK9PXyfaos635MqHj2seMJHc4rxFBRa3pGqoN5H7JnwzYKiyoZPFbBSqBz3atSMEVZR5mhTiLby2VU9Hx" + 400: + description: Bad Request - Invalid request parameters or malformed request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + example: + jsonrpc: "2.0" + error: + code: -32602 + message: "Invalid params" + id: "1" + 401: + description: Unauthorized - Invalid or missing API key. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + example: + jsonrpc: "2.0" + error: + code: -32001 + message: "Unauthorized" + id: "1" + 429: + description: Too Many Requests - Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + example: + jsonrpc: "2.0" + error: + code: -32005 + message: "Too many requests" + id: "1" + 500: + description: Internal Server Error - An error occurred on the server. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + example: + jsonrpc: "2.0" + error: + code: -32603 + message: "Internal error" + id: "1" + 503: + description: Service Unavailable - The service is temporarily unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + example: + jsonrpc: "2.0" + error: + code: -32002 + message: "Service unavailable" + id: "1" + 504: + description: Gateway Timeout - The request timed out. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + example: + jsonrpc: "2.0" + error: + code: -32003 + message: "Gateway timeout" + id: "1"