Nexus Trinity API
One endpoint. Send a contract or wallet address, get back the same analysis the free Contract Reader shows on the web — as JSON, for your own scripts, bots, or dashboards. Real value against bank-priced compliance tools like Chainalysis or Elliptic — and unlike most APIs at this price, going over your daily limit never cuts you off (see Rate limits below). This page is the technical reference; the legal terms are at /legal/api-terms.
Getting a key
API access is a $29/month subscription via Stripe checkout. On successful payment you get one API key by email, shown exactly once — we store only a hash of it, so we can't re-display it if you lose it. Contact security@nexustrinity.io to revoke and reissue.
Authentication
Send your key as a bearer token on every request:
Authorization: Bearer ntk_...
A missing or inactive key returns 401.
Make a request
POST /api/v1/check against https://nexustrinity.io. Body is JSON: address (required) and chain (optional, defaults to ethereum). The same endpoint handles both contracts and wallets — you don't need to tell it which; it works that out from the address itself, same as the free tool.
curl -X POST https://nexustrinity.io/api/v1/check \
-H "Authorization: Bearer ntk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "chain": "ethereum"}'Response — contract address
kind: "contract". analysis carries the capability findings (owner powers, rug vectors, notable code, scope, and limitations) — same shape and depth as the free web tool.
{
"success": true,
"kind": "contract",
"address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"chain": "Ethereum",
"explorer": "etherscan.io/address/0xC02...#code",
"analysis": {
"tokenName": "Wrapped Ether",
"observations": [ { "id": "...", "title": "...", "finding": "PRESENT | ABSENT | UNDETERMINED", "evidence": "...", "whyItMatters": "..." } ],
"rugVectors": [ { "id": "...", "title": "...", "present": "YES | NO | UNDETERMINED", "severity": "HIGH | MEDIUM", "howItRugsYou": "...", "evidence": "..." } ],
"analysisScope": { "isProxy": false, "sourceTruncated": false },
"notableCode": [ "..." ],
"limitations": [ "..." ]
},
"remaining": 99,
"timestamp": "2026-08-15T00:00:00.000Z"
}Response — wallet address
kind: "wallet". Pure on-chain facts — no score, no scam-list check, nothing inferred beyond what's on-chain. historyUnavailable: true means the underlying chain data couldn't be confirmed either way — never treat that the same as "confirmed empty."
{
"success": true,
"kind": "wallet",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"chain": "Ethereum",
"nativeSymbol": "ETH",
"explorer": "etherscan.io/address/0xd8d...",
"wallet": {
"nativeBalance": "12.4",
"txCount": 842,
"firstSeenAt": "2018-05-02T10:14:22.000Z",
"lastActiveAt": "2026-08-10T03:41:09.000Z",
"ageDays": 3028,
"recentTransactions": [ { "hash": "0x...", "direction": "in | out", "counterparty": "0x...", "valueFormatted": "0.5", "timestamp": "..." } ],
"recentTokenTransfers": [ { "hash": "0x...", "tokenSymbol": "USDC", "tokenName": "USD Coin", "direction": "in | out", "counterparty": "0x...", "valueFormatted": "100", "timestamp": "..." } ],
"historyConfirmedEmpty": false,
"historyUnavailable": false
},
"remaining": 98,
"timestamp": "2026-08-15T00:00:00.000Z"
}Deep reports over the API
POST /api/v1/deep-report — same key, same auth header, but a different product and a different billing model entirely. This runs the full-depth analysis (Claude Sonnet 5, not the free tool's Groq model): a bigger source budget, extra capability categories, and a written summary — same depth as the one-off $19 web purchase. It doesn't draw from your daily_limit at all. Instead, every subscription includes a metered line item that only bills when you actually call this endpoint — $19 per successful call, charged after the analysis completes, never for a failed one. Nothing to provision or pre-purchase; call it and it's on your next invoice.
curl -X POST https://nexustrinity.io/api/v1/deep-report \
-H "Authorization: Bearer ntk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "chain": "ethereum"}'Response shape mirrors /api/v1/check's contract response, with analysis carrying the extra deep-report fields (summary, feeStructure, ownerTransfer, blacklistExceptions, externalDependencies). No remaining field — there's no daily cap to count down. Wallet addresses aren't supported here (a deep report is a contract product) — pass a contract address.
- 400Missing/malformed address, or an unsupported chain slug.
- 401Missing, invalid, or inactive API key.
- 402Key isn't set up for per-call billing — contact support.
- 404Source isn't verified on that chain, so it can't be analyzed.
- 500Analysis failed — not billed. Retry.
Sanctions screening over the API
POST /api/v1/screen — same key, same auth header, but its own quota (tracked independently from Contract Reader checks — see Rate limits below). Direct-match screening against OFAC's published Specially Designated Nationals digital-currency address list, refreshed daily. Works on any address — a contract or a plain wallet — no chain parameter needed.
curl -X POST https://nexustrinity.io/api/v1/screen \
-H "Authorization: Bearer ntk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"address": "0x..."}'{
"success": true,
"address": "0x...",
"sanctioned": false,
"matches": [],
"source": "OFAC Specially Designated Nationals (SDN) List — digital currency addresses",
"listLastSynced": "2026-09-01T07:45:00.000Z",
"scope": "Direct-match screening against OFAC's published SDN list only...",
"remaining": 499,
"timestamp": "2026-09-01T12:00:00.000Z"
}If sanctioned is true, matches lists every currency/entity pairing the address is listed under — an address can legitimately match more than one.
Errors
Every error response is { "error": "..." } with one of these statuses (this table is for /api/v1/check and /api/v1/screen — the deep-report endpoint has its own set above):
- 400Missing/malformed address, or an unsupported chain slug.
- 401Missing, invalid, or inactive API key.
- 404Address is a contract, but its source isn't verified on that chain — nothing to analyze (check only).
- 413Contract is too large to analyze right now (check only).
- 500Analysis or lookup failed — retry.
Note what's not in that list: going over your daily limit is not an error. See Rate limits below.
Rate limits
Your key has two independently-tracked daily limits, shown at checkout and in your welcome email — one for Contract Reader checks, one for sanctions screenings. Each is a rolling 24-hour window from each counted request, not a fixed calendar reset.
Going over your limit never returns an error. The request still succeeds — remaining in the response just reads 0 once you're at capacity. We get notified automatically and follow up to raise your limit; you're never blocked while that happens. If you're integrating this and want to watch for it yourself, remaining: 0 is the signal — not a 429.
If our usage-tracking system itself is unreachable, the request is rejected rather than let through unchecked — that failure mode (infrastructure being down) is different from a plan limit, and the API fails closed on it, same principle as everything else we build.
Supported chains (23)
Pass the slug on the left as chain. Full, live list — this is generated from the same config the API itself reads, so it can't drift out of sync.
ethereum — Ethereum (ETH) base — Base (ETH) arbitrum — Arbitrum (ETH) optimism — Optimism (ETH) polygon — Polygon (POL) bsc — BNB Chain (BNB) avalanche — Avalanche (AVAX) linea — Linea (ETH) blast — Blast (ETH) gnosis — Gnosis (xDAI) mantle — Mantle (MNT) celo — Celo (CELO) opbnb — opBNB (BNB) sonic — Sonic (S) unichain — Unichain (ETH) abstract — Abstract (ETH) berachain — Berachain (BERA) sei — Sei (SEI) bittorrent — BitTorrent Chain (BTT) fraxtal — Fraxtal (frxETH) xdc — XDC (XDC) apechain — ApeChain (APE) worldchain — World Chain (ETH)