Crypto AML Checker

API documentation / Документация API / API 文档

The public API is free, has no API-key requirement and accepts JSON. Limits: 20 checks per IP per minute, including cache hits. Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset; Retry-After on 429.

API бесплатный и не требует ключа: 20 проверок на IP в минуту, включая кэш. 剩余次数和重置时间由响应头提供。

POST /v1/check

curl -X POST https://cryptoaml.online/v1/check \
  -H 'Content-Type: application/json' \
  -d '{"chain":"ETH","address":"0x0000000000000000000000000000000000000000"}'

chain: BTC, ETH, TRON, or an empty string for automatic detection. ETH mixed-case addresses require a valid EIP-55 checksum; lowercase hexadecimal addresses are also accepted. Checks cover recent explorer pages, not a wallet’s complete history.

Response

chain, address, score (0–100 heuristic), level, analysis_status, matches, analyzed, sources, analyzed_at, database_version and cached. Score is not a probability of money laundering. A score of zero with unavailable data is not a clean verdict. Several sources can describe one primary record; matching lists are not added to the score.

analysis_statusMeaning
match_foundDirect label / Прямое совпадение / 直接匹配
exposure_foundCounterparty signal in the analyzed window
verified_cleanNo matches in the available window and applicable sources; no guarantee
partially_analyzedLimits, failed requests or unavailable sources restrict coverage
unable_to_analyzeThe requested activity analysis was unavailable

analyzed.assets gives separate denominators per asset: asset, decimals, total_raw, exposed_raw, exposure_percent, ambiguous. Raw amounts are integer strings; display amount = raw / 10^decimals. Legacy analyzed.exposure_percent is the maximum asset percentage, never a sum of BTC/ETH/token units. Hop-2 is a weaker relationship through an intermediary, not proof that the same funds moved.

GET /v1/stats

{"total":22360,"last_updated":"2026-10-09"}

Illustrative values. total counts distinct (chain,address); EVM is a network-uncertain scope.

GET /v1/sources?chain=ETH

BTC, ETH or TRON; ETH by default. Returns status, chain, checked_at and sources. Source states: checked, unavailable, stale, not_applicable, disabled. Wallet reports can also mark an oracle skipped when a direct match makes the call unnecessary. A cached health probe is independent of a wallet result.

Errors

{"error":"address is not valid for chain ETH","code":"invalid_checksum","request_id":"server-generated-id","hint":"Verify the EIP-55 checksum or use confirmed lowercase."}

400 validation, 401 authentication on account endpoints, 404 missing endpoint, 405 method, 409 conflict, 429 rate limit, 500 internal error, 503 unavailable, 504 timeout. X-Request-ID correlates with server logs. Retry-After gives a conservative wait on rate limits.

Cache and monitoring

Complete reports live for up to six hours, bounded by source freshness. Incomplete reports live for 30 seconds. Cache identity changes with database version and ETH explorer configuration; cached=true denotes reuse. GET /health returns 503 when infrastructure or any applicable enabled source is unhealthy, including Tether ETH/TRON, Circle and the oracle. GET /health?scope=core lists the same checks but returns 503 only for database, cache or configuration failures. Failures retain previous labels.

Machine-readable OpenAPI 3.1 schema · Live source status

HomeРусский中文APISource statusPrivacyTerms

Data: OpenSanctions · CC BY-NC 4.0