OpenAPI 3.1 LIVE

Документация API

Готовые запросы, реальные ответы и полные схемы для AML, курсов и биллинга. Всё необходимое, чтобы отправить первый production-запрос без догадок.

13операций
4раздела
3.1OpenAPI
KEY

Авторизация

Передавайте API-ключ во всех защищённых запросах. Для платных операций используйте уникальный Idempotency-Key: повтор с тем же ключом и телом не создаст второе списание.

Все операции API используют POST. Обработанный запрос возвращает HTTP 200: проверяйте error в JSON. Ошибка содержит code, message и status. POST /api/v1/rates/get — основной метод курсов. POST /api/v1/rate помечен Deprecated и сохраняет прежние запросы, ответы, ошибки и биллинг; срок отключения не назначен.

Базовый URLhttps://platform.safio.ioHeaderX-API-Key: sk_safio_...BillableIdempotency-Key: order-2026-000001
01 · Быстрый старт

Первый AML-чек за один запрос

Скопируйте пример, замените API-ключ и адрес. В ответ Safio вернёт check_id — по нему можно получить статус и готовый отчёт.

POST/api/v1/aml/checks/create
Готовый запрос
curl --request POST \
  --url 'https://platform.safio.io/api/v1/aml/checks/create' \
  --header 'X-API-Key: sk_safio_...' \
  --header 'Idempotency-Key: order-2026-000001' \
  --header 'Content-Type: application/json' \
  --data '{
  "subject": {
    "type": "address",
    "value": "TPKvdDWMtkbmx1UXopGVyXGJi256uhXVuH"
  },
  "network": "tron",
  "asset": "USDT",
  "product": "screen",
  "lookback_days": 90,
  "callback_url": "https://hooks.customer.example/aml/completed"
}'
OpenAPI 3.1

Endpoints

13 операций · System · Rates · AML · Billing

POSTSystem

/api/v1/health

Health

Service health endpoint. Public, unauthenticated availability check. GET is retained for existing provider monitors; POST is the documented RPC operation. Both methods use the same response. Infrastructure probes use GET /health and GET /readiness.

health_api_v1_health_post

Тело запроса

У этого метода нет тела запроса.

Ответы

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": {
    "status": "ok"
  },
  "error": null
}
Схема6 полей
ПолеТипОписание
dataнеобязательноobject | null
errorнеобязательноErrorBody | null
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null
POSTRatesAPI-ключИдемпотентно

/api/v1/rates/get

Get Rate

get_rate_api_v1_rates_get_post

Заголовки и параметры

Idempotency-Keyheaderstringобязательно

Stable unique key preventing duplicate rate charges.

Тело запроса

обязательно
Пример запроса
{
  "from_currency": "USDT",
  "to_currency": "RUB",
  "max_age_seconds": 60
}
Схема5 полей
ПолеТипОписание
from_currencyобязательноstring
to_currencyобязательноstring
max_age_secondsнеобязательноinteger | nullMax staleness in seconds
min_updated_atнеобязательноdate-time | nullMin acceptable update timestamp
sourceнеобязательноstring | nullOptional configured rate route alias.

Ответы

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": {
    "from_currency": "USDT",
    "to_currency": "RUB",
    "rate": 82.41,
    "median_rate": 82.39,
    "min_rate": 82.18,
    "max_rate": 82.63,
    "sample_count": 7,
    "updated_at": "2026-08-31T10:15:23Z",
    "valid_until": "2026-08-31T10:16:23Z",
    "billing": {
      "enabled": true,
      "amount": "0.0003",
      "currency": "USD",
      "balance_after": "80.1997",
      "waived": false
    },
    "reused": false
  },
  "error": null
}
Схема22 полей
ПолеТипОписание
dataнеобязательноRateResponse | null
from_currencyобязательноstring
to_currencyобязательноstring
rateобязательноnumber
median_rateобязательноnumber
min_rateобязательноnumber
max_rateобязательноnumber
sample_countобязательноinteger
updated_atобязательноdate-time
valid_untilобязательноdate-time
billingобязательноBillingChargeResponse
enabledобязательноboolean
amountобязательноstring
currencyобязательноstring
balance_afterобязательноstring | null
waivedнеобязательноbooleanTrue when a reserved AML charge was automatically returned because the purchased result was not delivered with contractually sufficient coverage.
reusedнеобязательноbooleanTrue when the same Idempotency-Key returned the stored response without a second charge.
errorнеобязательноErrorBody | null
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null
POSTRatesDeprecatedAPI-ключИдемпотентно

