Jito Block Engine JSON-RPC API

JSON-RPC API for submitting atomic bundles of up to five Solana transactions to the Jito Block Engine via sendBundle, plus getBundleStatuses, getInflightBundleStatuses, getTipAccounts, getRandomTipAccount, and a sendTransaction proxy. Endpoints are exposed from regional Block Engine clusters in Amsterdam, Dublin, Frankfurt, London, New York, Salt Lake City, Singapore, Tokyo, and global mainnet and testnet front-doors.

Jito Block Engine JSON-RPC API is one of 10 APIs that Jito Labs publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 3 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 4 JSON Schema definitions.

Tagged areas include Solana, MEV, Bundles, and Block Engine. The published artifact set on APIs.io includes API documentation, an API reference, an OpenAPI specification, sample payloads, 3 Naftiko capability specs, and 4 JSON Schemas.

Documentation

Specifications

Examples

Schemas & Data

Other Resources

OpenAPI Specification

jito-block-engine-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Jito Block Engine JSON-RPC 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.
  - name: Transactions
    description: Direct sendTransaction proxy to validator leaders.
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.
  /api/v1/transactions:
    post:
      summary: Send Transaction Through Block Engine
      operationId: transactionsRpc
      tags:
        - Transactions
      description: >-
        JSON-RPC 2.0 endpoint exposing the `sendTransaction` method. Acts as a
        direct proxy to Solana's `sendTransaction`, but routes the transaction
        through the Block Engine to the next leader for inclusion. Optional
        `bundleOnly=true` query parameter forces the transaction to be wrapped
        in a single-tx bundle so it is processed under bundle semantics.
      parameters:
        - in: query
          name: bundleOnly
          schema:
            type: boolean
          description: When true, the transaction is treated as a single-transaction bundle.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendTransactionRequest'
      responses:
        '200':
          description: Signature of the submitted transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendTransactionResponse'
        '429':
          description: Rate limited.
components:
  schemas:
    JsonRpcEnvelope:
      type: object
      required:
        - jsonrpc
        - id
        - method
      properties:
        jsonrpc:
          type: string
          enum:
            - '2.0'
        id:
          oneOf:
            - type: integer
            - type: string
        method:
          type: string
    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
    SendBundleResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          type: integer
        result:
          type: string
          description: Bundle ID — SHA-256 of the concatenated transaction signatures.
    GetBundleStatusesRequest:
      allOf:
        - $ref: '#/components/schemas/JsonRpcEnvelope'
        - type: object
          properties:
            method:
              const: getBundleStatuses
            params:
              type: array
              items:
                type: array
                maxItems: 5
                items:
                  type: string
    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'
    GetInflightBundleStatusesRequest:
      allOf:
        - $ref: '#/components/schemas/JsonRpcEnvelope'
        - type: object
          properties:
            method:
              const: getInflightBundleStatuses
            params:
              type: array
              items:
                type: array
                maxItems: 5
                items:
                  type: string
    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'
    GetTipAccountsRequest:
      allOf:
        - $ref: '#/components/schemas/JsonRpcEnvelope'
        - type: object
          properties:
            method:
              const: getTipAccounts
            params:
              type: array
              maxItems: 0
    GetTipAccountsResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          type: integer
        result:
          type: array
          description: Tip account public keys.
          items:
            type: string
    GetRandomTipAccountRequest:
      allOf:
        - $ref: '#/components/schemas/JsonRpcEnvelope'
        - type: object
          properties:
            method:
              const: getRandomTipAccount
    GetRandomTipAccountResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          type: integer
        result:
          type: string
          description: Single randomly selected tip account public key.
    SendTransactionRequest:
      allOf:
        - $ref: '#/components/schemas/JsonRpcEnvelope'
        - type: object
          properties:
            method:
              const: sendTransaction
            params:
              type: array
              minItems: 1
              maxItems: 2
              items:
                oneOf:
                  - type: string
                    description: Base-58 or base-64 encoded signed transaction.
                  - type: object
                    properties:
                      encoding:
                        type: string
                        enum:
                          - base58
                          - base64
                      skipPreflight:
                        type: boolean
                      preflightCommitment:
                        type: string
                      maxRetries:
                        type: integer
                      minContextSlot:
                        type: integer
    SendTransactionResponse:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          type: integer
        result:
          type: string
          description: Transaction signature.
    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
    InflightBundleStatus:
      type: object
      properties:
        bundle_id:
          type: string
        status:
          type: string
          enum:
            - Invalid
            - Pending
            - Failed
            - Landed
        landed_slot:
          nullable: true
          type: integer