🆕 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| » address | body | string | true | Blockchain address |
| » currency | body | string | true | Currency (lowercase ticker): usdt, usdc, btc, eth, trx, … |
| » network | body | string | false | Network: 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.
♻️ 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
idanduuid,statusreset to0, 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.
💳 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
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | The check has been created (or an existing one re-run) and queued | FastCheckDetail |
| 400 | Bad Request | The address does not pass format validation for the given network | Inline |
| 401 | Unauthorized | Token missing or invalid | Inline |
| 402 | Payment Required | Insufficient balance, the check was not created | Inline |
| 422 | Unprocessable Entity | Address or currency missing, or an unsupported currency/network was passed | Inline |
📋 Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » id | integer | false | none | Check identifier, stable for a given address |
| » user_id | integer | false | none | Check owner |
| » crypto_address_id | integer | false | none | Internal address identifier |
| » uuid | string | false | none | Public identifier of the check (report link) |
| » risk | object | false | none | Risk score; right after queueing it is from the previous run |
| »» score | integer | false | none | Total risk score, 0–100 |
| »» risk_detail | [object]¦null | false | none | Triggered risk labels |
| »» providers | object | false | none | Score sources; an empty object means no data was received |
| » analysis | object¦null | false | none | Breakdown of incoming and outgoing operations |
| » info | object | false | none | Address summary: balance, transaction count, dates |
| » labels | [string] | false | none | Address labels |
| » status | integer | false | none | 0 — queued, 1 — running, 2 — done |
| » new | boolean | false | none | There is an unseen result |
| » tracking | boolean | false | none | Daily tracking enabled |
| » created_at | string | false | none | Creation date |
| » updated_at | string | false | none | Date the data was last updated |
| » price | number | false | none | Charged price of the check |
| » balance | number | false | none | Remaining balance after the charge |