/api/v1/rate

Get Rate

Deprecated compatibility method. Use POST /api/v1/rates/get. Existing request, response, error and billing semantics are preserved.

get_rate_api_v1_rate_post

Заголовки и параметры

Idempotency-Keyheaderstringобязательно

Stable unique key preventing duplicate rate charges.

Тело запроса

обязательно
Пример запроса
{
  "from_currency": "USDT",
  "to_currency": "RUB",
  "max_age_seconds": 60
}
Схема5 полей
ПолеТипОписание
from_currencyобязательноstring
to_currencyобязательноstring
max_age_secondsнеобязательноinteger | nullMax staleness in seconds
min_updated_atнеобязательноdate-time | nullMin acceptable update timestamp
sourceнеобязательноstring | nullOptional configured rate route alias.

Ответы

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": {
    "from_currency": "USDT",
    "to_currency": "RUB",
    "rate": 82.41,
    "median_rate": 82.39,
    "min_rate": 82.18,
    "max_rate": 82.63,
    "sample_count": 7,
    "updated_at": "2026-08-31T10:15:23Z",
    "valid_until": "2026-08-31T10:16:23Z",
    "billing": {
      "enabled": true,
      "amount": "0.0003",
      "currency": "USD",
      "balance_after": "80.1997",
      "waived": false
    },
    "reused": false
  },
  "error": null
}
Схема22 полей
ПолеТипОписание
dataнеобязательноRateResponse | null
from_currencyобязательноstring
to_currencyобязательноstring
rateобязательноnumber
median_rateобязательноnumber
min_rateобязательноnumber
max_rateобязательноnumber
sample_countобязательноinteger
updated_atобязательноdate-time
valid_untilобязательноdate-time
billingобязательноBillingChargeResponse
enabledобязательноboolean
amountобязательноstring
currencyобязательноstring
balance_afterобязательноstring | null
waivedнеобязательноbooleanTrue when a reserved AML charge was automatically returned because the purchased result was not delivered with contractually sufficient coverage.
reusedнеобязательноbooleanTrue when the same Idempotency-Key returned the stored response without a second charge.
errorнеобязательноErrorBody | null
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null
POSTAMLAPI-ключ

/api/v1/aml/capabilities/get

Show capabilities available to this API key

Returns allowed paid products and configured network availability. Use this before presenting product choices to a customer.

aml_capabilities_api_v1_aml_capabilities_get_post

Тело запроса

У этого метода нет тела запроса.

Ответы

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": {
    "default_product": "screen",
    "products": [
      {
        "product": "exact_sanctions",
        "default_lookback_days": 90,
        "allowed": true,
        "evidence_access": false
      },
      {
        "product": "screen",
        "default_lookback_days": 90,
        "allowed": true,
        "evidence_access": false
      },
      {
        "product": "enhanced",
        "default_lookback_days": 180,
        "allowed": true,
        "evidence_access": false
      },
      {
        "product": "investigation",
        "default_lookback_days": 730,
        "allowed": true,
        "evidence_access": true
      }
    ],
    "networks": [
      {
        "network": "tron",
        "assets": [
          "TRX",
          "USDT"
        ],
        "address_products": [
          "exact_sanctions",
          "screen",
          "enhanced",
          "investigation"
        ],
        "transaction_products": [
          "screen",
          "enhanced",
          "investigation"
        ],
        "default_address_product": "screen",
        "default_transaction_product": "screen"
      }
    ],
    "notes": [
      "Products combine API-key entitlement with configured network capability.",
      "Runtime upstream health is evaluated when a check executes."
    ]
  },
  "error": null
}
Схема20 полей
ПолеТипОписание
dataнеобязательноAmlCapabilitiesResponse | null
default_productобязательноAmlProduct
productsобязательноAnalysisLevelCapabilityResponse[]
productобязательноAmlProduct
default_lookback_daysобязательноinteger
allowedобязательноboolean
evidence_accessнеобязательноboolean
networksобязательноNetworkCapabilityResponse[]
networkобязательноAmlNetwork
assetsобязательноAmlAsset[]
address_productsобязательноAmlProduct[]Products both permitted for this key and configured for an address on this network.
transaction_productsобязательноAmlProduct[]Products both permitted for this key and configured for a transaction on this network.
default_address_productобязательноAmlProduct | null
default_transaction_productобязательноAmlProduct | null
notesобязательноstring[]
errorнеобязательноErrorBody | null
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null
POSTAMLAPI-ключИдемпотентно

