Only this pageAll pages
Powered by GitBook
1 of 12

Temporal Docs

Nozomi

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Transaction Submission

Nozomi sends transactions through multiple channels to achieve best performance.

sendTransaction

Nozomi is a URL that supports the `sendTransaction` Solana RPC method. Just insert the URL where you would place a RPC URL. Transactions are sent through 1) Self hosted nodes 2) Staked connections and 3) Jito bundles.

Direct HTTP:

Secure HTTPS:

HTTP POST Body

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "sendTransaction",
    "params": [ 
        "<base64_encoded_tx>",
        { "encoding": "base64" }
    ] 
}

Just add API Key after ?c=<uuid> to get custom URL for sending.

Regional submission endpoints are in US East, Frankfurt and Amsterdam.

All boxes are run with custom hardware modifications.

Please specify base64 encoding.

Transaction Tip

These tips compensate the Jito tip and pay validators for staked connections. If Jito validates the transaction, the tip goes to the Jito validator. In that case, Nozomi forwards the entire tip to Jito.

Nozomi Tip Addresses

Send your tip to any one of these 17 addresses. To optimize performance and avoid write CU exhaustion, use a random different address for each transaction.

"TEMPaMeCRFAS9EKF53Jd6KpHxgL47uWLcpFArU1Fanq",
"noz3jAjPiHuBPqiSPkkugaJDkJscPuRhYnSpbi8UvC4",
"noz3str9KXfpKknefHji8L1mPgimezaiUyCHYMDv1GE",
"noz6uoYCDijhu1V7cutCpwxNiSovEwLdRHPwmgCGDNo",
"noz9EPNcT7WH6Sou3sr3GGjHQYVkN3DNirpbvDkv9YJ",
"nozc5yT15LazbLTFVZzoNZCwjh3yUtW86LoUyqsBu4L",
"nozFrhfnNGoyqwVuwPAW4aaGqempx4PU6g6D9CJMv7Z",
"nozievPk7HyK1Rqy1MPJwVQ7qQg2QoJGyP71oeDwbsu",
"noznbgwYnBLDHu8wcQVCEw6kDrXkPdKkydGJGNXGvL7",
"nozNVWs5N8mgzuD3qigrCG2UoKxZttxzZ85pvAQVrbP",
"nozpEGbwx4BcGp6pvEdAh1JoC2CQGZdU6HbNP1v2p6P",
"nozrhjhkCr3zXT3BiT4WCodYCUFeQvcdUkM7MqhKqge",
"nozrwQtWhEdrA6W8dkbt9gnUaMs52PdAv5byipnadq3",
"nozUacTVWub3cL4mJmGCYjKZTnE9RbdY5AP46iQgbPJ",
"nozWCyTPppJjRuw2fpzDhhWbW355fzosWSzrrMYB1Qk",
"nozWNju6dY353eMkMqURqwQEoM3SFgEKC6psLCSfUne",
"nozxNBgWohjR75vdspfxR5H9ceC7XXH99xpxhVGt3Bb"

Priority Fee

Nozomi gets your transaction to the scheduler. At this point, priority fees matter. It is recommended to set CU price to at least 1,000,000, or expect subpar performance.

Retries

Nozomi will retry transactions until confirmation or expiry. Nozomi will prioritize retries based on the amount tipped.

Rate Limits

Each API key has an associated rate limit.

QoS Priority

Clients with high failure rate will have a QoS penalty to their priority. For example if only 10% of your transactions successfully land, your priority will be discounted to 10%. This is based on last 30 minutes of transaction sending.

Optimized Routing

What makes Nozomi unique is how it routes transactions through the TPU. It knows exactly when and how to send transactions.

Nozomi does not simulate transactions.

Avoiding Front-Running

There is Front Running Protection URL that only sends optimized Jito bundles.

Set strict slippage tolerances and calculate minAmountOut to have protections against front-running.

Customizability

