Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.orbitflare.com/llms.txt

Use this file to discover all available pages before exploring further.

Transaction Submission

OrBlock sends transactions through multiple optimized channels to achieve the best performance on the Solana network. Our service routes transactions through self-hosted nodes, staked validator connections, and bundle services to maximize transaction success rates.

sendTransaction

OrBlock is a service that supports the sendTransaction Solana RPC method. Simply use our URL where you would place a standard RPC URL. Transactions are intelligently routed through:
  1. OrbitFlare’s high-performance self-hosted nodes
  2. Premium staked validator connections
  3. Bundle services when appropriate

Direct HTTP Endpoints

Amsterdam 🇳🇱: http://ams.orblock.orbitflare.com/?api_key=<api-key> Frankfurt 🇩🇪: http://fra.orblock.orbitflare.com/?api_key=<api-key> London 🇬🇧: http://lon.orblock.orbitflare.com/?api_key=<api-key> New York 🇺🇸: http://ny.orblock.orbitflare.com/?api_key=<api-key> Tokyo 🇯🇵: http://tok.orblock.orbitflare.com/?api_key=<api-key> Salt Lake City 🇺🇸: http://slc.orblock.orbitflare.com/?api_key=<api-key>

Secure HTTPS Endpoints

Amsterdam 🇳🇱: https://ams.orblock.orbitflare.com/?api_key=<api-key> Frankfurt 🇩🇪: https://fra.orblock.orbitflare.com/?api_key=<api-key> London 🇬🇧: https://lon.orblock.orbitflare.com/?api_key=<api-key> New York 🇺🇸: https://ny.orblock.orbitflare.com/?api_key=<api-key> Tokyo 🇯🇵: https://tok.orblock.orbitflare.com/?api_key=<api-key> Salt Lake City 🇺🇸: https://slc.orblock.orbitflare.com/?api_key=<api-key>

HTTP POST Body

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "sendTransaction",
    "params": [ 
        "<base64_encoded_tx>",
        { "encoding": "base64" }
    ] 
}
Add your API key after ?api_key=<api-key> to create your custom URL for sending transactions. OrBlock’s regional submission endpoints are strategically placed across Europe (Amsterdam, Frankfurt, London), North America (New York, Salt Lake City), and Asia (Tokyo) to minimize latency worldwide. All nodes run on enterprise-grade hardware with custom optimizations for transaction processing. Please specify base64 encoding for optimal performance.

Transaction Priority Fee

OrBlock intelligently routes your transaction to the network scheduler. At this point, priority fees matter for processing speed. We recommend setting the compute unit (CU) price to at least 1,000,000 for optimal performance, especially during network congestion.

Retries and Confirmations

OrBlock automatically retries transactions until confirmation or expiry. The system will prioritize retries based on:
  1. Transaction priority fee
  2. Historical success rate of similar transactions
  3. Current network conditions

Rate Limits

Each API key has an associated rate limit based on your OrbitFlare plan:
PlanTransactions Per Second (TPS)
Starter Orbit50 TPS
Advanced Nebula100 TPS
Ultimate Cosmos150 TPS
OrbitFlare Pass300 TPS per location

Quality of Service

Clients with consistently high transaction failure rates will experience a QoS adjustment to their priority. For example, if only 20% of your transactions successfully land on-chain, your priority may be adjusted accordingly. This is based on your transaction performance over the past 30 minutes.

Optimized Routing

What makes OrBlock unique is how it intelligently routes transactions through the Transaction Processing Unit (TPU). Our system analyzes network conditions, validator performance, and transaction characteristics to determine the optimal submission strategy. OrBlock does not simulate transactions by default, which reduces latency. Optional simulation can be enabled through configuration parameters.

Front-Running Protection

OrBlock offers optional front-running protection through special submission endpoints. These endpoints utilize optimized bundle services and private transaction pools. Set strict slippage tolerances and calculate minAmountOut values to have additional protection against front-running.

Code Examples

CURL

curl https://ny.orblock.orbitflare.com/?api_key=YOUR_API_KEY \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "sendTransaction",
    "params": [
      "4hXTCkRzt9WyecNzV1XPgCDfGAZzQKNxLXgynz5QDuWWPSAZBZSHptvWRL3BjCvzUXRdKvHL2b7yGrRQcWyaqsaBCncVG7BFggS8w9snUts67BSh3EqKpXLUm5UMHfD7ZBe9GhARjbNQMLJ1QD3Spr6oMTFNhyKNMr3WNFCrXgDS7uV7u",
      {
        "encoding": "base64",
        "commitment": "confirmed"
      }
    ]
  }'

JavaScript

