---
title: "Performs a JSON-RPC call using the specified relayer."
method: POST
path: "/api/v1/relayers/{relayer_id}/rpc"
tags: ["Relayers"]
---

# Performs a JSON-RPC call using the specified relayer.

`POST /api/v1/relayers/{relayer_id}/rpc`

## Path parameters

- `relayer_id` string, required

## Request body

- union
  - object — JSON-RPC 2.0 Request structure. Represents a JSON-RPC request with proper ID handling: - `Some(JsonRpcId)` = request with ID - `None` = explicit null ID or notification
    - `method` 'feeEstimate', required
    - `params` SolanaFeeEstimateRequestParams, required
      - `fee_token` string, required
      - `transaction` string, required
  - object — JSON-RPC 2.0 Request structure. Represents a JSON-RPC request with proper ID handling: - `Some(JsonRpcId)` = request with ID - `None` = explicit null ID or notification
    - `method` 'transferTransaction', required
    - `params` TransferTransactionRequestParams, required
      - `amount` integer, required
      - `destination` string, required
      - `source` string, required
      - `token` string, required
  - object — JSON-RPC 2.0 Request structure. Represents a JSON-RPC request with proper ID handling: - `Some(JsonRpcId)` = request with ID - `None` = explicit null ID or notification
    - `method` 'prepareTransaction', required
    - `params` SolanaPrepareTransactionRequestParams, required
      - `fee_token` string, required
      - `transaction` string, required
  - object — JSON-RPC 2.0 Request structure. Represents a JSON-RPC request with proper ID handling: - `Some(JsonRpcId)` = request with ID - `None` = explicit null ID or notification
    - `method` 'signTransaction', required
    - `params` SignTransactionRequestParams, required
      - `transaction` string, required
  - object — JSON-RPC 2.0 Request structure. Represents a JSON-RPC request with proper ID handling: - `Some(JsonRpcId)` = request with ID - `None` = explicit null ID or notification
    - `method` 'signAndSendTransaction', required
    - `params` SignAndSendTransactionRequestParams, required
      - `transaction` string, required
  - object — JSON-RPC 2.0 Request structure. Represents a JSON-RPC request with proper ID handling: - `Some(JsonRpcId)` = request with ID - `None` = explicit null ID or notification
    - `method` 'getSupportedTokens', required
    - `params` GetSupportedTokensRequestParams, required
  - object — JSON-RPC 2.0 Request structure. Represents a JSON-RPC request with proper ID handling: - `Some(JsonRpcId)` = request with ID - `None` = explicit null ID or notification
    - `method` 'getFeaturesEnabled', required
    - `params` GetFeaturesEnabledRequestParams, required
  - object — JSON-RPC 2.0 Request structure. Represents a JSON-RPC request with proper ID handling: - `Some(JsonRpcId)` = request with ID - `None` = explicit null ID or notification
    - `method` 'rawRpcRequest', required
    - `params` object, required
      - `method` string, required
      - `params` unknown, required
  - object — JSON-RPC 2.0 Request structure. Represents a JSON-RPC request with proper ID handling: - `Some(JsonRpcId)` = request with ID - `None` = explicit null ID or notification
    - `method` string, required
    - `params` unknown, required
  - object — JSON-RPC 2.0 Request structure. Represents a JSON-RPC request with proper ID handling: - `Some(JsonRpcId)` = request with ID - `None` = explicit null ID or notification
    - `method` string, required
    - `params` unknown, required

## Response `200`

RPC method executed successfully

- JsonRpcResponseNetworkRpcResult — JSON-RPC 2.0 Response structure. Represents a JSON-RPC response that can contain either a result or an error.
  - `error` JsonRpcError — JSON-RPC 2.0 Error structure. Represents an error in a JSON-RPC response.
    - `code` integer, required
    - `description` string, required
    - `message` string, required
  - `id` union — Represents a JSON-RPC 2.0 ID value. According to the spec, the ID can be a String or Number. When used in `Option<JsonRpcId>`: Some(id) = actual ID, None = explicit null.
    - string — String identifier
    - integer — Numeric identifier (should not contain fractional parts per spec)
  - `jsonrpc` string, required
  - `result` union
    - union
      - object
        - `conversion_rate` string, required
        - `estimated_fee` string, required
        - `method` 'feeEstimate', required
      - object
        - `fee_in_lamports` string, required
        - `fee_in_spl` string, required
        - `fee_token` string, required
        - `transaction` string, required
        - `valid_until_blockheight` integer, required
        - `method` 'transferTransaction', required
      - object
        - `fee_in_lamports` string, required
        - `fee_in_spl` string, required
        - `fee_token` string, required
        - `transaction` string, required
        - `valid_until_blockheight` integer, required
        - `method` 'prepareTransaction', required
      - object
        - `signature` string, required
        - `transaction` string, required
        - `method` 'signTransaction', required
      - object
        - `id` string, required
        - `signature` string, required
        - `transaction` string, required
        - `method` 'signAndSendTransaction', required
      - object
        - `tokens` GetSupportedTokensItem[], required
          - `conversion_slippage_percentage` number, float
          - `decimals` integer, required
          - `max_allowed_fee` integer
          - `mint` string, required
          - `symbol` string, required
        - `method` 'getSupportedTokens', required
      - object
        - `features` string[], required
        - `method` 'getFeaturesEnabled', required
      - object
        - `method` 'rawRpc', required
    - unknown
    - unknown

## Other responses

- `400` — BadRequest
- `401` — Unauthorized
- `404` — Not Found
- `429` — Too Many Requests
- `500` — Internal server error

## Changes

- **2025-12-02** `b62ae34bc27a` — 1 breaking, 1 info
  - added `subschema #1, subschema #3` to the `result/oneOf[#/components/schemas/SolanaRpcResult]/` response property `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #3` from the `result/oneOf[#/components/schemas/SolanaRpcResult]/` response property `oneOf` list for the response status `200`
- **2025-11-07** `ae4706da1ec2` — 6 breaking, 3 info
  - removed the enum value `GenericRpcRequest` of the request property `allOf[subschema #1]/oneOf[#/components/schemas/StellarRpcRequest]/oneOf[subschema #1]/method`
  - removed `subschema #1, subschema #2` from the `allOf[subschema #1]/oneOf[#/components/schemas/EvmRpcRequest]/` request property `oneOf` list
  - the `allOf[subschema #1]/oneOf[#/components/schemas/StellarRpcRequest]/oneOf[subschema #1]/params` request property type/format changed from `string`/`` to ``/``
  - added `subschema #1` to the `result/oneOf[#/components/schemas/EvmRpcResult]/` response property `oneOf` list for the response status `200`
  - …5 more
- …earlier changes not shown

[Full history](https://skmtc.dev/openzeppelin/apis/openzeppelin-relayer-api/changes/api/v1/relayers/:relayer_id/rpc/post.md)

---

[API](https://skmtc.dev/openzeppelin/apis/openzeppelin-relayer-api.md) · [All operations](https://skmtc.dev/openzeppelin/apis/openzeppelin-relayer-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openzeppelin/openzeppelin-relayer-api/revisions/e6e7514284f5/schema)
