Контекст адреса.
В одном запросе.
JSON API для 52 сетей. Персональные ключи, учёт запросов и явные статусы источников.
1. Авторизация
Администратор создаёт аккаунт. Войдите в кабинет и откройте «Мои API-ключи». При выпуске полное значение показывается один раз. Передавайте его на сервере в заголовке:
Authorization: Bearer ai_live_… # Альтернативный заголовок X-API-Key: ai_live_…
Не размещайте ключ в публичном коде сайта. После отзыва ключ немедленно перестаёт работать. У отключённого пользователя не работают ни сессии, ни API-ключи.
2. Проверка адреса
POST /v1/checkcurl -X POST https://scan.bitfm.pro/v1/check \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"network": "tron",
"address": "TSrJgEFKMo4mpAuYC2xC4prJ5Q2Ryh3M3d"
}'Сначала проверяется собственная БД, затем Arkham, затем ChainLabel. При локальном совпадении внешние квоты не расходуются. Внешний сбор может занять до минуты; предусмотрите таймаут клиента не менее 90 секунд.
Необязательный details: true включает диагностические данные TRONGrid / Tronscan при промахе в базе. Такой запрос может занять несколько минут.
Выбор сети
Передайте network явно, например bitcoin, ethereum, base, solana, ton. Без сети или с auto сервис определит возможные варианты. Если формат общий для нескольких сетей, вернётся HTTP 409 network_required со списком кандидатов. В частности, EVM-адрес сам по себе не определяет сеть.
Открытый GET /v1/networks возвращает актуальные сети, псевдонимы и покрытие источниками. POST /v1/detect с телом {"address":"…"} определяет кандидатов без расхода суточной квоты. Валидация формата не подтверждает существование аккаунта или владение им. Для Zcash доступны только прозрачные t1/t3-адреса, поддержка UTXO — только mainnet.
Собственная база доступна для 48 сетей, ChainLabel — для 16. Источник без поддержки выбранной сети пропускается без расхода квоты. Для EVM сбор через Arkham отключён, пока нельзя гарантировать привязку метки к конкретной сети. Балансы и переводы через details:true доступны только в TRON; для остальных сетей — HTTP 422.
Пример результата
{
"address": "TSrJgEFKMo4mpAuYC2xC4prJ5Q2Ryh3M3d",
"network": "tron",
"status": "partial",
"label_status": "found",
"primary_label": {
"entity": "Poloniex",
"category": "exchange_deposit",
"source": "chainlabel",
"confidence": null
},
"risk": { "score": null, "level": "unknown" }
}partial означает неполный охват данных, включая AML. pending с HTTP 202 — адрес уже собирается другим запросом, повторите проверку позже. label_status: found, not_found или unknown. Нулевая уверенность и неизвестная уверенность различаются: null означает, что источник её не сообщил.
3. Другие методы
| Метод | Путь | Назначение |
|---|---|---|
| GET | /v1/address/{network}/{address} | Известные данные без запуска сбора; 404, если их нет. |
| GET | /v1/networks | Сети и покрытие, без авторизации. |
| POST | /v1/detect | Кандидаты сетей, без расхода суточной квоты. |
| GET | /v1/usage | Суточная квота, расход и темп запросов текущего пользователя. |
| GET | /v1/health | Состояние API, без авторизации. |
4. Лимиты и ошибки
До 10 запросов в секунду на пользователя суммарно по его ключам. Суточную квоту назначает администратор, период — сутки UTC. Каждый валидный вызов POST /v1/check, включая локальное совпадение, расходует пользовательскую квоту. Внешние квоты источников учитываются отдельно.
{ "error": "daily_quota_exceeded" }| HTTP | Ошибка | Что делать |
|---|---|---|
| 400 | invalid_address / unsupported_network | Проверьте сеть и контрольную сумму адреса. |
| 409 | network_required | Выберите сеть из списка networks. |
| 422 | details_not_supported | Детальный сбор доступен только для TRON. |
| 401 | unauthorized | Проверьте ключ и статус аккаунта. |
| 404 | address_not_found | Выполните POST /v1/check. |
| 429 | rate_limited | Повторите через секунду; см. Retry-After. |
| 429 | daily_quota_exceeded | Дождитесь нового дня UTC или изменения квоты. |
На успешных проверках заголовки X-DailyLimit-Limit и X-DailyLimit-Remaining показывают лимит и остаток.
Метки не являются доказательством владения. Отсутствие метки не означает отсутствие риска. Полный санкционный и AML-анализ в текущую версию не включён.