---
title: "Solana JSON-RPC proxy (sendTransaction)"
method: POST
path: "/rpc"
tags: ["RPC"]
---

# Solana JSON-RPC proxy (sendTransaction)

`POST /rpc`

JSON-RPC 2.0 proxy mirroring Solana's HTTP RPC `sendTransaction` method. The signed transaction is forwarded to the LP-Agent priority RPC and the signature is returned as soon as the priority RPC accepts it (the rotating RPC pool is fanned out to in the background). The client is responsible for polling confirmation.

Upstream spec: https://solana.com/docs/rpc/http/sendtransaction

### Parameters

`params` is a positional tuple — order matters.

| Index | Type | Required | Description |
|-------|------|----------|-------------|
| `params[0]` | string | yes | Fully-signed Transaction, encoded as a string (see `encoding` below). |
| `params[1]` | object | no | Configuration object (see `SendTransactionConfig` schema). |

### Configuration object (`params[1]`)

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `encoding` | string | `base58` | `base58` (DEPRECATED upstream) or `base64`. |
| `skipPreflight` | boolean | `false` | When true, skip preflight transaction checks. |
| `preflightCommitment` | string | `finalized` | Commitment level for preflight (`processed` \| `confirmed` \| `finalized`). |
| `maxRetries` | integer | — | Max retries by the RPC node. If omitted, retries until blockhash expires. |
| `minContextSlot` | integer | — | Minimum slot at which to perform preflight checks. |

### Result

A JSON-RPC 2.0 envelope whose `result` is the first transaction signature (base58) embedded in the submitted transaction — i.e. the transaction id. HTTP status is **always 200** per JSON-RPC 2.0; on failure, the envelope contains an `error` field instead of `result`.

## Request body

- object
  - `jsonrpc` '2.0', required
  - `id` union — JSON-RPC request id, echoed back unchanged in the response.
    - number
    - string
  - `method` 'sendTransaction', required
  - `params` union[], required — Positional tuple: [signed transaction string, optional config object]. See the description above for the field list.
    - union
      - string — params[0]: fully-signed transaction, encoded per the `encoding` field of the config (default base58). Use base64 for new code.
      - SendTransactionConfig — Optional configuration object for sendTransaction. Mirrors https://solana.com/docs/rpc/http/sendtransaction.
        - `encoding` 'base58' | 'base64' — Encoding used for the transaction data. `base58` is slow and DEPRECATED upstream — prefer `base64`.
        - `skipPreflight` boolean — When true, skip the preflight transaction checks.
        - `preflightCommitment` 'processed' | 'confirmed' | 'finalized' — Commitment level to use for preflight.
        - `maxRetries` integer — Maximum number of times for the RPC node to retry sending the transaction to the leader. If omitted, the node retries until the blockhash expires.
        - `minContextSlot` integer — Set the minimum slot at which to perform preflight transaction checks.

## Response `200`

JSON-RPC response (success or error envelope). HTTP is always 200; inspect `result` vs `error`.

- JsonRpcSignatureResponse
  - `jsonrpc` '2.0', required
  - `id` union, required — JSON-RPC request id, echoed back unchanged in the response.
    - number
    - string
  - `result` string — First transaction signature embedded in the submitted transaction, base58-encoded.
  - `error` object — Present instead of `result` when the call fails. HTTP is still 200.
    - `code` integer
    - `message` string
    - `data` unknown

## Changes

- **2026-05-25** `1708e5fd4a28` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/lpagent/apis/lp-agent-open-api/changes/rpc/post.md)

---

[API](https://skmtc.dev/lpagent/apis/lp-agent-open-api.md) · [All operations](https://skmtc.dev/lpagent/apis/lp-agent-open-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/lpagent/lp-agent-open-api/revisions/1708e5fd4a28/schema)
