Русский · English
Готовые примеры AML-проверки криптокошелька на шести языках: Python, TypeScript (Node.js), Go, Java, C#, PHP. Скоринг криптоадреса по адресу и сети (BTC, ETH, BNB, TRX, SOL и другие): риск-скор биткоин-адреса от 0 до 100, проверка кошелька на санкции и PEP, источники и назначение средств, контрагенты. Всё, что нужно для крипто-комплаенса, одним HTTP-запросом.
Каждый пример запускается сразу — без регистрации, без ключа, без карты. В коде зашит публичный демо-ключ.
git clone https://github.com/atlorium-api/aml-crypto-screening-api-client
cd aml-crypto-screening-api-client/python && pip install -r requirements.txt && python main.pyДемо-ключ: ответы сгенерированы (моки), не реальные данные.
BTC 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
Риск-балл: 0/100 · severity: LOW · статус: SCREENED
Резюме: Риск не обнаружен (0/100)
Санкции: нет · PEP: нет
Оборот: $409 222.81 · комиссии: $373.27
Назначение средств:
100.0% · exchange_licensed · Новиков, Константинов and Бурова Exchange · Exchange / Licensed · CA
Контрагенты:
Максимова - Сафонова Exchange · Exchange · риск low · 100.0%
КОМПЛАЕНС-ГЕЙТ: ALLOW
[+] Санкционных совпадений нет
[+] PEP-контрагентов нет
[+] Риск-балл 0 ниже порога ручной проверки (40)
Демо-ключ отвечает правдоподобными моками, а не реальными данными блокчейн-аналитики — поэтому названия бирж в примере выше выглядят сгенерированными. Так и задумано: интеграцию можно написать и протестировать до оплаты. Подставьте боевой ключ — тот же код начнёт возвращать настоящий скоринг.
Комплаенс перед выводом средств и зачислением депозита, KYT-мониторинг на бирже или в обменнике, проверка контрагента перед OTC-сделкой, антифрод в платёжном шлюзе, подготовка отчётности для регулятора. Вместо ручного расследования по обозревателю блокчейна — один HTTP-запрос.
Примеры не просто печатают JSON, а применяют данные: в каждом есть функция complianceGate() — комплаенс-гейт, который по риск-баллу и флагам выносит одно из трёх решений: ALLOW (разрешить), REVIEW (ручная проверка), BLOCK (заблокировать). Санкционное совпадение или PEP-контрагент блокируют операцию безусловно, высокий балл — блокирует, средний — отправляет на ручную проверку. Гейт печатает, какие именно факторы повлияли на решение. Пороги вынесены в именованные константы: их нужно настраивать под свою риск-политику, значения в коде — только отправная точка.
Проверить API вообще без клонирования. Обратите внимание: скрининг — это POST с JSON-телом, а не GET:
curl -X POST "https://atlorium.com/api/aml/screen" \
-H "Authorization: Bearer ak_sandbox_demo_mockdata_v1" \
-H "Content-Type: application/json" \
-d '{"walletAddress":"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa","blockchain":"BTC"}'| Язык | Запуск | Требуется |
|---|---|---|
| Python | pip install -r requirements.txt && python main.py |
Python 3.10+ |
| TypeScript / Node.js | npm install && npm start |
Node.js 20+ |
| Go | go run . |
Go 1.22+ |
| Java | java Main.java |
JDK 11+ (без зависимостей) |
| C# | dotnet run |
.NET 8+ |
| PHP | php main.php |
PHP 8.1+ |
Передать свой адрес и сеть аргументами: python main.py 0x26a5919cd0392df875a53873b0323c42094bb216 ETH
Ключ передаётся в заголовке Authorization:
Authorization: Bearer ВАШ_КЛЮЧ
| Ключ | Что делает |
|---|---|
ak_sandbox_demo_mockdata_v1 |
Демо-ключ. Публичный, один на всех. Возвращает моки, денег не списывает, регистрации не требует. Ответы детерминированы — на них можно писать стабильные тесты. |
| Боевой ключ | Реальный AML-скоринг. Получить в личном кабинете: atlorium.com |
Переход на боевой ключ не требует правок в коде — все примеры читают переменную окружения:
export ATLORIUM_API_KEY="ak_ваш_боевой_ключ"Каждый ответ песочницы помечен заголовком X-Atlorium-Sandbox: true — перепутать мок с реальным скорингом невозможно.
Базовый адрес: https://atlorium.com
| Метод | Путь | Назначение |
|---|---|---|
POST |
/api/aml/screen |
AML-скрининг кошелька: риск-балл, санкции, PEP, источники и назначение средств |
GET |
/api/aml/validate |
Проверка формата адреса и поддержки сети (без обращения к блокчейну) |
Параметры уходят в теле запроса, а не в query-строке:
{ "walletAddress": "0x26a5919cd0392df875a53873b0323c42094bb216", "blockchain": "BNB" }| Поле тела | Тип | Описание |
|---|---|---|
walletAddress |
string | Адрес криптокошелька |
blockchain |
string | Код сети: BTC, ETH, BNB, TRX, SOL и другие. Точный список того, что поддерживается, подтверждает /validate |
| Параметр | Где | Тип | Описание |
|---|---|---|---|
walletAddress |
query | string | Проверяемый адрес кошелька |
blockchain |
query | string | Код сети |
Проверяет формат адреса и поддержку сети, а не существование адреса в блокчейне. Полезно, чтобы отсеять опечатки во вводе до платного скрининга.
| Поле | Тип | Что содержит |
|---|---|---|
walletAddress / blockchain |
string | Нормализованные адрес и код сети |
screeningType |
string | Тип скрининга, например WALLET_SCREENING |
riskScore |
int | Ключевое поле. Балл риска 0–100: 0 — чисто, 100 — максимальный риск |
severity |
string | Словесная градация балла: LOW, MEDIUM, HIGH, CRITICAL |
status |
string | Статус скрининга, например SCREENED |
summary |
string | Краткое резюме по-человечески |
dominantRiskCategory |
string | Категория, которая внесла основной вклад в балл (null, если риска нет) |
sanctionsHit |
bool | Стоп-фактор. Совпадение с санкционными списками |
pepCounterparty |
bool | Стоп-фактор. Среди контрагентов есть публичное должностное лицо (PEP) |
totalValueUsd |
number | Оборот по кошельку в долларах |
feeUsd |
number | Сумма комиссий в долларах |
sourceOfFunds |
array | Откуда пришли средства — см. таблицу ниже |
destinationOfFunds |
array | Куда ушли средства — та же структура |
counterpartyConnections |
array | Контрагенты кошелька — см. таблицу ниже |
networkNodes / networkEdges |
array | Граф связей для визуализации. У кошельков с простой историей приходят пустыми |
elapsedMs |
int | Время выполнения скрининга, мс |
fromCache |
bool | Ответ отдан из кеша |
Элемент sourceOfFunds / destinationOfFunds:
| Поле | Тип | Что содержит |
|---|---|---|
category |
string | Категория: exchange_licensed, mixer, darknet и т.п. |
percentage |
number | Доля средств этой категории, % |
amountUsd |
number | Сумма в долларах |
entityName |
string | Название сервиса или контрагента |
entityType / entitySubtype |
string | Тип: Exchange, подтип: Licensed / KYC |
hops |
int | Через сколько переходов достигнута эта связь |
description |
string | Человекочитаемое описание связи |
isDirect |
bool | Прямая связь, а не через промежуточные кошельки |
exposureDirection |
string | incoming — откуда пришли, outgoing — куда ушли |
exposureType |
string | direct или indirect |
country |
string | Страна сервиса, ISO-код |
Элемент counterpartyConnections:
| Поле | Тип | Что содержит |
|---|---|---|
entityName |
string | Название контрагента |
entityType / entitySubtype |
string | Тип и подтип контрагента |
riskLevel |
string | Уровень риска контрагента: low, medium, high |
categories |
array | Категории, к которым отнесён контрагент |
receivedUsd / sentUsd |
number | Сколько получено и отправлено, $ |
percentage |
number | Доля контрагента в обороте кошелька, % |
isDirect |
bool | Прямая связь |
country |
string | Страна, ISO-код |
| Поле | Тип | Что содержит |
|---|---|---|
isValid |
bool | Прошёл ли ввод проверку формата |
normalizedAddress |
string | Нормализованный адрес |
normalizedBlockchain |
string | Нормализованный код сети (например, btc → BTC) |
message |
string | Пояснение: что именно не так, если isValid = false |
| Код | Причина | Что делать |
|---|---|---|
400 |
Адрес или сеть не указаны либо имеют неверный формат | Проверьте пару адрес+сеть через /api/aml/validate |
401 |
Ключ отсутствует, просрочен или недействителен | Проверьте заголовок Authorization |
402 |
Недостаточно кредитов на балансе | Пополнить на atlorium.com |
404 |
Объект не найден | — |
429 |
Превышен rate-limit | Повторить с задержкой |
503 |
Сервис скоринга временно недоступен | Повторить позже. За сбой на нашей стороне деньги не списываются |
Во всех шести примерах коды разложены в человекочитаемые причины — смотрите класс AtloriumError.
Оплата pay-as-you-go, без подписки: каждый успешный скрининг тарифицируется. Списание не происходит, если ввод некорректен (400) или источник данных недоступен (503) — платите только за результат.
Демо-ключ бесплатен и не списывает деньги, но отдаёт моки, а не реальный скоринг.
Актуальные цены и лимиты: atlorium.com/pricing
Откуда данные? Из блокчейн-аналитики: размеченные адреса бирж, миксеров, даркнет-площадок, санкционные списки и базы публичных должностных лиц. Скоринг считается на момент запроса.
Чем это отличается от бесплатного обозревателя блокчейна? Обозреватель покажет транзакции, но не скажет, чьи это адреса и насколько они токсичны. Здесь вы получаете разметку контрагентов, категории источников средств и агрегированный балл риска — то, ради чего обычно и заводят подписку на дорогую аналитику.
Что сервис НЕ умеет? Он не устанавливает личность владельца кошелька и не выносит юридический вердикт — балл риска и флаги это входные данные для вашего комплаенс-решения, а не замена ему. Эндпоинт /validate проверяет только формат адреса: он не отвечает на вопрос, существует ли такой адрес в блокчейне и есть ли на нём средства.
Обязательна ли регистрация, чтобы попробовать? Нет. Демо-ключ публичный и работает без аккаунта — но возвращает моки, а не реальный скоринг.
Какие сети поддерживаются? BTC, ETH, BNB, TRX, SOL и другие. Проверить конкретную пару адрес+сеть можно бесплатным по смыслу вызовом /api/aml/validate — он подтвердит, что сеть поддерживается и адрес имеет корректный формат.
Почему /screen — это POST? Адрес кошелька и код сети уходят в теле запроса: так адреса не попадают в логи прокси и историю браузера, что для комплаенс-данных существенно.
Есть ли SDK-пакет в PyPI/npm? Пока нет — это самодостаточные примеры без зависимостей, чтобы их можно было скопировать в свой проект целиком.
AML-скрининг редко бывает единственной задачей комплаенса. Из того же аккаунта и тем же ключом доступны:
- Профиль IP — гео, ASN, детект VPN, прокси и Tor
- Проверка BIN карты — банк-эмитент, страна и тип карты для антифрода на чекауте
- CIDR-калькулятор — разбиение сети на подсети и проверка вхождения IP
- SWIFT/BIC — разбор кода по ISO-9362 и сверка перед международным переводом
- DNS Lookup — записи домена, MX, SPF, DMARC
- Справочник БИК ЦБ РФ — реквизиты банка и контрольный ключ расчётного счёта
Полный каталог — atlorium.com
- Документация API (Swagger): atlorium.com/amlAPI
- Описание сервиса: atlorium.com/amlDescription
- Веб-интерфейс: atlorium.com/amlGUI
- OpenAPI-спецификация: aml_ru.json
- Поддержка: support@atlorium.com
MIT — берите код и используйте как хотите, в том числе в коммерческих проектах.