Skip to main content
Status: private / entitled-only. The endpoint exists in production but your aeg_… bearer must be flipped consensus_enabled = true by an Aegis operator. Until then the call returns 403 consensus_not_entitled. Reach out via the channel in your onboarding email.
Run several independent AML providers (Aegis + your entitled paid providers — BitOK / ScoreChain / Crystal) over an address and get back one final audit: can you deal with this address, will a major exchange flag funds from it, and how many independent providers agree. The product sells defensibility and explainability — N-of-M agreement and a regulator-ready rationale — not a single score. Each provider’s raw verdict is passed through as-is alongside the synthesized final audit.

Request

curl -X POST https://api.aegis-kyt.com/v2/inspect-address \
  -H "Authorization: Bearer aeg_YOUR_KEY_HERE" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: idem-2026-06-17-7a3c" \
  -d '{
    "address": "0x28C6c06298d514Db089934071355E5743bf21d60",
    "network": "ETH"
  }'
FieldTypeRequiredNotes
addressstring (1–120)yesEVM hex (auto-lowercased) or TRON base58.
networkstringyesETH · BSC · TRON only. Others → 400 unsupported_network.
providersstring[]noSubset of your entitled providers. Default = your saved active subset. Anything outside entitlement is silently dropped; globally-disabled providers are waived (not charged). aegis is always included.
Optional headers:
HeaderPurpose
Idempotency-Key: <≤64 chars>Strongly recommended. Replay-safe within 24h. Same key + same body → cached response, no second charge. Different body → 409 idempotency_conflict. Required to safely retry across 504 / TCP-disconnect.

Synchronous, with a 202 fallback

The endpoint waits up to ~115s for completion (BFS-heavy graphs are slow on cold cache; partner SLA targets resolve before this). Three outcomes:
  • 200 — completed. Body carries the synthesized final audit + each provider’s raw verdict + a billing envelope. Charged once.
  • 202 — still running past the sync budget. Body is { check_id, retry_url, created_at }. Fetch the verdict via the free GET /v2/inspect/{check_id}/result — you are billed once between the 202 and the eventual 200, never twice.
  • 402insufficient_funds / monthly_cap_exceeded.
  • 403consensus_not_entitled — your key is not flipped to consensus yet (entitlement gate, see Note at top).
  • 409idempotency_conflict — same key + different body within 24h.
  • 504 — gateway timeout (cold-graph BFS exceeded the wall-clock cap). Nothing charged. Retry with the same Idempotency-Key to get a 200 or 202 — the retry rides whatever pipeline the first attempt started.

Billing semantics on disconnect

The contract is at-most-once charge, anchored by row-stable idempotency:
EventCharge state
200 with verdictcharged once (deduped if you replay with the same Idempotency-Key)
202 with check_idcharged once on the first successful delivery — i.e. the eventual 200 on the poll URL, not the 202 itself
Client TCP disconnect between 202 and pollcharge still attached to that check_id; poll the result URL when you reconnect to get the verdict you already paid for
504 gateway timeoutnot charged; retry safely with the same Idempotency-Key
502 / 503 from a downstream providernot charged; result returns {ok: false, error} on that provider; the rest of the fan-out completes and is charged
Hard-fail past the wall-clock cap (rare)reaper marks the row failed_timeout at 15m; if you were upfront-charged the refund posts automatically with idem-key refund:{check_id} (kya-session path only; /v2/inspect-address is charge-on-success so the refund-on-hard-fail branch does not apply)
The key invariant: same Idempotency-Key carries one charge across an arbitrary number of retries / reconnects in the 24h window. Reuse it; never rotate per-attempt.

Poll

curl https://api.aegis-kyt.com/v2/inspect/<check_id>/result \
  -H "Authorization: Bearer aeg_YOUR_KEY_HERE"
Returns:
  • 200 — verdict, charged once on the first successful delivery.
  • 202 — still running; poll again after a short backoff (start at 2s, cap at 10s — there’s no rate-limit penalty for polling but no benefit past 10s either).
  • 404 — unknown check_id or not owned by the caller.
  • 502 — pipeline error; not charged.

See also