Jito Labs Bundles API

Submit and inspect atomic Solana transaction bundles.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

jito-bundles-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Jito Block Engine JSON-RPC Bundles API
  version: '1.0'
  description: JSON-RPC API for the Jito Block Engine. The Block Engine accepts bundles and transactions from searchers, bots, and dApps and forwards them to Jito-Solana leader validators for atomic block inclusion. Bundles are ordered, atomic groups of up to five Solana transactions that must execute together — if any one fails the entire bundle reverts. A SOL tip to a designated tip account is required for bundles to be considered by leaders.
  contact:
    name: Jito Labs
    url: https://www.jito.network
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  x-mev: true
  x-network: solana
servers:
- url: https://mainnet.block-engine.jito.wtf
  description: Mainnet global
- url: https://amsterdam.mainnet.block-engine.jito.wtf
  description: Mainnet Amsterdam
- url: https://dublin.mainnet.block-engine.jito.wtf
  description: Mainnet Dublin
- url: https://frankfurt.mainnet.block-engine.jito.wtf
  description: Mainnet Frankfurt
- url: https://london.mainnet.block-engine.jito.wtf
  description: Mainnet London
- url: https://ny.mainnet.block-engine.jito.wtf
  description: Mainnet New York
- url: https://slc.mainnet.block-engine.jito.wtf
  description: Mainnet Salt Lake City
- url: https://singapore.mainnet.block-engine.jito.wtf
  description: Mainnet Singapore
- url: https://tokyo.mainnet.block-engine.jito.wtf
  description: Mainnet Tokyo
- url: https://testnet.block-engine.jito.wtf
  description: Testnet global
- url: https://dallas.testnet.block-engine.jito.wtf
  description: Testnet Dallas
- url: https://ny.testnet.block-engine.jito.wtf
  description: Testnet New York
tags:
- name: Bundles
  description: Submit and inspect atomic Solana transaction bundles.
paths:
  /api/v1/bundles:
    post:
      summary: Submit Bundle Or Query Bundle State
      operationId: bundlesRpc
      tags:
      - Bundles
      description: JSON-RPC 2.0 endpoint that accepts the `sendBundle`, `getBundleStatuses`, `getInflightBundleStatuses`, `getTipAccounts`, and `getRandomTipAccount` methods. The `method` field in the request body selects which operation is invoked.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/SendBundleRequest'
              - $ref: '#/components/schemas/GetBundleStatusesRequest'
              - $ref: '#/components/schemas/GetInflightBundleStatusesRequest'
              - $ref: '#/components/schemas/GetTipAccountsRequest'
              - $ref: '#/components/schemas/GetRandomTipAccountRequest'
      responses:
        '200':
          description: JSON-RPC response object.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/SendBundleResponse'
                - $ref: '#/components/schemas/GetBundleStatusesResponse'
                - $ref: '#/components/schemas/GetInflightBundleStatusesResponse'
                - $ref: '#/components/schemas/GetTipAccountsResponse'
                - $ref: '#/components/schemas/GetRandomTipAccountResponse'
        '429':
          description: Rate limited.
components:
  schemas:
    GetTipAccountsResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          type: integer
        result:
          type: array
          description: Tip account public keys.
          items:
            type: string
    GetRandomTipAccountResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          type: integer
        result:
          type: string
          description: Single randomly selected tip account public key.
    GetInflightBundleStatusesResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          type: integer
        result:
          type: object
          properties:
            context:
              type: object
              properties:
                slot:
                  type: integer
            value:
              type: array
              items:
                $ref: '#/components/schemas/InflightBundleStatus'
    SendBundleRequest:
      allOf:
      - $ref: '#/components/schemas/JsonRpcEnvelope'
      - type: object
        properties:
          method:
            const: sendBundle
          params:
            type: array
            minItems: 1
            maxItems: 2
            items:
              oneOf:
              - type: array
                description: Array of base-58 (default) or base-64 encoded signed transactions. Max 5.
                maxItems: 5
                items:
                  type: string
              - type: object
                properties:
                  encoding:
                    type: string
                    enum:
                    - base58
                    - base64
    GetBundleStatusesRequest:
      allOf:
      - $ref: '#/components/schemas/JsonRpcEnvelope'
      - type: object
        properties:
          method:
            const: getBundleStatuses
          params:
            type: array
            items:
              type: array
              maxItems: 5
              items:
                type: string
    JsonRpcEnvelope:
      type: object
      required:
      - jsonrpc
      - id
      - method
      properties:
        jsonrpc:
          type: string
          enum:
          - '2.0'
        id:
          oneOf:
          - type: integer
          - type: string
        method:
          type: string
    GetInflightBundleStatusesRequest:
      allOf:
      - $ref: '#/components/schemas/JsonRpcEnvelope'
      - type: object
        properties:
          method:
            const: getInflightBundleStatuses
          params:
            type: array
            items:
              type: array
              maxItems: 5
              items:
                type: string
    GetRandomTipAccountRequest:
      allOf:
      - $ref: '#/components/schemas/JsonRpcEnvelope'
      - type: object
        properties:
          method:
            const: getRandomTipAccount
    SendBundleResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          type: integer
        result:
          type: string
          description: Bundle ID — SHA-256 of the concatenated transaction signatures.
    GetBundleStatusesResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          type: integer
        result:
          type: object
          properties:
            context:
              type: object
              properties:
                slot:
                  type: integer
            value:
              type: array
              items:
                $ref: '#/components/schemas/BundleStatus'
    InflightBundleStatus:
      type: object
      properties:
        bundle_id:
          type: string
        status:
          type: string
          enum:
          - Invalid
          - Pending
          - Failed
          - Landed
        landed_slot:
          nullable: true
          type: integer
    GetTipAccountsRequest:
      allOf:
      - $ref: '#/components/schemas/JsonRpcEnvelope'
      - type: object
        properties:
          method:
            const: getTipAccounts
          params:
            type: array
            maxItems: 0
    BundleStatus:
      type: object
      properties:
        bundle_id:
          type: string
        transactions:
          type: array
          items:
            type: string
        slot:
          type: integer
        confirmationStatus:
          type: string
          enum:
          - processed
          - confirmed
          - finalized
        err:
          nullable: true
          type: object