Login
Register
  • Русский
  • English
Login
Register
  • Русский
  • English
  • GET STARTED
  • GITHUB
    • 🐘 SDK PHP
    • 👨‍💻 SDK GOLANG
    • ✳️ SDK NODE JS
  • BASICS
    • 🔑 API key authentication
    • ⏱️ Rate limits and pricing
  • AUTHENTICATION
    • 👨‍💼 User authentication
    • 👨‍💼 User registration
    • 🔐 Password recovery
  • INFORMATION
    • 🆕 Adding a new address
    • 🆎 Getting information at the address
    • 🔍 Search for supported cryptocurrencies at
    • 💰 Available currencies
  • RISK CHECK
    • ♻️ Check lifecycle and statuses
    • 🆕 Adding a new quick check
    • 📑 Getting a list of quick checks
    • 📊 Getting information on quick verification
    • 🔄 Rerun a quick check
    • 👁️ Address tracking
  • TRANSACTION CHECK
    • 🧾 How transaction checks work
    • 🆕 Creating a transaction check
    • 📑 List of transaction checks
    • 📊 Getting a transaction check
  • INVESTIGATION
    • 📝 Getting a list of investigations
    • 🕵️‍♂️ Creating an investigation
    • 📋 Receiving information on the investigation
    • 📊 Getting data on the investigation graph
    • 🧐 In-depth investigation within the framework of the investigation
    • 🔄 Investigation launch
  • BALANCES
    • 💰 Getting user`s balance
    • 📜 Creating a payment invoice
    • 💵 Currencies allowed for replenishment
  • KYC VERIFICATION
    • 🆕 Create KYC verification
    • 📑 List KYC verifications
    • ▶️ Start verification session
    • 📷 Upload photos and documents
    • 📋 Get verification details
    • ⚙️ Get session parameters
    • 🔄 Update verification step
    • 🔍 Check document data
    • 👁️ Start liveness check
    • ✅ Verify liveness data
    • 🔤 Recognize document (OCR)

🔄 Check lifecycle and statuses

A quick check runs asynchronously: creating or re-running a check puts a job in the queue and immediately returns the check record. The data (risk, analysis, info, labels) appears in that same record later and has to be fetched with a follow-up request.

📊 Values of the status field

ValueConstantMeaning
0NEWThe check has been created and queued, processing has not started yet
1PROCESSThe check is running: data providers are being queried
2ENDThe check is finished, the data in the record is up to date

No other values are used.

There is no separate "error" status. If a data provider does not respond, the check still ends with status 2: previously collected data for the address is kept and no new data is added. The charge has already been applied.

✅ How to tell that a check is complete

Completion is a pair of conditions: status === 2 and updated_at is newer than the value you saw when you started the check.

t0 = updated_at from the response to PUT /api/fast-check (or GET /api/fast-check/{id}/run)
done when  status == 2  AND  updated_at > t0
Do not use the presence of risk.score as a completion signal. Checking the same address reuses the existing record, so risk is returned right away — but it is the result of the previous run, with status: 0.

⚠️ "Checked" vs "no data received"

If the providers returned nothing, the check still ends with status: 2 and the risk object looks like this:

{
  "score": 0,
  "risk_detail": null,
  "providers": {}
}

An empty providers together with score: 0 means the score could not be obtained, and the address must not be treated as clean. A successful check always has at least one source in providers, e.g. {"m": 12} or {"f": 100}.

⏱️ How long it takes

Checks of one account are processed sequentially, one after another. A single check normally takes from a few seconds up to a couple of minutes (up to four calls to external providers, 120 s timeout each).

When you queue a batch of addresses (e.g. 50 wallet addresses), the last check in the queue may finish several minutes after the first one. A reasonable timeout is 10 minutes; if status has not become 2 by then, re-run the check via GET /api/fast-check/{id}/run.

🔁 Recommended polling loop

# 1. Queue a check (or re-run an existing one)
curl -X PUT 'https://amlkyc.tech/api/fast-check' \
  -H 'Authorization: Bearer <API_TOKEN>' \
  -H 'Accept: application/json' \
  -d 'address=TLXvVN23UkxS4SW4JuQMhAYw9NNP8zwGyA' \
  -d 'currency=usdt' \
  -d 'network=trx'
# => {"id": 1234, "uuid": "...", "status": 0, "updated_at": "2026-09-11T10:14:45.000000Z", ...}

# 2. After 5-10 seconds poll a single check...
curl 'https://amlkyc.tech/api/fast-check/1234' \
  -H 'Authorization: Bearer <API_TOKEN>' -H 'Accept: application/json'

# 3. ...or, if you have many checks, fetch them in one request
curl 'https://amlkyc.tech/api/fast-check?limit=50&updated_from=2026-09-11' \
  -H 'Authorization: Bearer <API_TOKEN>' -H 'Accept: application/json'
When checking several addresses, poll them as a list instead of one by one: a single GET /api/fast-check?limit=50 request instead of 50 separate ones saves your 60 requests per minute budget. See Rate limits and pricing.
Last Updated:: 9/11/26, 8:27 PM
Contributors: afinogen
Prev
INFORMATION
Next
TRANSACTION CHECK