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. Explicit Investigation requests with the current product scope support up to 1825 days; other products and legacy requests retain the 730-day maximum.
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. Explicit Investigation requests with the current product scope support up to 1825 days; other products and legacy requests retain the 730-day maximum.
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
}
Схема183 полей
ПолеТипОписание
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—
risk_scopeнеобязательноstring—
asset_assessmentнеобязательноAmlAssetRiskResponse | null—
risk_scoreнеобязательноinteger | null—
risk_levelобязательноRiskLevel—
decisionобязательноstring—
coverage_statusобязательноstring—
assetобязательноAmlAsset—
wallet_riskнеобязательноAmlWalletRiskResponse | null—
risk_scoreнеобязательноinteger | null—
risk_levelобязательноRiskLevel—
decisionобязательноstring—
coverage_statusнеобязательноstring—
assets_reviewedнеобязательноAmlAsset[]—
networks_reviewedнеобязательноAmlNetwork[]—
finding_assetsнеобязательноAmlAsset[]—
categoriesнеобязательноRiskCategory[]—
verified_finding_countобязательноinteger—
exact_match_countнеобязательноinteger—
participant_countобязательноinteger—
small_inbound_onlyнеобязательноboolean—
policy_versionобязательноstring—
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[]—
activity_summaryнеобязательноAmlActivitySummaryResponse | nullSource-neutral amounts and dates from the immutable subject activity. Transaction amounts exclude fees and are not an attributed illicit amount. Address directional totals remain protected.
transaction_amountнеобязательноstring | nullGross sum of observed value-transfer events; internal hops may count the same value more than once.
value_transfer_countнеобязательноinteger | null—
first_transfer_atнеобязательноdate-time | null—
last_transfer_atнеобязательноdate-time | null—
timestamp_statusнеобязательноstring—
assessment_summaryнеобязательноstring[]Deterministic explanation of confirmed findings and coverage; not an analyst opinion.
ownership_boundariesнеобязательноAmlOwnershipBoundarySummaryResponse[]—
finding_idобязательноstring—
kindобязательноstring—
labelобязательноstring—
networkобязательноAmlNetwork—
assetобязательноAmlAsset—
candidate_categoryобязательноRiskCategory—
directionобязательноExposureDirection—
summaryобязательноstring—
source_refобязательноstring—
source_as_ofобязательноstring—
policy_versionобязательноstring—
score_effectнеобязательно"none"—
observed_transfer_countобязательноinteger—
asset_restrictionsнеобязательноAmlAssetRestrictionResponse[]—
networkобязательноAmlNetwork—
assetобязательноAmlAsset—
canonical_contractобязательноstring—
issuerобязательноstring—
issuer_designated_atобязательноstring—
restrictionобязательно"blocked_token_under_current_us_sanctions"—
statement_atобязательноstring—
source_refобязательноstring—
source_sha256обязательноstring—
issuer_source_refобязательноstring—
issuer_source_sha256обязательноstring—
contract_source_refобязательноstring—
observed_atобязательноdate-time—
policy_versionобязательноstring—
wallet_explicitly_listed_by_authorityнеобязательноfalse—
score_effectнеобязательноstring—
risk_score_floorнеобязательноinteger | null—
asset_transaction_banнеобязательноAmlAssetTransactionBanResponse | null—
asset_transaction_ban_statusнеобязательноstring—
asset_transaction_ban_error_typeнеобязательноstring | null—
supporting_publication_statusнеобязательноstring—
supporting_publication_error_typeнеобязательноstring | null—
supporting_publicationsнеобязательноAmlAssetPublicationResponse[]—
decision_effectнеобязательноstring—
applicable_movement_countнеобязательноinteger—
decision_basisнеобязательноstring | null—
summaryобязательноstring—
behavioral_review_statusнеобязательноstring—
behavioral_networks_reviewedнеобязательноAmlNetwork[]—
behavioral_assets_reviewedнеобязательноAmlAsset[]—
behavioral_findingsнеобязательноAmlBehavioralSummaryResponse[]Receipt-confirmed activity observations. They do not add risk points or establish illicit funds, intent or common control.
finding_idобязательноstring—
kindобязательноstring—
networkобязательноAmlNetwork—
assetобязательноAmlAsset—
summaryобязательноstring—
verified_transaction_countобязательноinteger—
verified_transfer_countобязательноinteger—
elapsed_secondsнеобязательноinteger | null—
amount_ratioнеобязательноstring | null—
score_effectнеобязательно"none"—
policy_versionобязательноstring—
participant_profile_summaryнеобязательноAmlParticipantProfileSummaryResponse[]Receipt-verified participant-profile routes retained in the analysis window. They contribute to overall wallet risk and remain separate from selected-transfer provenance, exposure amounts and transfer-only risk points.
networkнеобязательноAmlNetwork | null—
assetобязательноAmlAsset—
categoryобязательноRiskCategory—
directionобязательноExposureDirection—
verified_route_countобязательноinteger—
before_transactionобязательноinteger—
after_transactionобязательноinteger—
overlapping_transactionобязательноinteger—
first_observed_atобязательноdate-time—
last_observed_atобязательноdate-time—
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
}
Схема435 полей
ПолеТипОписание
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—
observed_address_transfersнеобязательноAmlEvidenceSubjectTransferResponse[]Observed economic transfers touching the screened address or its linked identities, deduplicated from the immutable analysis trace. These are activity records, not confirmed risk exposure or full wallet history.
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—
participant_roleнеобязательноstring | null—
matched_amountнеобязательноstring | null—
matched_transfersнеобязательноAmlEvidenceSubjectTransferResponse[]—
sourceобязательноstring—
destinationобязательноstring—
transactionобязательноstring—
networkобязательноAmlNetwork—
assetобязательноAmlAsset—
amountобязательноstring—
timestampнеобязательноdate-time | null—
channelобязательноstring—
roleобязательноstring—
initiatorнеобязательноstring | null—
contextual_signalsобязательноAmlEvidenceContextResponse[]—
categoryобязательноRiskCategory—
directionобязательноExposureDirection—
countобязательноinteger—
warningобязательноstring—
participant_profilesнеобязательноAmlEvidenceParticipantProfileResponse[]—
networkнеобязательноAmlNetwork | null—
participantобязательноstring—
assetобязательноAmlAsset—
categoryобязательноRiskCategory—
risk_addressобязательноstring—
directionобязательноExposureDirection—
timingобязательно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—
ownership_boundariesнеобязательноAmlOwnershipBoundaryEvidenceResponse[]—
finding_idобязательноstring—
kindобязательноstring—
labelобязательноstring—
networkобязательноAmlNetwork—
assetобязательноAmlAsset—
candidate_categoryобязательноRiskCategory—
directionобязательноExposureDirection—
summaryобязательноstring—
source_refобязательноstring—
source_as_ofобязательноstring—
policy_versionобязательноstring—
score_effectнеобязательно"none"—
observed_transfer_countобязательноinteger—
addressобязательноstring—
risk_addressобязательно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—
contract_code_sha256необязательноstring | null—
contract_code_observed_atнеобязательноdate-time | null—
asset_restrictionsнеобязательноAmlAssetRestrictionEvidenceResponse[]—
networkобязательноAmlNetwork—
assetобязательноAmlAsset—
canonical_contractобязательноstring—
issuerобязательноstring—
issuer_designated_atобязательноstring—
restrictionобязательно"blocked_token_under_current_us_sanctions"—
statement_atобязательноstring—
source_refобязательноstring—
source_sha256обязательноstring—
issuer_source_refобязательноstring—
issuer_source_sha256обязательноstring—
contract_source_refобязательноstring—
observed_atобязательноdate-time—
policy_versionобязательноstring—
wallet_explicitly_listed_by_authorityнеобязательноfalse—
score_effectнеобязательноstring—
risk_score_floorнеобязательноinteger | null—
asset_transaction_banнеобязательноAmlAssetTransactionBanResponse | null—
asset_nameобязательноstring—
jurisdictionобязательно"EU"—
restriction_typeобязательно"asset_transaction_ban"—
restriction_applicable_fromобязательноstring—
legal_basisобязательноstring—
legal_annexобязательноstring—
consolidation_celexобязательноstring—
consolidated_as_ofобязательноstring—
official_entity_source_refобязательноstring—
official_response_sha256обязательноstring—
official_observed_atобязательноdate-time—
official_metadata_source_refобязательноstring—
official_metadata_response_sha256обязательноstring—
official_metadata_observed_atобязательноdate-time—
asset_transaction_ban_statusнеобязательноstring—
asset_transaction_ban_error_typeнеобязательноstring | null—
supporting_publication_statusнеобязательноstring—
supporting_publication_error_typeнеобязательноstring | null—
supporting_publicationsнеобязательноAmlAssetPublicationResponse[]—
source_refобязательноstring—
response_sha256обязательноstring—
observation_sha256обязательноstring—
observed_atобязательноdate-time—
decision_effectнеобязательноstring—
applicable_movement_countнеобязательноinteger—
decision_basisнеобязательноstring | null—
summaryобязательноstring—
movementsобязательноAmlEvidenceSubjectTransferResponse[]—
sourceобязательноstring—
destinationобязательноstring—
transactionобязательноstring—
networkобязательноAmlNetwork—
assetобязательноAmlAsset—
amountобязательноstring—
timestampнеобязательноdate-time | null—
channelобязательноstring—
roleобязательноstring—
initiatorнеобязательноstring | null—
proofsобязательноAmlBehavioralProofResponse[]—
networkобязательноAmlNetwork—
transactionобязательноstring—
timestampобязательноdate-time—
block_numberобязательноinteger—
block_hashобязательноstring | null—
initiatorобязательноstring—
receipt_sha256обязательноstring—
statusобязательно"confirmed_success"—
verification_basisнеобязательноstring—
execution_trace_sha256необязательноstring | null—
chain_proofsнеобязательноAmlChainProofResponse[]—
networkобязательноAmlNetwork—
transactionобязательноstring—
timestampобязательноdate-time—
block_numberобязательноinteger—
block_hashобязательноstring | null—
initiatorобязательноstring—
receipt_sha256обязательноstring—
statusобязательно"confirmed_success"—
verification_basisнеобязательноstring—
execution_trace_sha256необязательноstring | null—
assetобязательноAmlAsset—
observation_hashобязательноstring—
observed_atобязательноdate-time—
attribution_sourcesнеобязательноAmlAttributionSourceResponse[]—
networkобязательноAmlNetwork—
addressобязательноstring—
labelобязательноstring—
categoriesобязательноRiskCategory[]—
source_refобязательноstring | null—
source_tierобязательноstring—
confidenceобязательноnumber—
version_hashобязательноstring—
evidenceобязательноobject—
chain_proof_statusнеобязательноstring—
behavioral_review_statusнеобязательноstring—
behavioral_networks_reviewedнеобязательноAmlNetwork[]—
behavioral_assets_reviewedнеобязательноAmlAsset[]—
behavioral_findingsнеобязательноAmlBehavioralEvidenceResponse[]—
finding_idобязательноstring—
kindобязательноstring—
networkобязательноAmlNetwork—
assetобязательноAmlAsset—
summaryобязательноstring—
verified_transaction_countобязательноinteger—
verified_transfer_countобязательноinteger—
elapsed_secondsнеобязательноinteger | null—
amount_ratioнеобязательноstring | null—
score_effectнеобязательно"none"—
policy_versionобязательноstring—
participantобязательно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—
proofsобязательноAmlBehavioralProofResponse[]—
networkобязательноAmlNetwork—
transactionобязательноstring—
timestampобязательноdate-time—
block_numberобязательноinteger—
block_hashобязательноstring | null—
initiatorобязательноstring—
receipt_sha256обязательноstring—
statusобязательно"confirmed_success"—
verification_basisнеобязательноstring—
execution_trace_sha256необязательноstring | null—
behavioral_review_warningsнеобязательно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—
assessmentнеобязательноAmlProductResultResponse | nullImmutable screening result associated with this evidence export.
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—
risk_scopeнеобязательноstring—
asset_assessmentнеобязательноAmlAssetRiskResponse | null—
risk_scoreнеобязательноinteger | null—
risk_levelобязательноRiskLevel—
decisionобязательноstring—
coverage_statusобязательноstring—
assetобязательноAmlAsset—
wallet_riskнеобязательноAmlWalletRiskResponse | null—
risk_scoreнеобязательноinteger | null—
risk_levelобязательноRiskLevel—
decisionобязательноstring—
coverage_statusнеобязательноstring—
assets_reviewedнеобязательноAmlAsset[]—
networks_reviewedнеобязательноAmlNetwork[]—
finding_assetsнеобязательноAmlAsset[]—
categoriesнеобязательноRiskCategory[]—
verified_finding_countобязательноinteger—
exact_match_countнеобязательноinteger—
participant_countобязательноinteger—
small_inbound_onlyнеобязательноboolean—
policy_versionобязательноstring—
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[]—
activity_summaryнеобязательноAmlActivitySummaryResponse | nullSource-neutral amounts and dates from the immutable subject activity. Transaction amounts exclude fees and are not an attributed illicit amount. Address directional totals remain protected.
transaction_amountнеобязательноstring | nullGross sum of observed value-transfer events; internal hops may count the same value more than once.
value_transfer_countнеобязательноinteger | null—
first_transfer_atнеобязательноdate-time | null—
last_transfer_atнеобязательноdate-time | null—
timestamp_statusнеобязательноstring—
assessment_summaryнеобязательноstring[]Deterministic explanation of confirmed findings and coverage; not an analyst opinion.
ownership_boundariesнеобязательноAmlOwnershipBoundarySummaryResponse[]—
finding_idобязательноstring—
kindобязательноstring—
labelобязательноstring—
networkобязательноAmlNetwork—
assetобязательноAmlAsset—
candidate_categoryобязательноRiskCategory—
directionобязательноExposureDirection—
summaryобязательноstring—
source_refобязательноstring—
source_as_ofобязательноstring—
policy_versionобязательноstring—
score_effectнеобязательно"none"—
observed_transfer_countобязательноinteger—
asset_restrictionsнеобязательноAmlAssetRestrictionResponse[]—
networkобязательноAmlNetwork—
assetобязательноAmlAsset—
canonical_contractобязательноstring—
issuerобязательноstring—
issuer_designated_atобязательноstring—
restrictionобязательно"blocked_token_under_current_us_sanctions"—
statement_atобязательноstring—
source_refобязательноstring—
source_sha256обязательноstring—
issuer_source_refобязательноstring—
issuer_source_sha256обязательноstring—
contract_source_refобязательноstring—
observed_atобязательноdate-time—
policy_versionобязательноstring—
wallet_explicitly_listed_by_authorityнеобязательноfalse—
score_effectнеобязательноstring—
risk_score_floorнеобязательноinteger | null—
asset_transaction_banнеобязательноAmlAssetTransactionBanResponse | null—
asset_transaction_ban_statusнеобязательноstring—
asset_transaction_ban_error_typeнеобязательноstring | null—
supporting_publication_statusнеобязательноstring—
supporting_publication_error_typeнеобязательноstring | null—
supporting_publicationsнеобязательноAmlAssetPublicationResponse[]—
decision_effectнеобязательноstring—
applicable_movement_countнеобязательноinteger—
decision_basisнеобязательноstring | null—
summaryобязательноstring—
behavioral_review_statusнеобязательноstring—
behavioral_networks_reviewedнеобязательноAmlNetwork[]—
behavioral_assets_reviewedнеобязательноAmlAsset[]—
behavioral_findingsнеобязательноAmlBehavioralSummaryResponse[]Receipt-confirmed activity observations. They do not add risk points or establish illicit funds, intent or common control.
finding_idобязательноstring—
kindобязательноstring—
networkобязательноAmlNetwork—
assetобязательноAmlAsset—
summaryобязательноstring—
verified_transaction_countобязательноinteger—
verified_transfer_countобязательноinteger—
elapsed_secondsнеобязательноinteger | null—
amount_ratioнеобязательноstring | null—
score_effectнеобязательно"none"—
policy_versionобязательноstring—
participant_profile_summaryнеобязательноAmlParticipantProfileSummaryResponse[]Receipt-verified participant-profile routes retained in the analysis window. They contribute to overall wallet risk and remain separate from selected-transfer provenance, exposure amounts and transfer-only risk points.
networkнеобязательноAmlNetwork | null—
assetобязательноAmlAsset—
categoryобязательноRiskCategory—
directionобязательноExposureDirection—
verified_route_countобязательноinteger—
before_transactionобязательноinteger—
after_transactionобязательноinteger—
overlapping_transactionобязательноinteger—
first_observed_atобязательноdate-time—
last_observed_atобязательноdate-time—
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необязательно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. Pass version=current to apply the current template to the same saved public assessment. The originally issued PDF and assessment remain unchanged.

get_aml_check_report_api_v1_aml_checks_report_pdf_post

Тело запроса

обязательно
Пример запроса
{
  "id": "c4e5295c-8f4a-4db2-980f-0e782b63811f"
}
Схема2 полей
ПолеТипОписание
idобязательноuuid—
versionнеобязательноstringissued returns the original stored PDF. current applies the current document template to the saved assessment, without reanalysis or charging.

Ответы

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—