const sendTransaction = async (connection, transaction, signers) => {
  // Add a recent blockhash to the transaction
  transaction.recentBlockhash = (
    await connection.getRecentBlockhash()
  ).blockhash;
  
  // Sign the transaction with all required signers
  transaction.sign(...signers);
  
  // Convert transaction to wire format
  const rawTransaction = transaction.serialize();
  
  // Send the raw transaction
  const signature = await connection.sendRawTransaction(
    rawTransaction,
    {
      skipPreflight: false,
      preflightCommitment: 'confirmed',
      maxRetries: 5
    }
  );
  
  // Wait for confirmation
  const confirmation = await connection.confirmTransaction(
    signature,
    'confirmed'
  );
  
  return {
    signature,
    confirmation
  };
};

// Example usage with OrBlock
const connection = new Connection('https://ny.orblock.orbitflare.com/?api_key=YOUR_API_KEY');
const result = await sendTransaction(connection, transaction, signers);
console.log('Transaction signature:', result.signature);

TypeScript

import { 
  Connection, 
  Transaction, 
  PublicKey, 
  SystemProgram, 
  Keypair 
} from '@solana/web3.js';

// Initialize connection to OrBlock
const connection = new Connection('https://ny.orblock.orbitflare.com/?api_key=YOUR_API_KEY');

// Create and send transaction
const sendTransaction = async (
  fromKeypair: Keypair,
  toPublicKey: PublicKey,
  lamports: number
) => {
  const transaction = new Transaction().add(
    SystemProgram.transfer({
      fromPubkey: fromKeypair.publicKey,
      toPubkey: toPublicKey,
      lamports
    })
  );

  // Get recent blockhash
  const { blockhash } = await connection.getRecentBlockhash();
  transaction.recentBlockhash = blockhash;
  transaction.feePayer = fromKeypair.publicKey;
  
  // Sign transaction
  transaction.sign(fromKeypair);
  
  // Send transaction
  const signature = await connection.sendRawTransaction(
    transaction.serialize(),
    {
      skipPreflight: false,
      preflightCommitment: 'confirmed',
      maxRetries: 5
    }
  );
  
  // Wait for confirmation
  const confirmation = await connection.confirmTransaction(signature, 'confirmed');
  
  return {
    signature,
    confirmation: {
      status: confirmation.value.err ? 'failed' : 'success',
      slot: confirmation.context.slot
    }
  };
};

Python

from solana.rpc.api import Client
from solana.transaction import Transaction
from solana.system_program import TransferParams, transfer
from solana.keypair import Keypair
from solana.publickey import PublicKey
import base64

# Initialize connection to OrBlock
client = Client("https://ny.orblock.orbitflare.com/?api_key=YOUR_API_KEY")

def send_transaction(from_keypair, to_pubkey, lamports):
    # Create transfer instruction
    transfer_ix = transfer(
        TransferParams(
            from_pubkey=from_keypair.public_key,
            to_pubkey=to_pubkey,
            lamports=lamports
        )
    )
    
    # Get recent blockhash
    blockhash_resp = client.get_recent_blockhash()
    blockhash = blockhash_resp["result"]["value"]["blockhash"]
    
    # Create and sign transaction
    transaction = Transaction()
    transaction.add(transfer_ix)
    transaction.recent_blockhash = blockhash
    transaction.sign(from_keypair)
    
    # Serialize and send transaction
    serialized_transaction = base64.b64encode(transaction.serialize()).decode("utf-8")
    resp = client.send_transaction(
        serialized_transaction,
        opts={"encoding": "base64", "skipPreflight": False, "preflightCommitment": "confirmed"}
    )
    
    # Return signature
    return resp["result"]

# Example usage
from_keypair = Keypair.generate()
to_pubkey = PublicKey("Recipient_Public_Key_Here")
signature = send_transaction(from_keypair, to_pubkey, 1000000)
print(f"Transaction signature: {signature}")

Rust

use solana_client::rpc_client::RpcClient;
use solana_sdk::{
    signature::{Keypair, Signer},
    system_instruction,
    transaction::Transaction,
    pubkey::Pubkey,
    commitment_config::CommitmentConfig,
};
use std::str::FromStr;

