Endpoints
BlockSprint provides global endpoints optimized for low-latency transaction sending. Choose the endpoint closest to your application.
Endpoints
| Region | Endpoint | Provider |
|---|---|---|
| Global (Auto-routing) | http://global.blocksprint.io | — |
| Frankfurt | http://fra.blocksprint.io | Teraswitch |
| Frankfurt2 | http://fra2.blocksprint.io | Vultr |
| Frankfurt3 | http://fra3.blocksprint.io | Cherry Servers |
| Amsterdam | http://ams.blocksprint.io | Cherry Servers |
| Amsterdam2 | http://ams2.blocksprint.io | Teraswitch |
| Amsterdam3 | http://ams3.blocksprint.io | Vultr |
| London | http://lon.blocksprint.io | Teraswitch |
| New York | http://nyc.blocksprint.io | Teraswitch |
| Singapore | http://sgp.blocksprint.io | Teraswitch |
| Tokyo | http://jp.blocksprint.io | Teraswitch |
INFO
Use global.blocksprint.io for automatic routing to the optimal region.
INFO
Frankfurt and Amsterdam each have three servers. If your application runs in or near Frankfurt or Amsterdam, always send each transaction to all three servers in that region (fra, fra2 and fra3, or ams, ams2 and ams3), with a different nonce for each server.
We also offer servers with custom providers at no additional cost. Contact us on Telegram.
HTTPS is also supported for every endpoint.
Authentication
Pass your API key using one of these methods:
URL Path (Recommended)
curl -X POST 'https://fra.blocksprint.io/api/v1/YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"sendTransaction","params":["YOUR_BASE64_TRANSACTION",{"encoding":"base64"}]}'Header
curl -X POST 'https://fra.blocksprint.io' \
-H 'X-API-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"sendTransaction","params":["YOUR_BASE64_TRANSACTION",{"encoding":"base64"}]}'Bearer Token
curl -X POST 'https://fra.blocksprint.io' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"sendTransaction","params":["YOUR_BASE64_TRANSACTION",{"encoding":"base64"}]}'Query Parameter
curl -X POST 'https://fra.blocksprint.io?api_key=YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"sendTransaction","params":["YOUR_BASE64_TRANSACTION",{"encoding":"base64"}]}'Available Endpoints
JSON-RPC (POST /)
Main endpoint for all JSON-RPC methods:
POST https://global.blocksprint.ioSupported methods:
sendTransaction— Send a single transaction (legacy, v0 or Transaction V1)getHealth— Check endpoint health (JSON-RPC)
Health Check (GET /health)
Simple health check endpoint (no authentication required):
GET https://fra.blocksprint.io/healthBundle (POST /bundle)
Dedicated endpoint for atomic bundle submission:
POST https://fra.blocksprint.io/bundleJavaScript Example
import { Connection } from "@solana/web3.js";
// Option 1: API key in URL query param
// Use this connection for sendRawTransaction only; use your regular Solana RPC for reads.
const connection = new Connection(
"https://fra.blocksprint.io?api_key=YOUR_API_KEY"
);
// Option 2: Custom fetch with header
async function sendTransaction(transaction) {
const response = await fetch("https://fra.blocksprint.io", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": "YOUR_API_KEY",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "sendTransaction",
params: [
transaction,
{ encoding: "base64", skipPreflight: true }
],
}),
});
return response.json();
}Health Check
Verify endpoint health before sending:
curl -X POST 'https://fra.blocksprint.io' \
-H 'X-API-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}'Response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"status": "healthy",
"slot": 250000000,
"latency": 42,
"region": "fra"
}
}Failover Configuration
For high availability, configure multiple endpoints in the same region. Use the region closest to your servers and fail over between the servers in that region:
// Servers per region: fail over within your region
const REGIONS = {
frankfurt: [
"https://fra.blocksprint.io",
"https://fra2.blocksprint.io",
"https://fra3.blocksprint.io",
],
amsterdam: [
"https://ams.blocksprint.io",
"https://ams2.blocksprint.io",
"https://ams3.blocksprint.io",
],
};
const ENDPOINTS = REGIONS.frankfurt;
async function sendWithFailover(transaction, apiKey) {
for (const endpoint of ENDPOINTS) {
try {
const response = await fetch(endpoint, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": apiKey,
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "sendTransaction",
params: [transaction, { encoding: "base64", skipPreflight: true }],
}),
});
return response.json();
} catch (error) {
console.log(`Endpoint ${endpoint} failed, trying next...`);
}
}
throw new Error("All endpoints failed");
}