/api/v1/aml/checks/create

Queue an asynchronous AML check

Reserves the selected AML price and returns immediately. Reusing the same Idempotency-Key with the same payload returns the original check without a second charge. An optional HTTPS callback must match this key's administrator-configured callback URL patterns.

create_aml_check_api_v1_aml_checks_create_post

Заголовки и параметры

Idempotency-Keyheaderstringобязательно

Stable unique key used to prevent duplicate checks and charges.

Тело запроса

обязательно
Пример запроса
{
  "subject": {
    "type": "address",
    "value": "TPKvdDWMtkbmx1UXopGVyXGJi256uhXVuH"
  },
  "network": "tron",
  "asset": "USDT",
  "product": "screen",
  "lookback_days": 90,
  "callback_url": "https://hooks.customer.example/aml/completed"
}
Схема10 полей
ПолеТипОписание
subjectобязательноAmlSubjectRequest
typeобязательноSubjectType
valueобязательноstring
networkобязательноAmlNetwork
assetобязательноAmlAsset
productнеобязательноAmlProduct | nullPurchased AML product. Technical engine depths are not public tariff names. Defaults to screen. Deprecated analysis_level/depth input is accepted during migration but omitted from the public schema.
lookback_daysнеобязательноinteger | nullOptional historical window. When omitted, the selected level uses its advertised default: exact_sanctions/screen=90, enhanced=180, investigation=730 days.
risk_model_idнеобязательноuuid | nullPublished customer risk model to evaluate alongside the Safio score.
allow_product_upgradeнеобязательноbooleanWhen true, Safio may raise the requested product to the minimum product required by risk_model_id. No silent upgrade occurs when false.
callback_urlнеобязательноstring | nullOptional HTTPS webhook URL. It must match a callback URL pattern configured by an administrator for this API key.

Ответы

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": {
    "check_id": "c4e5295c-8f4a-4db2-980f-0e782b63811f",
    "status": "queued",
    "stage": "queued",
    "status_endpoint": "/api/v1/aml/checks/get",
    "report_endpoint": "/api/v1/aml/checks/report.pdf",
    "product": "screen",
    "lookback_days": 90,
    "callback_status": "pending",
    "created_at": "2026-08-31T10:15:23Z",
    "reused": false
  },
  "error": null
}
Схема16 полей
ПолеТипОписание
dataнеобязательноAmlCheckAcceptedResponse | null
check_idобязательноuuid
statusобязательноstring
stageобязательноstring
status_endpointобязательноstring
report_endpointобязательноstring
productобязательноAmlProduct
lookback_daysобязательноinteger
callback_statusобязательноstring | null
created_atобязательноdate-time
reusedобязательноbooleanTrue when the same Idempotency-Key returned the original check.
errorнеобязательноErrorBody | null
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null
POSTAMLAPI-ключИдемпотентно

/api/v1/aml/checks/bulk/create

Queue up to 100 AML checks in one request

Each item keeps independent validation, billing and status. Replaying the same batch Idempotency-Key is safe because item keys are deterministic.

create_bulk_aml_checks_api_v1_aml_checks_bulk_create_post

Заголовки и параметры

Idempotency-Keyheaderstringобязательно

Stable key for the complete batch.

Тело запроса

обязательно
Пример запроса
{
  "items": [
    {
      "subject": {
        "type": "address",
        "value": "TPKvdDWMtkbmx1UXopGVyXGJi256uhXVuH"
      },
      "network": "tron",
      "asset": "USDT",
      "product": "screen",
      "client_reference": "customer-001"
    }
  ]
}
Схема12 полей
ПолеТипОписание
itemsобязательноAmlBulkCheckItemRequest[]
subjectобязательноAmlSubjectRequest
typeобязательноSubjectType
valueобязательноstring
networkобязательноAmlNetwork
assetобязательноAmlAsset
productнеобязательноAmlProduct | nullPurchased AML product. Technical engine depths are not public tariff names. Defaults to screen. Deprecated analysis_level/depth input is accepted during migration but omitted from the public schema.
lookback_daysнеобязательноinteger | nullOptional historical window. When omitted, the selected level uses its advertised default: exact_sanctions/screen=90, enhanced=180, investigation=730 days.
risk_model_idнеобязательноuuid | nullPublished customer risk model to evaluate alongside the Safio score.
allow_product_upgradeнеобязательноbooleanWhen true, Safio may raise the requested product to the minimum product required by risk_model_id. No silent upgrade occurs when false.
callback_urlнеобязательноstring | nullOptional HTTPS webhook URL. It must match a callback URL pattern configured by an administrator for this API key.
client_referenceнеобязательноstring | nullCustomer identifier echoed in every bulk response.

