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

API
auth.verify

Method

auth.verify

Finish sign-in: trade a signature for a 30-day session token.

Details

Endpoint
POST /v0/auth/verify
Credits
Free
Rate class
Light. Counts against your light requests per second.

Checks the signature over the message from POST /v0/auth/nonce and returns a session token that starts with `tsess_`. Send it as `Authorization: Bearer <token>` to the account and key routes. The account is created on first sign-in with the Free plan. Sessions last 30 days. Costs nothing.

Parameters

NameTypeDescription
addressrequiredstringThe Sui address that signed (0x + 64 hex).
signaturerequiredstringBase64 Sui signature of the personal message from /v0/auth/nonce. Any scheme works: ed25519, secp256k1, secp256r1, zkLogin, multisig.
messagestringThe exact `message` text returned by POST /v0/auth/nonce. Send this, or nonce and issued.
noncestringThe nonce from POST /v0/auth/nonce (with issued, instead of message).
issuedstringThe issued time from POST /v0/auth/nonce (with nonce, instead of message).

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/v0/auth/verify" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{
  "address": "0x7d20dcdb2bca4f508ea9613994683eb4e76e9c4ed371169677c1be02aaf0b58e",
  "signature": "<base64 signature>",
  "message": "<message from /v0/auth/nonce>"
}'
TypeScript
const res = await fetch("https://api.tide.ad/v0/auth/verify", {
  method: "POST",
  headers: {
    "x-api-key": process.env.TIDE_API_KEY!,
    "content-type": "application/json",
  },
  body: JSON.stringify({
    "address": "0x7d20dcdb2bca4f508ea9613994683eb4e76e9c4ed371169677c1be02aaf0b58e",
    "signature": "<base64 signature>",
    "message": "<message from /v0/auth/nonce>"
  }),
});
const data = await res.json();

Response

JSON
{
  "token": "tsess_...",
  "expiresAt": "2026-12-03T12:00:00.000Z",
  "address": "0x7d20dcdb2bca4f508ea9613994683eb4e76e9c4ed371169677c1be02aaf0b58e",
  "plan": "free"
}