Skip to main content
Solami gives you two ways to send transactions: standard RPC for general use, and SWQoS for priority landing through staked validators. Both use the same @solana/web3.js interface — only the key type and a few options change.

Basic transaction sending

Connect to the Solami RPC endpoint and call sendTransaction as you normally would:
import { Connection, Transaction } from "@solana/web3.js";

const connection = new Connection(
  "https://rpc.solami.fast/sol?api_key=YOUR_API_KEY"
);

const signature = await connection.sendTransaction(transaction, [payer]);
This works on all plans and is the right starting point for most applications.

Send with SWQoS for better landing rates

SWQoS (Stake-Weighted Quality of Service) routes your transactions through staked validators, giving them priority over standard submissions. Use this when landing rate matters — for example, in trading bots, arbitrage, or any time-sensitive flow.
1

Create a SWQoS key

Go to Dashboard → API Keys, click Create Key, and select SWQoS Key as the type.See API Keys if you need help creating a key.
2

Connect using your SWQoS key

Use your SWQoS key as the API key in your RPC connection URL:
import { Connection, Transaction } from "@solana/web3.js";

const connection = new Connection(
  "https://rpc.solami.fast/sol?api_key=YOUR_SWQOS_KEY"
);
3

Send with the recommended options

Set skipPreflight: true and maxRetries: 0. The staked connection manages retry logic more effectively than the client-side defaults.
const signature = await connection.sendTransaction(transaction, [payer], {
  skipPreflight: true,
  maxRetries: 0,
});
Setting maxRetries: 0 hands off retry responsibility to the staked validators. Letting the client retry independently can lead to duplicate submission attempts that interfere with each other.

Simulate a Jito bundle

Solami supports Jito bundle simulation on all plans via the simulateBundle RPC method. Use this to validate a bundle of transactions before submitting it:
curl "https://rpc.solami.fast/sol?api_key=YOUR_API_KEY" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "simulateBundle",
    "params": {
      "encodedTransactions": ["BASE64_TX_1", "BASE64_TX_2"]
    }
  }'
The response shows whether each transaction in the bundle would succeed and the resulting account state changes, without actually landing anything on-chain.

Rate limits

Transaction sending has its own rate limits, separate from general RPC calls.
PlansendTransaction per second
Free1
Dev5
Pro20
Ultra50
Shared Metal200
If you’re hitting rate limits, consider upgrading your plan or moving time-sensitive workloads to a Dedicated Node for unlimited throughput.