Ответы

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": null,
  "error": {
    "code": "invalid_request",
    "message": "The request could not be processed.",
    "status": 400
  }
}
Схема24 полей
ПолеТипОписание
dataнеобязательноAmlBulkCheckAcceptedResponse | null
batch_idобязательноuuid
acceptedобязательноinteger
rejectedобязательноinteger
itemsобязательноAmlBulkCheckAcceptedItemResponse[]
indexобязательноinteger
client_referenceобязательноstring | null
checkнеобязательноAmlCheckAcceptedResponse | null
check_idобязательноuuid
statusобязательноstring
stageобязательноstring
status_endpointобязательноstring
report_endpointобязательноstring
productобязательноAmlProduct
lookback_daysобязательноinteger
callback_statusобязательноstring | null
created_atобязательноdate-time
reusedобязательноbooleanTrue when the same Idempotency-Key returned the original check.
errorнеобязательноobject | null
errorнеобязательноErrorBody | null
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null
POSTAMLAPI-ключ

/api/v1/aml/checks/bulk/get

Get up to 100 AML check results in one request

get_bulk_aml_checks_api_v1_aml_checks_bulk_get_post

Тело запроса

обязательно
Пример запроса
{
  "ids": [
    "c4e5295c-8f4a-4db2-980f-0e782b63811f"
  ]
}
Схема1 полей
ПолеТипОписание
idsобязательноuuid[]

Ответы

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": null,
  "error": {
    "code": "http_error",
    "message": "Missing or invalid API key.",
    "status": 401
  }
}
Схема33 полей
ПолеТипОписание
dataнеобязательноAmlBulkCheckResponse | null
itemsобязательноAmlBulkCheckResultItemResponse[]
idобязательноuuid
checkнеобязательноAmlCheckResponse | null
check_idобязательноuuid
subjectобязательноAmlSubjectResponse
networkобязательноAmlNetwork
assetобязательноAmlAsset
statusобязательноstring
stageобязательноstring
productобязательноAmlProduct
lookback_daysобязательноintegerActivity window purchased for this check.
created_atобязательноdate-time
started_atобязательноdate-time | null
completed_atобязательноdate-time | null
deadline_atобязательноdate-time | nullCurrent processing-attempt deadline, when the check is running.
status_endpointобязательноstring
report_endpointобязательноstring
callback_statusобязательноstring | null
callback_attemptsобязательноinteger
processing_attemptsобязательноintegerNumber of worker attempts, including automatic recovery.
processing_time_msнеобязательноinteger | nullCompleted wall-clock processing time for the latest attempt.
queue_time_msнеобязательноinteger | nullTime from durable request creation until a worker started it.
total_time_msнеобязательноinteger | nullCompleted end-to-end time from request creation to final result.
stage_durations_msнеобязательноobjectSource-neutral processing time accumulated by public stage.
resultобязательноAmlProductResultResponse | null
errorобязательноobject | null
errorнеобязательноobject | null
errorнеобязательноErrorBody | null
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null
POSTAMLAPI-ключ

/api/v1/aml/checks/get

Get an asynchronous AML check

get_aml_check_api_v1_aml_checks_get_post

Тело запроса

обязательно
Пример запроса
{
  "id": "c4e5295c-8f4a-4db2-980f-0e782b63811f"
}
Схема1 полей
ПолеТипОписание
idобязательноuuid

