🧾 Проверка транзакции: как устроена
Проверка транзакции (tx-check) принимает хеш транзакции, сама определяет сеть, достаёт стороны перевода и оценивает риск каждого адреса. Итоговый score — максимум по сторонам, а в ответе видно, какой именно адрес его дал.
Отличие от быстрой проверки: там объект проверки — адрес в конкретной валюте, здесь — транзакция целиком, и сеть указывать не нужно.
🌐 База и конверт ответа
POST https://amlkyc.tech/api/v1/tx-checks
Authorization: Bearer <API_TOKEN>
Accept: application/json
Content-Type: application/json
Успешный ответ всегда одной формы:
{
"success": true,
"message": "Tx check created.",
"data": { }
}
Ошибка — тоже:
{
"success": false,
"message": "Insufficient balance."
}
Для ошибок валидации добавляется объект errors с полями.
🔐 Доступ
Проверка транзакций подключается аккаунту по запросу — напишите в поддержку. Пока она не подключена, любой из методов отвечает 403 и message: Tx check is not enabled for this account.
Отдельных настроек у API-ключа не требуется: подойдёт любой ключ, выпущенный в кабинете.
Про сам заголовок авторизации — см. Аутентификация по API-ключу.
🧮 Сети и форматы хеша
Сеть определяется по форме хеша и подтверждается запросом в саму сеть — параметр network в запросе не обязателен.
| Форма хеша | Сети-кандидаты |
|---|---|
0x + 64 hex | eth, bsc, polygon, arbitrum, base, optimism, avax, zksync, iotex, merlin, hsk |
| 64 hex без префикса | trx, btc, ltc, doge, bch, ton |
| 86–88 символов base58 | solana |
| 43–44 символа base58 | sui |
43 символа base64 + = | ton |
Если хеш подтвердился сразу в нескольких сетях (обычно EVM-семейство), берётся первая подтверждённая; переданный network учитывается, когда он среди подтверждённых.
🚦 Статусы
status | status_label | Что значит |
|---|---|---|
| 0 | new | Проверка создана и поставлена в очередь |
| 1 | processing | Скоринг сторон выполняется |
| 2 | done | Готово: заполнены summary, results, score |
| 3 | failed | Не удалось получить данные, причина — в поле error |
Результат забирается опросом карточки проверки: опрашивайте раз в несколько секунд, пока status_label не станет done или failed.
# опрос до завершения
until curl -s "https://amlkyc.tech/api/v1/tx-checks/$ID" \
-H "Authorization: Bearer $API_TOKEN" -H 'Accept: application/json' \
| tee /tmp/tx.json | grep -qE '"status_label":"(done|failed)"'; do sleep 5; done
cat /tmp/tx.json
Проверка идёт в той же очереди, что и быстрые проверки, и занимает от нескольких секунд до пары минут — таймаут в клиенте закладывайте порядка 10 минут, а не секунд.
⚠️ Коды ошибок в `error`
Поле заполняется только при статусе failed:
error | Что произошло |
|---|---|
transaction_details_unavailable | Сеть подтвердила транзакцию, но детали (стороны перевода) получить не удалось |
risk_sources_unavailable | Стороны известны, но ни один адрес не удалось отскорить |
internal_error | Внутренняя ошибка, все попытки исчерпаны |
💳 Тарификация и лимиты
- Списание — одна проверка за каждый успешный
POST /api/v1/tx-checks; цена берётся из вашего тарифа (полеtx_check_price), по умолчанию —1. В истории баланса операция помечается назначением «Проверка транзакции» (tx_check). - Повторная отправка того же хеша, пока проверка в полёте, денег не списывает — вернётся текущая запись. Отправка уже завершённой (
done) проверки — это новый платный прогон. - Если хеш не найден (
422) или источники молчат (503), списания нет. - Лимит запросов общий для всего API — 60 в минуту, см. Лимиты запросов и тарификация.
📚 Методы
| Метод | Назначение |
|---|---|
POST /api/v1/tx-checks | Создать проверку по хешу |
GET /api/v1/tx-checks | Список проверок с фильтрами |
GET /api/v1/tx-checks/{id} | Карточка проверки и результат |