Tipwise

Make your bot tip correctly.

Replace the hardcoded tip with the live fare, send through Tipwise, and get a receipt for every transaction.

Four steps

  1. Check your bot's wallet

    See what it paid against the going rate. A hardcoded tip usually overpays in quiet hours and loses races in busy ones.

  2. Ask for a fare

    GET /fares returns Saver, Standard and Express with the tip, the priority fee and the honest chance of landing in time.

  3. Send through Tipwise

    Add the tip transfer to a Beam tip address, sign, and POST /send. Tipwise forwards it through Solami Beam.

  4. Read the receipt

    GET /receipt/:signature (or the lifecycle stream) says when it landed or why it did not, in plain English.

The code

import { createTipwise } from "./sdk"; // src/sdk.ts in the repository

const tipwise = createTipwise("https://api.tipwise.tech");
const standard = (await tipwise.fares()).find((f) => f.id === "standard")!;

// Add the tip to your own instructions, then sign as usual.
const tip = await tipwise.tipInstruction(wallet.publicKey, standard.tipLamports);

const signature = await tipwise.send(signedTx, "standard");
const receipt = await tipwise.waitForReceipt(signature);
console.log(receipt.explanation?.title); // "Landed in 3 blocks (1.2 s)."

Live console

Real responses from the Tipwise API on mainnet. Read only.

GET /fares
Press Run to see the live response.

API reference

GET /fares
Saver, Standard and Express: tip in lamports, SOL and dollars, priority fee, probability, whether it meets its promise.
GET /quote?deadline=6&confidence=0.9
A custom quote for any deadline in slots and confidence, with per bucket detail.
POST /send
Body { tx, fare? }. A base64 signed legacy or v0 transaction that tips at least 0.0001 SOL to a Beam tip address.
GET /receipt/:signature
Stages with slot and ms, landed slot, failure class, Beam landing record, the promise and a plain explanation.
GET /tips/addresses
Beam tip addresses and Jito tip accounts.
GET /blockhash
A recent confirmed blockhash, so browsers need no RPC key.
POST /audit
Body { address }. A wallet checkup over its last 100 transactions. 6 per minute per IP.
POST /audit/:address/watch
Stream new transactions of a wallet onto its checkup for 15 minutes.
GET /audit/examples
The three wallets that tipped most in the last 10 minutes.
POST /demo/send
Body { fare }. A free test send paid by Tipwise, rate limited.
GET /track-record
Promise versus reality and recent test trips.
GET /stats
Everything the site shows, for a first paint.
GET /leaders
The next block builders with their measured median tip and skipped blocks.
GET /health
Stream health, slots behind the chain tip.

Live events (GET /events, server-sent events)

slot
every new block
tips
each confirmed block: count, percentiles, sampled tips
fares
live fares, at most every 2 s when they change
lifecycle
every stage of every send, with its explanation
products
Solami product status, every 5 s
audit
a new transaction of a watched wallet
probe
a test trip went out
heat, lag, quote, stream
market heat, the lag test, a default quote, stream health

Run it with your own Solami key

Tipwise is open source. With a Solami key you can run the whole thing yourself: the streams, the API and this site. The README has the quick start, the key permissions and a deploy guide. Open the README