Ответы

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": {
    "check_id": "c4e5295c-8f4a-4db2-980f-0e782b63811f",
    "status": "completed",
    "stage": "completed",
    "product": "screen",
    "lookback_days": 90,
    "created_at": "2026-08-31T10:15:23Z",
    "started_at": "2026-08-31T10:15:24Z",
    "completed_at": "2026-08-31T10:15:27Z",
    "deadline_at": null,
    "status_endpoint": "/api/v1/aml/checks/get",
    "report_endpoint": "/api/v1/aml/checks/report.pdf",
    "callback_status": "delivered",
    "callback_attempts": 1,
    "processing_attempts": 1,
    "processing_time_ms": 2480,
    "queue_time_ms": 120,
    "total_time_ms": 2600,
    "stage_durations_ms": {
      "screening": 920,
      "graph_analysis": 1080,
      "report_compilation": 480
    },
    "result": {
      "product": "screen",
      "subject": {
        "type": "address",
        "value": "TPKvdDWMtkbmx1UXopGVyXGJi256uhXVuH",
        "network": "tron",
        "asset": "USDT"
      },
      "risk_score": 18,
      "risk_level": "low",
      "decision": "allow",
      "triggered_rules": [],
      "categories": [
        {
          "category": "sanctions",
          "assessment_status": "not_detected",
          "exposure_type": "none",
          "min_confirmed_hops": null,
          "path_status": "not_applicable",
          "exposure_amount_usd": null,
          "exposure_share": null,
          "directions": [],
          "context_signal_count": 0,
          "warning": null
        }
      ],
      "coverage": [
        {
          "category": "sanctions",
          "status": "not_detected",
          "directions": [],
          "lookback_days": 90
        }
      ],
      "coverage_status": "complete",
      "lookback_days": 90,
      "route_summaries": [],
      "evidence_available": false,
      "policy_version": "aml-policy-2026-08",
      "dataset_revision": "2026-08-31T10:00:00Z",
      "billing": {
        "enabled": true,
        "amount": "0.25",
        "currency": "USD",
        "balance_after": "79.95",
        "waived": false
      },
      "warnings": []
    },
    "error": null
  },
  "error": null
}
Схема87 полей
ПолеТипОписание
dataнеобязательноAmlCheckResponse | null
check_idобязательноuuid
subjectобязательноAmlSubjectResponse
typeобязательноSubjectType
valueобязательноstring
networkобязательноAmlNetwork
assetобязательноAmlAsset
statusобязательноstring
stageобязательноstring
productобязательноAmlProduct
lookback_daysобязательноintegerActivity window purchased for this check.
created_atобязательноdate-time
started_atобязательноdate-time | null
completed_atобязательноdate-time | null
deadline_atобязательноdate-time | nullCurrent processing-attempt deadline, when the check is running.
status_endpointобязательноstring
report_endpointобязательноstring
callback_statusобязательноstring | null
callback_attemptsобязательноinteger
processing_attemptsобязательноintegerNumber of worker attempts, including automatic recovery.
processing_time_msнеобязательноinteger | nullCompleted wall-clock processing time for the latest attempt.
queue_time_msнеобязательноinteger | nullTime from durable request creation until a worker started it.
total_time_msнеобязательноinteger | nullCompleted end-to-end time from request creation to final result.
stage_durations_msнеобязательноobjectSource-neutral processing time accumulated by public stage.
resultобязательноAmlProductResultResponse | null
productобязательноAmlProduct
subjectобязательноAmlProductSubjectResponse
typeобязательноSubjectType
valueобязательноstring
networkобязательноAmlNetwork
assetобязательноAmlAsset
risk_scoreнеобязательноinteger | nullSafio decision-support risk points backed by confirmed evidence. Null when the available coverage cannot support a defensible numeric result. This value is not a probability of criminal activity.
risk_levelобязательноRiskLevel
decisionобязательноstring
triggered_rulesобязательноstring[]
categoriesобязательноAmlCategoryAssessmentResponse[]
categoryобязательноRiskCategory
assessment_statusобязательноstring
exposure_typeобязательноstring
min_confirmed_hopsнеобязательноinteger | null
path_statusобязательноstring
exposure_amount_usdнеобязательноstring | nullDocumented USDT exposure amount or path-capacity upper bound. Null for non-USDT assets and when exposure is not attributable to an amount.
exposure_shareнеобязательноnumber | null
directionsнеобязательноExposureDirection[]
context_signal_countнеобязательноinteger
warningнеобязательноstring | null
coverageобязательноAmlCoverageItemResponse[]
categoryобязательноRiskCategory
statusобязательноstring
directionsнеобязательноExposureDirection[]
lookback_daysобязательноinteger
coverage_statusобязательноstring
lookback_daysобязательноinteger
route_summariesнеобязательноAmlRouteSummaryResponse[] | nullAggregated confirmed routes available to Enhanced and Investigation.
categoryобязательноRiskCategory
directionобязательноExposureDirection
confirmed_hopsобязательноinteger
exposure_typeобязательноstring
exposure_amount_usdнеобязательноstring | null
exposure_shareнеобязательноnumber | null
first_observed_atнеобязательноdate-time | null
last_observed_atнеобязательноdate-time | null
entity_nameнеобязательноstring | nullPresent only when the API key permits downstream entity disclosure.
evidence_availableнеобязательноboolean
policy_versionобязательноstring
dataset_revisionобязательноstring
billingобязательноBillingChargeResponse
enabledобязательноboolean
amountобязательноstring
currencyобязательноstring
balance_afterобязательноstring | null
waivedнеобязательноbooleanTrue when a reserved AML charge was automatically returned because the purchased result was not delivered with contractually sufficient coverage.
warningsобязательноstring[]
customer_riskнеобязательноCustomerRiskResultResponse | nullResult calculated with the customer's published model. Safio's proprietary score remains in risk_score and is evaluated independently.
model_idобязательноuuid
model_nameобязательноstring
model_versionобязательноinteger
scoreнеобязательноinteger | null
risk_levelобязательноRiskLevel
decisionобязательноstring
triggered_rulesобязательноstring[]
errorобязательноobject | null
errorнеобязательноErrorBody | null
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null
POSTAMLAPI-ключ

