Skip to main content

When to use this

Reach for this when the badge is not enough, when you want the read as data and full control over what happens next. Your own badge design. Your own warning copy. Your own rule for what a given tier means in your product.

Which endpoint

Base (Arc): https://www.trustgated.xyz. Open CORS on widget, batch, and oracle. Sui coin read (mainnet coin types):
Sui wallet rescore trigger (testnet):

Widget score (single ERC-20)

Special cases:
Errors: 400 invalid_address, 429 rate_limited, 502 detection_failed / scoring_unavailable.

Batch score (discovery)

Response is a JSON array (not { results: [...] }):
tier is BLOCKED | LOW | MEDIUM | HIGH | ELITE | VERIFIED. An error field marks addresses that are not tokens. Official issuers come back as VERIFIED with score: 100 here — the widget path returns score: null for the same assets. See Optional reorder for ranking. Errors: 400 invalid_json | addresses_required | too_many_addresses | invalid_addresses, 429 rate_limited, 502 batch_failed.

Oracle (wallet)

Unpaid: 402 with payment details. Paid replay: X-Payment header. Hardened 200 body (breakdown stripped):
Contract addresses on the unpaid challenge return 400 with code: "CONTRACT_NOT_WALLET". Full payment dance: Oracle.

Using the read

Map the tier to whatever your product shows — a color, a label, a gate. Use the numeric score where you want finer-grained display. Use flags as the reason line. Use confidence as a “how loud is this” slider. Pin scoringVersion if you gate. Top tiers may come back without a useful number. NTT is not a trust tier. HIGH_ELITE and ELITE are the same top behavioral tier.
This is still the non-invasive model. You are pulling a signal and deciding everything downstream. TrustGate has no opinion about how your product uses it.

Next

Oracle payment flow

x402 challenge, settle, replay.

Full API reference

Every path, including gating and Guard.