Send Transaction
A low-latency endpoint to submit signed Solana transactions through 0Block with tip verification and optional preflight/commitment controls.
Overview
Goal: Land your signed transaction quickly and reliably with Stake-Weighted QoS.
Tip enforcement: Tx must include a SystemProgram::Transfer or TransferWithSeed of ≥ 0.001 SOL (1,000,000 lamports) to an allowed 0Block tip account.
Regions:
nyc,chi,las,ams,lon,fra,sin,syd.
Prerequisites
API Key
Endpoint & Headers
Endpoint format
POST https://{region}.0block.io/?api_key=<YOUR_API_KEY>Example
https://nyc.0block.io/?api_key=<YOUR_API_KEY>Headers
Content-Type: application/jsonRequest Schema (JSON-RPC 2.0)
0Block accepts standard JSON-RPC with method: "sendTransaction":
{
"jsonrpc": "2.0",
"id": "optional-correlation-id",
"method": "sendTransaction",
"params": [
"<SIGNED_TRANSACTION>", // required: base64 or base58 string
{
"encoding": "base64", // optional: "base64" | "base58"
"skipPreflight": false, // optional: boolean
"preflightCommitment": "processed", // optional: "processed" | "confirmed" | "finalized"
"maxRetries": 3, // optional: integer
"minContextSlot": 265470000 // optional: integer
}
]
}Parameters
jsonrpc
string
No
Use "2.0" (standard marker).
id
string | number
No
Echoed back in responses for correlation.
method
string
Yes
Must be "sendTransaction".
params[0]
string
Yes
Signed Solana transaction as base64 or base58. Base64 padding optional.
params[1].encoding
enum
No
"base64" or "base58". If omitted, auto-detected (tries base64, then base58).
params[1].skipPreflight
boolean
No
true to bypass simulation for lower latency.
params[1].preflightCommitment
enum
No
"processed" | "confirmed" | "finalized" for preflight checks.
params[1].maxRetries
integer
No
Max automatic retry attempts upstream.
params[1].minContextSlot
integer
No
Minimum slot context required by the client.
Examples
Minimal (auto-detect encoding)
{
"jsonrpc": "2.0",
"id": 1,
"method": "sendTransaction",
"params": ["BASE64_OR_BASE58_SIGNED_TX"]
}With options
{
"jsonrpc": "2.0",
"id": "tx-42",
"method": "sendTransaction",
"params": [
"BASE64_SIGNED_TX",
{
"encoding": "base64",
"skipPreflight": false,
"preflightCommitment": "confirmed",
"maxRetries": 5,
"minContextSlot": 265470000
}
]
}cURL
curl -X POST 'https://nyc.0block.io/?api_key=<YOUR_API_KEY>' -H "Content-Type: application/json" -d '{
"jsonrpc": "2.0",
"id": "tx-42",
"method": "sendTransaction",
"params": [
"BASE64_SIGNED_TX",
{ "encoding": "base64", "preflightCommitment": "confirmed", "maxRetries": 5 }
]
}'JavaScript (Node)
import fetch from "node-fetch";
async function sendTx(apiKey, txBase64) {
const body = {
jsonrpc: "2.0",
id: "tx-42",
method: "sendTransaction",
params: [txBase64, { encoding: "base64", preflightCommitment: "confirmed" }]
};
const res = await fetch("https://nyc.0block.io/?api_key=<YOUR_API_KEY>", {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json"
},
body: JSON.stringify(body)
});
return res.json();
}Responses
0Block relays the upstream Solana JSON-RPC response on success, typically:
{
"jsonrpc": "2.0",
"result": "5t4eBfVv8A3tN6d2zjZphqStjc6b4YbTL7Yt8Y6XWf9",
"id": "tx-42"
}Where result is the transaction signature.
On failure, you’ll receive a JSON-RPC error object (either from 0Block pre-checks or from upstream).
0Block Error Codes (Pre-validation)
-32700
Parse error
Malformed JSON.
-32600
Invalid Request: missing method
method missing/empty.
-32601
Method not found
Not "sendTransaction".
-32602
Invalid params: ...
params not array, missing params[0], or decode failure.
-32000
Invalid transaction: ...
Bad framing (sigs/message OOB).
-32000
Invalid transaction message: ...
Message parse failure (legacy or v0).
-32603
Server misconfiguration: no tip pubkeys loaded
Server not configured with tip allowlist.
-32001
Tip verification failed[: reason]
No qualifying tip or below min lamports.
-32002
v0 address table resolution required
Tip destination only resolvable via lookup (not in static keys).
-32098
Upstream error
Solana RPC unavailable / 5xx.
Tip Accounts (Allowlist)
7ryAvKtymdDdnSqE6g8ctS7sMcmxDCZbzXoRDWSLzero
6646q6HMnzAE7BUhsWma86SebPm2VC9bW9tsDJsDzero
2ZH2unJ7NaCu3kiXaiJPDwjSjDNudFgqhMetSDJGzero
9yXPwviBkVAEWGEbCVkYhzyN7fsrybfDSYv7SeTXzero
4LFeE3G7eJDHoStjPrga6MyJdbrMG924MAyLTp3Rzero
GHjaNw8Sd8ArWZt2UqoH2rGYtzt2MspUmxcAshFkzero
MbCZkyVkpADL3kqWPf94bWXNgzwNeyjUqUXBZn5zero
AYXWDKX1wWwS6Rcydx2Z6QjS1SZhW69z2pxoEpuRzero
8kR3r5aaenaauC1qFcBVwAtMAP9GAANthrsLToe3zero
24wwbjb4vXDpfGHhH61JsPkRQzSnCFWUeiuQpXkZzeroBest Practices
Choose the nearest region to minimize latency.
Use
skipPreflight: trueonly for high-confidence transactions.Adjust
preflightCommitmentfor consistency vs speed.Add retries (
maxRetries) for transient upstream errors.Ensure tip destination appears in static accounts for v0 messages.
Reuse connections (HTTP/2 keep-alive) for high throughput.
Regions
🇺🇸 North America (East)
https://nyc.0block.io
🇺🇸 North America (Central)
https://chi.0block.io
🇺🇸 North America (West)
https://las.0block.io
🇳🇱 Netherlands
https://ams.0block.io
🇬🇧 United Kingdom
https://lon.0block.io
🇩🇪 Germany
https://fra.0block.io
🇸🇬 Singapore
https://sin.0block.io
🇦🇺 Australia
https://syd.0block.io
Last updated