/api/v1/aml/checks/evidence/get

Open protected Investigation evidence

Requires aml:evidence:read and the analyst role. Every view is audited and returns a single-use, short-lived PDF export token.

get_aml_check_evidence_api_v1_aml_checks_evidence_get_post

Тело запроса

обязательно
Пример запроса
{
  "id": "c4e5295c-8f4a-4db2-980f-0e782b63811f"
}
Схема1 полей
ПолеТипОписание
idобязательноuuid

Ответы

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": {
    "check_id": "c4e5295c-8f4a-4db2-980f-0e782b63811f",
    "audit_id": "6b3af902-4d30-4d70-88d7-7b265ec1be49",
    "product": "investigation",
    "subject": {
      "type": "address",
      "value": "TPKvdDWMtkbmx1UXopGVyXGJi256uhXVuH",
      "network": "tron",
      "asset": "USDT"
    },
    "generated_at": "2026-08-31T10:15:28Z",
    "lookback_days": 730,
    "linked_identities": [
      {
        "address": "TPKvdDWMtkbmx1UXopGVyXGJi256uhXVuH",
        "kind": "unclassified"
      }
    ],
    "paths": [
      {
        "category": "sanctions",
        "risk_address": "TJ9pA2j7j3gHhR4u89xExampleAddress",
        "entity_name": "Example sanctioned entity",
        "direction": "received",
        "confirmed_hops": 2,
        "amount": "1250.50",
        "amount_basis": "path_capacity_upper_bound",
        "steps": [
          {
            "source": "TJ9pA2j7j3gHhR4u89xExampleAddress",
            "destination": "TPKvdDWMtkbmx1UXopGVyXGJi256uhXVuH",
            "transaction": "f0d4c3b2a190exampletransaction",
            "network": "tron",
            "asset": "USDT",
            "amount": "1250.50",
            "depth": 1,
            "timestamp": "2026-08-28T08:41:00Z",
            "direction": "received",
            "channel": "direct",
            "role": "value",
            "initiator": null
          }
        ]
      }
    ],
    "contextual_signals": [],
    "coverage": [
      {
        "category": "sanctions",
        "status": "detected",
        "directions": [
          "received"
        ],
        "lookback_days": 730
      }
    ],
    "analyst_notes": [
      "One confirmed inbound route requires manual review."
    ],
    "policy_version": "aml-policy-2026-08",
    "dataset_revision": "2026-08-31T10:00:00Z",
    "export_token": "ev_4J6YmpZ9xK2rN7qW5cT8bH3sF1dL0aPc",
    "export_endpoint": "/api/v1/aml/checks/evidence/report.pdf",
    "export_expires_at": "2026-08-31T10:20:28Z"
  },
  "error": null
}
Схема72 полей
ПолеТипОписание
dataнеобязательноAmlEvidenceResponse | null
check_idобязательноuuid
audit_idобязательноuuid
productобязательно"investigation"
subjectобязательноAmlProductSubjectResponse
typeобязательноSubjectType
valueобязательноstring
networkобязательноAmlNetwork
assetобязательноAmlAsset
generated_atобязательноdate-time
lookback_daysобязательноinteger
linked_identitiesобязательноAmlEvidenceIdentityResponse[]
addressобязательноstring
kindобязательноstring
node_activityнеобязательноAmlEvidenceNodeActivityResponse[]Observed transaction-flow denominator for graph nodes. Values are deduplicated from the immutable screening trace and are not wallet balances.
addressобязательноstring
observed_inflowобязательноstring
observed_outflowобязательноstring
observed_amountобязательноstringLargest observed inbound or outbound value in the immutable screening window. This is not the current on-chain balance.
screened_transaction_transfersнеобязательноAmlEvidenceSubjectTransferResponse[]Economic transfers that belong to the screened transaction subject. Empty when the screened subject is an address.
sourceобязательноstring
destinationобязательноstring
transactionобязательноstring
networkобязательноAmlNetwork
assetобязательноAmlAsset
amountобязательноstring
timestampнеобязательноdate-time | null
channelобязательноstring
roleобязательноstring
initiatorнеобязательноstring | null
pathsобязательноAmlEvidencePathResponse[]
categoryобязательноRiskCategory
risk_addressобязательноstring
entity_nameобязательноstring | nullPresent only when the analyst key also has the aml:entity:read downstream-disclosure scope.
directionобязательноExposureDirection
confirmed_hopsобязательноinteger
amountобязательноstring | null
amount_basisобязательноstring
stepsобязательноAmlEvidenceTransferResponse[]
sourceобязательноstring
destinationобязательноstring
transactionобязательноstring
networkобязательноAmlNetwork
assetобязательноAmlAsset
amountобязательноstring
depthобязательноinteger
timestampобязательноdate-time
directionобязательноExposureDirection
channelобязательноstring
roleобязательноstring
initiatorнеобязательноstring | null
contextual_signalsобязательноAmlEvidenceContextResponse[]
categoryобязательноRiskCategory
directionобязательноExposureDirection
countобязательноinteger
warningобязательноstring
coverageобязательноAmlCoverageItemResponse[]
categoryобязательноRiskCategory
statusобязательноstring
directionsнеобязательноExposureDirection[]
lookback_daysобязательноinteger
analyst_notesобязательноstring[]
policy_versionобязательноstring
dataset_revisionобязательноstring
export_tokenобязательноstring
export_endpointобязательноstring
export_expires_atобязательноdate-time
errorнеобязательноErrorBody | null
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null
POSTAMLAPI-ключ

