AMLchain Risk API

Get your Risk API key

Screen ETH, TRON and BTC wallets from your own systems. Sign up with your email to get an API key and 1 free credit: your first check is free.

Create your API key

Enter your email. You get an API key and 1 free credit straight away.

One account per email. By signing up you agree to the Terms of Service and the Privacy Policy.

How it works

Submit, poll, read

  • 1. Submit a wallet

    POST /v1/checks with the address. You get a check_id back at once, plus your place in the queue.

  • 2. Poll for the result

    GET /v1/checks/{check_id} every few seconds until the status is done or failed.

  • 3. Read the verdict

    A done check carries the full result: verdict, risk score, exposure, freeze status and a cross-chain report link.

Checks are asynchronous

A check usually takes 30–120 seconds. Checks run one at a time on the same analysis engine as our WhatsApp service, so when it is busy your check waits in a queue; every response shows your position and an estimated wait. Build your integration to submit, then poll. Don’t hold a connection open waiting for the result.

Quickstart

Your first check in three calls

Send your key in the X-Api-Token header. Base URL: https://api.amlchain.com

1. Submit a wallet

request
curl -X POST https://api.amlchain.com/v1/checks \
  -H "X-Api-Token: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"address": "WALLET_ADDRESS"}'
response
HTTP/1.1 202 Accepted
{
  "check_id": "chk_8f14e45fceea167a5a36dedd",
  "status": "pending",
  "chain": "TRON",
  "queue": { "position": 1, "estimated_wait_s": 90 },
  "charged": false
}

Optional: send an Idempotency-Key header. Retrying with the same key returns the same check instead of creating (and paying for) a new one.

2. Poll until done

request
curl https://api.amlchain.com/v1/checks/chk_8f14e45fceea167a5a36dedd \
  -H "X-Api-Token: YOUR_API_KEY"
response (example values)
{
  "check_id": "chk_8f14e45fceea167a5a36dedd",
  "status": "done",
  "charged": true,
  "result": {
    "schema": "1.0",
    "outcome": "report",
    "subject": { "address": "T…", "chain": "TRON" },
    "verdict": { "safe": false, "risk_level": "medium", "risk_score": 51,
                 "frozen": false, "reasons": ["sanctions_exposure"] },
    "exposure": { "flagged_pct": 0.86, "sanctions_usd": 6591.33,
                  "scam_usd": 4.58, "counterparties": ["Exchange", "Dex"] },
    "freeze": { "status": "not_frozen" },
    "cross_chain_report_url": "https://…"
  }
}

3. Check your credits

request
curl https://api.amlchain.com/v1/account -H "X-Api-Token: YOUR_API_KEY"
response (shortened)
{
  "credits": { "balance": 4, "reserved": 1, "available": 3 },
  "keys": [{ "prefix": "amlk_AbC1234", "revoked": false }],
  "ledger": [{ "kind": "check_debit", "delta": -1, "check_id": "chk_…" }]
}
Reference

Result fields

FieldMeaning
statuspending, processing, done or failed. A failed check has result: null and is never charged.
result.outcomereport, report_text, report_indirect_only, no_transactions, incomplete or failed.
result.verdict.safetrue only when the analysis positively confirms it; false for a risky or frozen wallet; null when the check could not be completed. Never treat null as safe.
result.verdict.risk_levellow, medium, high, critical or unknown, with risk_score (0–100) and the reasons behind it.
result.verdict.frozenWhether the wallet is frozen by the stablecoin issuer.
result.exposureflagged_pct (share of flagged funds), counterparty categories and USD exposure to sanctions, scams, stolen funds and blacklisted wallets.
result.freezeFreeze status of the wallet itself, with the token and date when frozen.
result.cross_chainFunds that arrived through bridges, with source chains; cross_chain_report_url links to the full cross-chain report.
Reference

Errors

Every error is JSON with an error code; most also include a message.

HTTPerrorMeaning
401unauthorizedMissing, wrong or revoked API key.
402out_of_creditsNo credits left. Buy more on WhatsApp.
403account_disabledThe account is disabled. Message us on WhatsApp.
404not_foundUnknown path, or a check that belongs to another account.
409idempotency_key_reusedThe Idempotency-Key was already used for a different wallet.
413request_too_largeRequest body too large.
422invalid_address / unsupported_chainNot a valid ETH, TRON or BTC wallet address, or a transaction hash.
429rate_limited / too_many_in_flight / queue_fullSlow down; see Retry-After.
503service_unavailableTemporarily unavailable. Retry shortly.
Credits and limits

How credits work

  • One credit pays for one completed check. A check that fails is never charged.
  • Asking again for the same wallet within 10 minutes returns your earlier check without a second charge.
  • Supported: ETH, TRON, BTC wallet addresses. Transaction hashes are not supported yet.
  • Limits: 20 submissions and 60 status requests per minute per IP address, and 5 checks in progress per account.

Out of credits?

Buy more credits on WhatsApp. Tell us the email on your account and how many checks you need, and we add them to your balance.