Only pay the tip if you execute your desired opportunity. Since the tip is a transfer, if you detect someone captured the opportunity you wanted, you can fail your transaction to avoid paying the tip.

If you are a high tipper, please reach out for custom rate limits.

Contact

PITT:

EWR:

AMS:

FRA:

AMS:

EWR:

PITT:

FRA:

Each transaction must include a system transfer instruction to the , with a minimum tip of 0.001 SOL. Increasing the tip raises your transaction’s priority in the queue—higher tips settle faster.

is a breakdown of tips by percentile.

Temporal has a blacklist of sandwiching validators that is constantly being updated. The firm is actively with Solana stakeholders to unstake malicious validators. It is hard to perfect this process, because new validators with no history can be malicious. Temporal is constantly updating its data and process in order to improve validator rankings.

Reach out via X DM:

http://pit1.nozomi.temporal.xyz/?c=
http://ewr1.nozomi.temporal.xyz/?c=
http://ams1.nozomi.temporal.xyz/?c=
http://fra2.nozomi.temporal.xyz/?c=
https://ams1.secure.nozomi.temporal.xyz/?c=
https://ewr1.secure.nozomi.temporal.xyz/?c=
https://pit1.secure.nozomi.temporal.xyz/?c=
https://fra2.secure.nozomi.temporal.xyz/?c=
Here
working
https://x.com/temporal_xyz
Nozomi tip address

TypeScript

Use full service rpc for getting blockhash. Nozomi only support sendTransaction.

// Define constants
const NOZOMI_TIP = new PublicKey("TEMPaMeCRFAS9EKF53Jd6KpHxgL47uWLcpFArU1Fanq");
const MIN_TIP_AMOUNT = 1_000_000;

async function sendNozomiTx(
  ixs: TransactionInstruction[],
  signer: Keypair,
  rpcClient: Connection
): Promise<void> {
  // Create transfer instruction
  const tipIx = SystemProgram.transfer({
    fromPubkey: signer.publicKey,
    toPubkey: NOZOMI_TIP,
    lamports: MIN_TIP_AMOUNT,
  });
  ixs.push(tipIx);

  // Get the latest blockhash
  const { blockhash } = await rpcClient.getLatestBlockhash();

  // Create transaction and sign it
  const tx = new Transaction().add(...ixs);
  tx.recentBlockhash = blockhash;
  tx.feePayer = signer.publicKey;
  tx.sign(signer);

  // Send the transaction
  const signature = await rpcClient.sendTransaction(tx, [signer]);
  console.log("Transaction sent with signature:", signature);
}

Introduction

Land transactions faster and more consistently.

Nozomi is a fully custom proprietary client written by HPC and HFT engineers designed to land transactions as fast as possible.

Who Should Use It

Sniper Bots: Snipe tokens and mints before the competition.

Defi Apps: Create a better UX so user transactions do not stall or fail.

Traders: Land with speed and precision to capture the most opportunities.

Liquidators: Be first to a liquidation transaction.

Jito Bundle Users: Get through the block engine faster and more efficient.

Algorithmic traders: Get predictability with your bots in all market conditions.

Python

Use full service rpc for getting blockhash. Nozomi only support sendTransaction.

Rust

Use full service rpc for getting blockhash. Nozomi only support sendTransaction.

NOZOMI_TIP = PublicKey("TEMPaMeCRFAS9EKF53Jd6KpHxgL47uWLcpFArU1Fanq") MIN_TIP_AMOUNT = 1_000_000
def send_nozomi_tx(ixs, signer, rpc_client): # Create transfer instruction tip_ix = transfer(TransferParams( from_pubkey=signer.public_key, to_pubkey=NOZOMI_TIP, lamports=MIN_TIP_AMOUNT )) ixs.append(tip_ix)
# Get the latest blockhash
blockhash = rpc_client.get_recent_blockhash()['result']['value']['blockhash']

# Create and sign transaction
tx = Transaction().add(*ixs)
tx.recent_blockhash = blockhash
tx.sign(signer)

