Skip to content

Endpoints ​

BlockSprint provides global endpoints optimized for low-latency transaction sending. Choose the endpoint closest to your application.


Endpoints ​

RegionEndpointProvider
Global (Auto-routing)http://global.blocksprint.io—
Frankfurthttp://fra.blocksprint.ioTeraswitch
Frankfurt2http://fra2.blocksprint.ioVultr
Frankfurt3http://fra3.blocksprint.ioCherry Servers
Amsterdamhttp://ams.blocksprint.ioCherry Servers
Amsterdam2http://ams2.blocksprint.ioTeraswitch
Amsterdam3http://ams3.blocksprint.ioVultr
Londonhttp://lon.blocksprint.ioTeraswitch
New Yorkhttp://nyc.blocksprint.ioTeraswitch
Singaporehttp://sgp.blocksprint.ioTeraswitch
Tokyohttp://jp.blocksprint.ioTeraswitch

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:

bash
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"}]}'
bash
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 ​

bash
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 ​

bash
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:

bash
POST https://global.blocksprint.io

Supported 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):

bash
GET https://fra.blocksprint.io/health

Bundle (POST /bundle) ​

Dedicated endpoint for atomic bundle submission:

bash
POST https://fra.blocksprint.io/bundle

JavaScript Example ​

javascript
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:

bash
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:

json
{
  "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:

javascript
// 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");
}