/api/v1/aml/checks/evidence/report.pdf

Download a protected Investigation evidence report

Consumes the single-use export token returned by evidence/get.

get_aml_check_evidence_report_api_v1_aml_checks_evidence_report_pdf_post

Тело запроса

обязательно
Пример запроса
{
  "id": "c4e5295c-8f4a-4db2-980f-0e782b63811f",
  "export_token": "ev_4J6YmpZ9xK2rN7qW5cT8bH3sF1dL0aPc"
}
Схема2 полей
ПолеТипОписание
idобязательноuuid
export_tokenобязательноstring

Ответы

2
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": null,
  "error": {
    "code": "http_error",
    "message": "Missing or invalid API key.",
    "status": 401
  }
}
Схема6 полей
ПолеТипОписание
dataобязательноnull
errorобязательноErrorBody
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/pdf
PDF

Бинарный документ возвращается с Content-Type: application/pdf.

POSTAMLAPI-ключ

/api/v1/aml/checks/report.pdf

Download the completed AML report snapshot

Returns the PDF produced by the original asynchronous check. This endpoint does not rerun analysis and does not create another charge.

get_aml_check_report_api_v1_aml_checks_report_pdf_post

Тело запроса

обязательно
Пример запроса
{
  "id": "c4e5295c-8f4a-4db2-980f-0e782b63811f"
}
Схема1 полей
ПолеТипОписание
idобязательноuuid

Ответы

2
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": null,
  "error": {
    "code": "http_error",
    "message": "Missing or invalid API key.",
    "status": 401
  }
}
Схема6 полей
ПолеТипОписание
dataобязательноnull
errorобязательноErrorBody
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/pdf
PDF

Бинарный документ возвращается с Content-Type: application/pdf.

POSTAMLAPI-ключ

/api/v1/aml/path-search

Search for a confirmed path to an address or category

Searches the selected chain and asset up to 10 hops. Amount filters apply to every edge. A negative answer is conclusive only when coverage is complete.