fn main() {
    // Initialize connection to OrBlock
    let rpc_url = "https://ny.orblock.orbitflare.com/?api_key=YOUR_API_KEY";
    let client = RpcClient::new_with_commitment(
        rpc_url.to_string(),
        CommitmentConfig::confirmed(),
    );
    
    // Create keypair and destination public key
    let from_keypair = Keypair::new();
    let to_pubkey = Pubkey::from_str("Recipient_Public_Key_Here").unwrap();
    let lamports = 1_000_000;
    
    // Create transfer instruction
    let instruction = system_instruction::transfer(
        &from_keypair.pubkey(),
        &to_pubkey,
        lamports,
    );
    
    // Get recent blockhash
    let recent_blockhash = client.get_latest_blockhash().unwrap();
    
    // Create and sign transaction
    let mut transaction = Transaction::new_with_payer(
        &[instruction],
        Some(&from_keypair.pubkey()),
    );
    transaction.sign(&[&from_keypair], recent_blockhash);
    
    // Send transaction
    let signature = client.send_transaction(&transaction).unwrap();
    println!("Transaction signature: {}", signature);
    
    // Confirm transaction
    let confirmation = client.confirm_transaction(&signature).unwrap();
    println!("Transaction confirmed: {}", confirmation);
}

Go

package main

import (
	"context"
	"encoding/base64"
	"fmt"
	"log"

	"github.com/gagliardetto/solana-go"
	"github.com/gagliardetto/solana-go/rpc"
	"github.com/gagliardetto/solana-go/rpc/types"
	"github.com/gagliardetto/solana-go/programs/system"
)

func main() {
	// Initialize connection to OrBlock
	endpoint := "https://ny.orblock.orbitflare.com/?api_key=YOUR_API_KEY"
	client := rpc.New(endpoint)
	
	// Create keypair and destination
	fromKeypair := solana.NewWallet()
	toPubkey, err := solana.PublicKeyFromBase58("Recipient_Public_Key_Here")
	if err != nil {
		log.Fatalf("Invalid public key: %v", err)
	}
	
	// Create transfer instruction
	instruction := system.NewTransferInstruction(
		1_000_000,
		fromKeypair.PublicKey(),
		toPubkey,
	).Build()
	
	// Get recent blockhash
	recentBlockhash, err := client.GetRecentBlockhash(
		context.Background(),
		rpc.CommitmentConfirmed,
	)
	if err != nil {
		log.Fatalf("Failed to get recent blockhash: %v", err)
	}
	
	// Create and sign transaction
	tx, err := solana.NewTransaction(
		[]solana.Instruction{instruction},
		recentBlockhash.Value.Blockhash,
		solana.TransactionPayer(fromKeypair.PublicKey()),
	)
	if err != nil {
		log.Fatalf("Failed to create transaction: %v", err)
	}
	
	_, err = tx.Sign(func(key solana.PublicKey) *solana.PrivateKey {
		if fromKeypair.PublicKey().Equals(key) {
			return &fromKeypair.PrivateKey
		}
		return nil
	})
	if err != nil {
		log.Fatalf("Failed to sign transaction: %v", err)
	}
	
	// Serialize and send transaction
	serializedTx, err := tx.Serialize()
	if err != nil {
		log.Fatalf("Failed to serialize transaction: %v", err)
	}
	
	encodedTx := base64.StdEncoding.EncodeToString(serializedTx)
	signature, err := client.SendTransactionWithOpts(
		context.Background(),
		encodedTx,
		types.TransactionOpts{
			SkipPreflight:       false,
			PreflightCommitment: rpc.CommitmentConfirmed,
			MaxRetries:          5,
		},
	)
	if err != nil {
		log.Fatalf("Failed to send transaction: %v", err)
	}
	
	fmt.Printf("Transaction signature: %s\n", signature.String())
}

Jupiter Swap Example

Here’s an example of using OrBlock to execute a Jupiter swap transaction:
import { Connection } from '@solana/web3.js';
import { Jupiter } from '@jup-ag/core';

// Initialize connection to OrBlock
const connection = new Connection('https://ny.orblock.orbitflare.com/?api_key=YOUR_API_KEY');

async function executeJupiterSwap(
  fromTokenMint,
  toTokenMint,
  amount,
  slippageBps,
  wallet
) {
  // Initialize Jupiter
  const jupiter = await Jupiter.load({
    connection,
    cluster: 'mainnet-beta',
    user: wallet,
  });
  
  // Get routes
  const routes = await jupiter.computeRoutes({
    inputMint: fromTokenMint,
    outputMint: toTokenMint,
    amount,
    slippageBps,
  });
  
  // Select best route
  const bestRoute = routes.routesInfos[0];
  
  // Execute swap
  const { txid } = await jupiter.exchange({
    routeInfo: bestRoute,
  });
  
  console.log('Swap transaction submitted:', txid);
  
  // Wait for confirmation
  const confirmation = await connection.confirmTransaction(txid, 'confirmed');
  
  return {
    signature: txid,
    success: !confirmation.value.err,
    route: bestRoute.routeName,
  };
}

Contact

For enterprise plans, custom rate limits, and dedicated support, please contact our team: For technical issues or feature requests, please open a ticket on our Discord server.