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)

🆕 Adding a new quick check

PUT /api/fast-check

Queues an address for checking and immediately returns the check record with status 0. The result is fetched with a separate request — see Check lifecycle and statuses.

Body parameter

address: TLXvVN23UkxS4SW4JuQMhAYw9NNP8zwGyA
currency: usdt
network: trx

🛠️ Parameters

NameInTypeRequiredDescription
» addressbodystringtrueBlockchain address
» currencybodystringtrueCurrency (lowercase ticker): usdt, usdc, btc, eth, trx, …
» networkbodystringfalseNetwork: trx, btc, eth, bsc, polygon, avax, arbitrum, optimism, base, zksync, toncoin, ton, solana, merlin, iotex, ltc, doge, bch, hsk, sui. Defaults to the value of currency

Case does not matter: currency and network are lowercased, spaces are stripped from the address, ETH addresses are normalised to lowercase.

Risk scoring is bound to the "currency + network" pair, not to the address alone. The same TRON address with currency=usdt and with currency=trx produces two different checks with different id values and different data. Check the currency the funds actually move in.

♻️ Calling it again for the same address

The method is idempotent for the user + address + currency + network tuple:

  • if you already have a check for that address, the same record is returned: the same id and uuid, status reset to 0, and the job queued again;
  • a new record is created only when the address, the currency or the network differs.

You can store the id on your side and keep using it: PUT /api/fast-check for the same address and GET /api/fast-check/{id}/run do exactly the same thing — re-run the check and charge for it.

In the response to a repeated PUT, the risk, analysis, info and labels fields hold the result of the previous run. Fresh data appears once status becomes 2.

💳 Pricing

Every call charges the price of one quick check (the price field in the response; 1 by default, or the price of your tariff plan). If the balance is not sufficient, the check is neither created nor queued and 402 is returned.

Example request

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'

Example responses

200 Response — repeated check of a known address (data from the previous run)

{
  "id": 1234,
  "user_id": 42,
  "crypto_address_id": 777,
  "uuid": "a3edde0e-7939-40a4-ba74-ec097802a5fb",
  "risk": {
    "score": 100,
    "risk_detail": [
      {
        "label": "phishing",
        "type": "phishing",
        "volume": 0,
        "address": "TLXvVN23UkxS4SW4JuQMhAYw9NNP8zwGyA",
        "percent": 100,
        "risk": null
      }
    ],
    "providers": {
      "f": 100
    }
  },
  "analysis": {},
  "info": {
    "balance": "0",
    "tx_count": "3",
    "first_tx_time": "23.07.2025 12:38",
    "last_tx_time": "23.07.2025 13:26"
  },
  "labels": [],
  "status": 0,
  "new": false,
  "tracking": false,
  "created_at": "2026-09-11T10:14:45.000000Z",
  "updated_at": "2026-09-11T10:14:45.000000Z",
  "price": 1,
  "balance": 743.57828338
}

For an address checked for the first time, risk, analysis, info and labels come back empty ([]) and are filled once status becomes 2.

402 Response

{
  "status": false,
  "message": "Недостаточно баланса"
}

🔁 Responses

StatusMeaningDescriptionSchema
200OKThe check has been created (or an existing one re-run) and queuedFastCheckDetail
400Bad RequestThe address does not pass format validation for the given networkInline
401UnauthorizedToken missing or invalidInline
402Payment RequiredInsufficient balance, the check was not createdInline
422Unprocessable EntityAddress or currency missing, or an unsupported currency/network was passedInline

📋 Response Schema

Status Code 200

NameTypeRequiredRestrictionsDescription
» idintegerfalsenoneCheck identifier, stable for a given address
» user_idintegerfalsenoneCheck owner
» crypto_address_idintegerfalsenoneInternal address identifier
» uuidstringfalsenonePublic identifier of the check (report link)
» riskobjectfalsenoneRisk score; right after queueing it is from the previous run
»» scoreintegerfalsenoneTotal risk score, 0–100
»» risk_detail[object]¦nullfalsenoneTriggered risk labels
»» providersobjectfalsenoneScore sources; an empty object means no data was received
» analysisobject¦nullfalsenoneBreakdown of incoming and outgoing operations
» infoobjectfalsenoneAddress summary: balance, transaction count, dates
» labels[string]falsenoneAddress labels
» statusintegerfalsenone0 — queued, 1 — running, 2 — done
» newbooleanfalsenoneThere is an unseen result
» trackingbooleanfalsenoneDaily tracking enabled
» created_atstringfalsenoneCreation date
» updated_atstringfalsenoneDate the data was last updated
» pricenumberfalsenoneCharged price of the check
» balancenumberfalsenoneRemaining balance after the charge
This operation requires an API key — see API key authentication.
Last Updated:: 9/29/26, 11:41 AM
Contributors: amlkyc, afinogen, Claude Opus 5
Prev
♻️ Check lifecycle and statuses
Next
📑 Getting a list of quick checks