search_aml_path_api_v1_aml_path_search_post

Тело запроса

обязательно
Пример запроса
{
  "source_address": "TPKvdDWMtkbmx1UXopGVyXGJi256uhXVuH",
  "target": {
    "risk_category": "sanctions"
  },
  "network": "tron",
  "asset": "USDT",
  "max_hops": 5,
  "lookback_days": 180
}
Схема15 полей
ПолеТипОписание
source_addressобязательноstring
targetобязательноAmlPathTargetRequest
addressнеобязательноstring | null
entity_categoryнеобязательноEntityCategory | null
risk_categoryнеобязательноRiskCategory | null
networkобязательноAmlNetwork
assetобязательноAmlAsset
max_hopsнеобязательноinteger
lookback_daysнеобязательноinteger
min_transfer_amountнеобязательноnumber | string
max_transfer_amountнеобязательноnumber | string | null
min_transfer_amount_usdнеобязательноnumber | string | null
max_transfer_amount_usdнеобязательноnumber | string | null
max_pathsнеобязательноinteger
modeнеобязательноstring

Ответы

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": null,
  "error": {
    "code": "http_error",
    "message": "Missing or invalid API key.",
    "status": 401
  }
}
Схема41 полей
ПолеТипОписание
dataнеобязательноAmlPathSearchResponse | null
statusобязательноstring
networkобязательноAmlNetwork
assetобязательноAmlAsset
source_addressобязательноstring
targetобязательноAmlPathTargetRequest
addressнеобязательноstring | null
entity_categoryнеобязательноEntityCategory | null
risk_categoryнеобязательноRiskCategory | null
max_hopsобязательноinteger
billable_depth_tierобязательноinteger
pathsобязательноAmlPathResponse[]
hopsобязательноinteger
path_capacityобязательноstring
first_observed_atобязательноdate-time | null
last_observed_atобязательноdate-time | null
matched_targetобязательноAmlPathMatchResponse
addressобязательноstring
entity_categoryнеобязательноEntityCategory | null
risk_categoryнеобязательноRiskCategory | null
entity_nameнеобязательноstring | null
confidenceнеобязательноnumber | null
source_tierнеобязательноstring | null
stepsобязательноAmlPathTransferResponse[]
sourceобязательноstring
destinationобязательноstring
transactionобязательноstring
assetобязательноAmlAsset
amountобязательноstring
timestampобязательноdate-time | null
coverageобязательноAmlPathSearchCoverageResponse
statusобязательноstring
reasonsобязательноstring[]
visited_addressesобязательноinteger
visited_transactionsобязательноinteger
warningsобязательноstring[]
errorнеобязательноErrorBody | null
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null
POSTBillingAPI-ключ

/api/v1/billing/account

Show API-key balance and product prices

Returns the current balance, billing state, tariff, per-level AML prices and the price of one successful rate request for the authenticated API key.

billing_account_api_v1_billing_account_post

Тело запроса

У этого метода нет тела запроса.

Ответы

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Пример ответа
{
  "data": {
    "api_key_id": "abf3ce95-6b80-4181-995a-b04afe9adba4",
    "enabled": true,
    "currency": "USD",
    "balance": "80.20",
    "complimentary_aml_checks_remaining": 3,
    "aml_prices": {
      "exact_sanctions": "0.04",
      "screen": "0.25",
      "enhanced": "0.69",
      "investigation": "1.90"
    },
    "rate_price": "0.0003",
    "tariff_plan_id": "2bc8a33d-42e5-4d3b-8af4-a0ee56e96b28",
    "tariff_plan_code": "trial"
  },
  "error": null
}
Схема19 полей
ПолеТипОписание
dataнеобязательноBillingAccountResponse | null
api_key_idобязательноuuid
enabledобязательноboolean
currencyобязательноstring
balanceобязательноstring
complimentary_aml_checks_remainingнеобязательноinteger
aml_pricesобязательноAmlPriceScheduleResponse
exact_sanctionsобязательноstring
screenобязательноstring
enhancedобязательноstring
investigationобязательноstring
rate_priceобязательноstringPrice of one successful POST /rate request.
tariff_plan_idобязательноuuid | null
tariff_plan_codeобязательноstring | null
errorнеобязательноErrorBody | null
codeобязательноstring
messageобязательноstring
statusнеобязательноinteger | null
extraнеобязательноobject | null