# Send transaction
rpc_client.send_transaction(tx, signer)

const NOZOMI_TIP: Pubkey = pubkey!("TEMPaMeCRFAS9EKF53Jd6KpHxgL47uWLcpFArU1Fanq");
const MIN_TIP_AMOUNT: u64 = 1_000_000;

fn send_nozomi_tx(ixs: &mut Vec<Instruction>, signer: &Keypair, rpc_client: &RpcClient) {
    let tip_ix = system_instruction::transfer(&signer.pubkey(), &NOZOMI_TIP, MIN_TIP_AMOUNT);
    ixs.push(tip_ix);

    let blockhash = rpc_client.get_latest_blockhash().unwrap();
    let tx = Transaction::new_signed_with_payer(ixs, Some(&signer.pubkey()), &[signer], blockhash);

    rpc_client.send_transaction(&tx).unwrap();
}
```

Go

Made by a wonderful community member

https://github.com/weeaa/tempgoral

Keeping Your TCP Connection Alive

🔄 How Do I Keep the Connection Alive?

To keep your TCP connection to our server alive and avoid reconnecting, you can periodically send a simple request to the /ping endpoint.


Strategy

The server supports persistent connections with a keep-alive timeout of 65 seconds. This means:

  • If your connection is idle for more than 65 seconds, it will be closed.

  • To keep it open, send any request before that timeout expires.

  • Each connection can send max 1000 requests.

We recommend using the /ping endpoint:

GET /ping

This endpoint is lightweight, fast, and designed specifically to help maintain your connection.


Suggested Interval

Send a request to /ping every 60 seconds to keep the connection alive reliably.

Example:

while true; do
  curl -s http://nozomi.temporal.xyz/ping > /dev/null
  sleep 60
done

⚠️ Notes

  • This is not a health check — it's just a way to prevent idle disconnects

  • Avoid pinging more often than needed

Tip Stream

Stream Nozomi Tip Floors by Percentile

Rest Endpoint

curl https://api.nozomi.temporal.xyz/tip_floor

Websocket

wscat -c wss://api.nozomi.temporal.xyz/tip_stream

Schema

[
  {
    "time": "string (ISO 8601 timestamp)",
    "landed_tips_25th_percentile": "number",
    "landed_tips_50th_percentile": "number",
    "landed_tips_75th_percentile": "number",
    "landed_tips_95th_percentile": "number",
    "landed_tips_99th_percentile": "number"
  }
]

CURL

Please specify base64 encoding, Solana recognizes base58 as default. If you do not specify, you might get malformed transaction error

curl <url> -X POST -H "Content-Type: application/json" -d '                                   
  {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "sendTransaction",
    "params": [      "<base64_tx_data>",
      {                                                                                
        "encoding": "base64",
      }
    ]
  }

JavaScript

Use full service rpc for getting blockhash. Nozomi only support sendTransaction.

const NOZOMI_TIP = new PublicKey("TEMPaMeCRFAS9EKF53Jd6KpHxgL47uWLcpFArU1Fanq");
const MIN_TIP_AMOUNT = 1000000;

async function sendNozomiTx(ixs, signer, rpcClient) {
  const tipIx = SystemProgram.transfer({
    fromPubkey: signer.publicKey,
    toPubkey: NOZOMI_TIP,
    lamports: MIN_TIP_AMOUNT,
  });
  ixs.push(tipIx);

  const { blockhash } = await rpcClient.getLatestBlockhash();

  const tx = new Transaction().add(...ixs);
  tx.recentBlockhash = blockhash;
  tx.feePayer = signer.publicKey;
  tx.sign(signer);

  const signature = await rpcClient.sendTransaction(tx, [signer]);
  console.log("Transaction sent with signature:", signature);
}

Jupiter Swap Example

Github URL for Jupiter Swap Transactions.

https://github.com/temporalxyz/nozomi-examples/tree/main/typescript/jup-swap-example