Search by name, SuiNS, address, digest, object ID, coin type or checkpoint.

API
tx.check

Simulate

tx.check

Pre-sign check: simulate an unsigned transaction, explain it and judge every counterparty, with a verdict and evidence.

Details

Endpoint
POST /v1/tx/check
Credits
10
Rate class
Heavy. Counts against your heavy requests per second.

The pre-sign check: send an unsigned transaction and get a verdict (safe, caution or danger) with evidence before anyone signs it. tide runs it on its own node without signing or sending it, explains what it does in plain words, and checks every recipient (age, first funder, labels, Intel cluster, scam flags, whether you sent to it before), every coin sent or received (spam, liquidity, holder concentration, TreasuryCap and deny list) and every package called (age, upgrade control, labels). It also flags sending all of a coin or valuable objects to unknown or new addresses, value lost against current prices or the best route, objects made shared or frozen, kiosk listings at 0 and gas set far too high. Each finding has a code, a severity, one sentence and links to tide.ad. Deterministic: no model decides the verdict. 10 credits; works keyless with a per-IP limit.

Parameters

NameTypeDescription
tx_bytesrequiredstringThe transaction as base64, before signing: TransactionData (what a wallet signs), or TransactionKind bytes together with sender. txBytes is accepted too.
senderstringAddress that would sign. Optional with TransactionData (its own sender is used). Required with TransactionKind bytes. With TransactionData from another sender, the check runs as this address and the node picks its gas coins.

Request

Send your key in the x-api-key header, or leave it out to use the keyless tier.

curl
curl -X POST "https://api.tide.ad/v1/tx/check" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{
  "tx_bytes": "AAIACEBCDwAAAAAAACDe63pGYu7J8vPe8D+5N6Zj3dqi4hW4B4ooTQJreUbCcAICAAEBAAABAQMAAAAAAQEA",
  "sender": "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270"
}'
TypeScript
const res = await fetch("https://api.tide.ad/v1/tx/check", {
  method: "POST",
  headers: {
    "x-api-key": process.env.TIDE_API_KEY!,
    "content-type": "application/json",
  },
  body: JSON.stringify({
    "tx_bytes": "AAIACEBCDwAAAAAAACDe63pGYu7J8vPe8D+5N6Zj3dqi4hW4B4ooTQJreUbCcAICAAEBAAABAQMAAAAAAQEA",
    "sender": "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270"
  }),
});
const data = await res.json();

Response

JSON
{
  "verdict": "safe",
  "headline": "No red flags found.",
  "summary": "Moved objects between addresses.",
  "status": "ok",
  "error": null,
  "sender": "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
  "steps": [
    "Split coins (1 command).",
    "Sent the SUI to DeepBook package."
  ],
  "balance_changes": [
    {
      "address": "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
      "name": "DeepBook package",
      "coin_type": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",
      "symbol": "SUI",
      "amount": -0.001088099,
      "amount_raw": "-1088099",
      "usd": 0
    }
  ],
  "findings": [],
  "gas": {
    "total_sui": 0.001088099,
    "computation_sui": 0.0001,
    "storage_sui": 0.001976,
    "rebate_sui": 0.000987901,
    "budget_sui": 0.002595,
    "price_mist": 100,
    "reference_price_mist": 100,
    "payer": "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
    "usd": 0.000991
  },
  "checked": {
    "addresses": 0,
    "coins": 0,
    "packages": 0,
    "not_checked": []
  },
  "simulated_at_checkpoint": 341511631,
  "latency_ms": 55,
  "asOf": {
    "checkpoint": 341511604,
    "timestamp": "2026-11-04T09:22:38.353Z",
    "lagMs": 945
  }
}