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

API
tx.receipt

tx.receipt

Signed receipt for unsigned bytes: simulated effects, Agent Pass policy check, intent checks and a verdict, signed by tide.

Details

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

Send the exact unsigned TransactionData an agent is about to sign, and optionally its intent (max_spend, min_receive, deadline, pass). tide simulates it on current mainnet state and returns a receipt signed with its ed25519 attestation key: the intent, the transaction digest (the digest Sui will give these bytes), every simulated balance change, object and event, gas, the checkpoint, what Sui itself enforces when the bytes run under an Agent Pass (caps, listed pools, price floor, budget), tide's intent checks and a verdict. The bytes are in the receipt, so anyone can re-run the dry run on any full node. Show the human the url (tide.ad/proof/<id>); after sending, call GET /v1/tx/{digest}/receipt-check.

Parameters

NameTypeDescription
tx_bytesrequiredstringFull unsigned TransactionData as base64, with sender, gas and budget set (the bytes the wallet signs).
intentobjectWhat the agent means to do, in its own words as fields. Every field is optional. Amounts in whole coins; coins by symbol (USDC, SUI) or full type.
intent.actionstringswap, transfer, stake, supply, or anything else.
intent.passstringThe Agent Pass object id when the agent acts under a pass. Found from the bytes when left out.
intent.walletstringWhose funds the limits are about. Default: the pass owner under a pass, else the signer.
intent.max_spendobjectCoin -> most that may leave the wallet, for example { "USDC": "5000" }. Gas is separate. Any other coin leaving fails the check.
intent.min_receiveobjectCoin -> least that must arrive, for example { "nUSDC": "4990" }.
intent.deadline_msintegerUnix milliseconds the agent must send by.

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/receipt" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{
  "tx_bytes": "<base64 TransactionData>",
  "intent": {
    "action": "swap",
    "coin_in": "USDC",
    "coin_out": "SUI",
    "amount": "0.2",
    "max_spend": {
      "USDC": "0.2"
    },
    "min_receive": {
      "SUI": "0.2"
    }
  }
}'
TypeScript
const res = await fetch("https://api.tide.ad/v1/tx/receipt", {
  method: "POST",
  headers: {
    "x-api-key": process.env.TIDE_API_KEY!,
    "content-type": "application/json",
  },
  body: JSON.stringify({
    "tx_bytes": "<base64 TransactionData>",
    "intent": {
      "action": "swap",
      "coin_in": "USDC",
      "coin_out": "SUI",
      "amount": "0.2",
      "max_spend": {
        "USDC": "0.2"
      },
      "min_receive": {
        "SUI": "0.2"
      }
    }
  }),
});
const data = await res.json();

Response

No example response is available for this method yet.