Finance OS / API

Проверка адреса

Синхронно проверяет блокчейн-адрес, сохраняет запись и возвращает полный обезличенный отчёт в теле ответа 201. Идентификатор проверки (id) используйте для повторного получения отчёта и выгрузки PDF — см. Отчёты и PDF.

POST /api/v1/aml/checks
Bearer Token

Проверить блокчейн-адрес

Один запрос выполняет всю оценку и возвращает готовый отчёт. Очереди и опроса результата нет.

Body

Name Type Required Description
address string required Блокчейн-адрес. Максимум 120 символов.
network string optional Сеть адреса: tron, ethereum, bitcoin, litecoin и т.д. Максимум 20 символов. Если не указана — сеть определяется по формату адреса; для адресов, валидных в нескольких сетях (например EVM-совместимых), указывайте явно.

Responses

{
  "data": {
    "id": "b7e4c1a2-3f5d-4e8a-9c1b-2d6f7a8e0b3c",
    "address": "TXYZ1234567890abcdefGHIJKLmnop",
    "network": "tron",
    "risk_score": 64,
    "risk_level": "high",
    "report": {
      "risk_score": 64,
      "risk_level": "high",
      "recommendation": "reject",
      "signals": {
        "sanctioned": false,
        "watchlisted": false,
        "watchlist_category": null,
        "community_reports": 4,
        "high_risk_counterparties": 1,
        "fatf_country": true,
        "is_stablecoin_contract": false,
        "defi_exposure_score": 24
      },
      "factors": [
        { "code": "cluster_risk",    "label": "Кластерный риск",                        "score": 4  },
        { "code": "direct_exposure", "label": "Прямая экспозиция к рисковым адресам",    "score": 14 },
        { "code": "anomaly_ml",      "label": "Поведенческие ML-аномалии",               "score": 64 }
      ],
      "networks": [
        {
          "network": "tron",
          "native_balance": 0,
          "tx_count": 231,
          "first_tx_at": null,
          "last_tx_at": null,
          "is_contract": false
        }
      ],
      "balances": {
        "USDT": 0,
        "USDC": 0,
        "tx_count": 231,
        "account_age_days": 512
      },
      "checked_at": "2026-07-13T10:24:00+00:00",
      "sandbox": true
    },
    "pricing": { "markup_pct": 0 },
    "report_url": "https://fin-os.io/api/v1/aml/checks/b7e4c1a2-3f5d-4e8a-9c1b-2d6f7a8e0b3c/report.pdf",
    "created_at": "2026-07-13T10:24:00+00:00"
  }
}

Поле report.sandbox присутствует и равно true только в sandbox-ответах; в live его нет.

Вердикт: score → level → recommendation

risk_score (0–100) отображается в risk_level по порогам, а risk_level — в готовую рекомендацию recommendation. Соответствие уровня и рекомендации одинаково в обоих окружениях. Для быстрых правил на своей стороне полагайтесь именно на recommendation.

Name Type Required Description
0–39 low optional recommendation: allow — пропустить.
40–59 medium optional recommendation: review — на ручную проверку.
60–79 high optional recommendation: reject — отклонить.
80–100 critical optional recommendation: block — заблокировать.
Санкции и критический риск
При попадании в санкционные списки (signals.sanctioned = true) и при risk_level: critical рекомендация всегда block. Такие адреса блокируйте жёстко на своей стороне — не полагайтесь только на «мягкие» пороги.

signals

Плоский набор булевых и числовых сигналов — самые «читаемые» поля для быстрых правил на вашей стороне.

report.signals

Name Type Required Description
sanctioned bool optional Адрес найден в санкционных списках.
watchlisted bool optional Адрес найден в watchlist.
watchlist_category string|null optional Категория watchlist-совпадения (например high_risk_entity) или null.
community_reports int optional Число публичных жалоб сообщества на адрес.
high_risk_counterparties int optional Число контрагентов с высоким риском.
fatf_country bool optional Связь с юрисдикцией из индикаторов FATF.
is_stablecoin_contract bool optional Адрес является контрактом стейблкоина.
defi_exposure_score int|null optional Оценка экспозиции к DeFi (0–100) или null.

factors

Разложение скоринга по факторам. Каждый элемент — { code, label, score }, где score — вклад фактора (0–100). Состав массива зависит от адреса и может пополняться, поэтому обрабатывайте его как список, а не как фиксированный набор ключей. Возможные коды:

report.factors[].code

Name Type Required Description
cluster_risk string optional Кластерный риск.
direct_exposure string optional Прямая экспозиция к рисковым адресам.
community_reports string optional Публичные жалобы сообщества.
balance_risk string optional Риск по балансу и активности.
fatf_indicators string optional Юрисдикционные индикаторы (FATF).
historical_coin_risk string optional Исторический риск актива.
anomaly_ml string optional Поведенческие ML-аномалии.
loo_toxicity string optional Токсичность окружения.
multihop_trace string optional Многоступенчатая трассировка.
bridge_contamination string optional Контаминация через кросс-чейн мосты.
defi_exposure string optional DeFi-экспозиция.
time_of_day_pattern string optional Временной паттерн активности.
velocity_decay string optional Затухание скорости операций.
token_mix_entropy string optional Энтропия набора токенов.
realtime_security string optional Реал-тайм проверка безопасности контракта.
intelligence_verdicts string optional Сводные вердикты разведданных.
deprecated_stablecoins string optional Устаревшие стейблкоины.

networks и balances

report.networks[] — агрегаты активности по каждой затронутой сети.

report.networks[]

Name Type Required Description
network string optional Сеть: tron, ethereum, bitcoin, litecoin и т.д.
native_balance number optional Баланс нативной монеты сети.
tx_count int optional Число транзакций в этой сети.
first_tx_at datetime|null optional Первая транзакция (ISO 8601) или null.
last_tx_at datetime|null optional Последняя транзакция (ISO 8601) или null.
is_contract bool optional Адрес — смарт-контракт.

report.balances — сводные балансы и метрики по адресу.

report.balances

Name Type Required Description
USDT number optional Баланс USDT.
USDC number optional Баланс USDC.
tx_count int optional Совокупное число транзакций.
account_age_days int|null optional Возраст адреса в днях или null.

pricing

pricing.markup_pct — процент наценки, применяемый к базовой стоимости проверки в вашем контуре. Без активного мерчант-профиля или на базовом тарифе — 0.