OpenAPI 3.1 LIVE

Documentation API

Requêtes prêtes à copier, réponses réalistes et schémas complets pour AML, taux et facturation.

13opérations
4groupes
3.1OpenAPI
KEY

Authentification

Envoyez la clé API avec chaque requête protégée. Les opérations facturées exigent aussi une Idempotency-Key unique.

Toutes les opérations API utilisent POST. Une requête traitée renvoie HTTP 200 : vérifiez error dans le JSON (code, message, status). Utilisez POST /api/v1/rates/get. POST /api/v1/rate est Deprecated et conserve ses requêtes, réponses, erreurs et facturation ; aucune suppression n’est programmée.

URL de basehttps://platform.safio.ioHeaderX-API-Key: sk_safio_...BillableIdempotency-Key: order-2026-000001
01 · Démarrage rapide

Lancez votre premier contrôle AML

Copiez l’exemple, remplacez la clé API et l’adresse. Safio renvoie un check_id pour suivre le résultat.

POST/api/v1/aml/checks/create
Code examples
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 opérations · 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

Request body

This operation has no request body.

Responses

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "data": {
    "status": "ok"
  },
  "error": null
}
Schema6 champs
FieldTypeDescription
datafacultatifobject | null
errorfacultatifErrorBody | null
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null
POSTRatesAPI keyIdempotent

/api/v1/rates/get

Get Rate

get_rate_api_v1_rates_get_post

Headers & parameters

Idempotency-Keyheaderstringrequis

Stable unique key preventing duplicate rate charges.

Request body

requis
Request
{
  "from_currency": "USDT",
  "to_currency": "RUB",
  "max_age_seconds": 60
}
Schema5 champs
FieldTypeDescription
from_currencyrequisstring
to_currencyrequisstring
max_age_secondsfacultatifinteger | nullMax staleness in seconds
min_updated_atfacultatifdate-time | nullMin acceptable update timestamp
sourcefacultatifstring | nullOptional configured rate route alias.

Responses

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "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
}
Schema22 champs
FieldTypeDescription
datafacultatifRateResponse | null
from_currencyrequisstring
to_currencyrequisstring
raterequisnumber
median_raterequisnumber
min_raterequisnumber
max_raterequisnumber
sample_countrequisinteger
updated_atrequisdate-time
valid_untilrequisdate-time
billingrequisBillingChargeResponse
enabledrequisboolean
amountrequisstring
currencyrequisstring
balance_afterrequisstring | null
waivedfacultatifbooleanTrue when a reserved AML charge was automatically returned because the purchased result was not delivered with contractually sufficient coverage.
reusedfacultatifbooleanTrue when the same Idempotency-Key returned the stored response without a second charge.
errorfacultatifErrorBody | null
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null
POSTRatesDeprecatedAPI keyIdempotent

/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

Headers & parameters

Idempotency-Keyheaderstringrequis

Stable unique key preventing duplicate rate charges.

Request body

requis
Request
{
  "from_currency": "USDT",
  "to_currency": "RUB",
  "max_age_seconds": 60
}
Schema5 champs
FieldTypeDescription
from_currencyrequisstring
to_currencyrequisstring
max_age_secondsfacultatifinteger | nullMax staleness in seconds
min_updated_atfacultatifdate-time | nullMin acceptable update timestamp
sourcefacultatifstring | nullOptional configured rate route alias.

Responses

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "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
}
Schema22 champs
FieldTypeDescription
datafacultatifRateResponse | null
from_currencyrequisstring
to_currencyrequisstring
raterequisnumber
median_raterequisnumber
min_raterequisnumber
max_raterequisnumber
sample_countrequisinteger
updated_atrequisdate-time
valid_untilrequisdate-time
billingrequisBillingChargeResponse
enabledrequisboolean
amountrequisstring
currencyrequisstring
balance_afterrequisstring | null
waivedfacultatifbooleanTrue when a reserved AML charge was automatically returned because the purchased result was not delivered with contractually sufficient coverage.
reusedfacultatifbooleanTrue when the same Idempotency-Key returned the stored response without a second charge.
errorfacultatifErrorBody | null
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null
POSTAMLAPI key

/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

Request body

This operation has no request body.

Responses

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "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
}
Schema20 champs
FieldTypeDescription
datafacultatifAmlCapabilitiesResponse | null
default_productrequisAmlProduct
productsrequisAnalysisLevelCapabilityResponse[]
productrequisAmlProduct
default_lookback_daysrequisinteger
allowedrequisboolean
evidence_accessfacultatifboolean
networksrequisNetworkCapabilityResponse[]
networkrequisAmlNetwork
assetsrequisAmlAsset[]
address_productsrequisAmlProduct[]Products both permitted for this key and configured for an address on this network.
transaction_productsrequisAmlProduct[]Products both permitted for this key and configured for a transaction on this network.
default_address_productrequisAmlProduct | null
default_transaction_productrequisAmlProduct | null
notesrequisstring[]
errorfacultatifErrorBody | null
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null
POSTAMLAPI keyIdempotent

/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

Headers & parameters

Idempotency-Keyheaderstringrequis

Stable unique key used to prevent duplicate checks and charges.

Request body

requis
Request
{
  "subject": {
    "type": "address",
    "value": "TPKvdDWMtkbmx1UXopGVyXGJi256uhXVuH"
  },
  "network": "tron",
  "asset": "USDT",
  "product": "screen",
  "lookback_days": 90,
  "callback_url": "https://hooks.customer.example/aml/completed"
}
Schema10 champs
FieldTypeDescription
subjectrequisAmlSubjectRequest
typerequisSubjectType
valuerequisstring
networkrequisAmlNetwork
assetrequisAmlAsset
productfacultatifAmlProduct | 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_daysfacultatifinteger | nullOptional historical window. When omitted, the selected level uses its advertised default: exact_sanctions/screen=90, enhanced=180, investigation=730 days.
risk_model_idfacultatifuuid | nullPublished customer risk model to evaluate alongside the Safio score.
allow_product_upgradefacultatifbooleanWhen true, Safio may raise the requested product to the minimum product required by risk_model_id. No silent upgrade occurs when false.
callback_urlfacultatifstring | nullOptional HTTPS webhook URL. It must match a callback URL pattern configured by an administrator for this API key.

Responses

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "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
}
Schema16 champs
FieldTypeDescription
datafacultatifAmlCheckAcceptedResponse | null
check_idrequisuuid
statusrequisstring
stagerequisstring
status_endpointrequisstring
report_endpointrequisstring
productrequisAmlProduct
lookback_daysrequisinteger
callback_statusrequisstring | null
created_atrequisdate-time
reusedrequisbooleanTrue when the same Idempotency-Key returned the original check.
errorfacultatifErrorBody | null
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null
POSTAMLAPI keyIdempotent

/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

Headers & parameters

Idempotency-Keyheaderstringrequis

Stable key for the complete batch.

Request body

requis
Request
{
  "items": [
    {
      "subject": {
        "type": "address",
        "value": "TPKvdDWMtkbmx1UXopGVyXGJi256uhXVuH"
      },
      "network": "tron",
      "asset": "USDT",
      "product": "screen",
      "client_reference": "customer-001"
    }
  ]
}
Schema12 champs
FieldTypeDescription
itemsrequisAmlBulkCheckItemRequest[]
subjectrequisAmlSubjectRequest
typerequisSubjectType
valuerequisstring
networkrequisAmlNetwork
assetrequisAmlAsset
productfacultatifAmlProduct | 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_daysfacultatifinteger | nullOptional historical window. When omitted, the selected level uses its advertised default: exact_sanctions/screen=90, enhanced=180, investigation=730 days.
risk_model_idfacultatifuuid | nullPublished customer risk model to evaluate alongside the Safio score.
allow_product_upgradefacultatifbooleanWhen true, Safio may raise the requested product to the minimum product required by risk_model_id. No silent upgrade occurs when false.
callback_urlfacultatifstring | nullOptional HTTPS webhook URL. It must match a callback URL pattern configured by an administrator for this API key.
client_referencefacultatifstring | nullCustomer identifier echoed in every bulk response.

Responses

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "data": null,
  "error": {
    "code": "invalid_request",
    "message": "The request could not be processed.",
    "status": 400
  }
}
Schema24 champs
FieldTypeDescription
datafacultatifAmlBulkCheckAcceptedResponse | null
batch_idrequisuuid
acceptedrequisinteger
rejectedrequisinteger
itemsrequisAmlBulkCheckAcceptedItemResponse[]
indexrequisinteger
client_referencerequisstring | null
checkfacultatifAmlCheckAcceptedResponse | null
check_idrequisuuid
statusrequisstring
stagerequisstring
status_endpointrequisstring
report_endpointrequisstring
productrequisAmlProduct
lookback_daysrequisinteger
callback_statusrequisstring | null
created_atrequisdate-time
reusedrequisbooleanTrue when the same Idempotency-Key returned the original check.
errorfacultatifobject | null
errorfacultatifErrorBody | null
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null
POSTAMLAPI key

/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

Request body

requis
Request
{
  "ids": [
    "c4e5295c-8f4a-4db2-980f-0e782b63811f"
  ]
}
Schema1 champs
FieldTypeDescription
idsrequisuuid[]

Responses

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "data": null,
  "error": {
    "code": "http_error",
    "message": "Missing or invalid API key.",
    "status": 401
  }
}
Schema33 champs
FieldTypeDescription
datafacultatifAmlBulkCheckResponse | null
itemsrequisAmlBulkCheckResultItemResponse[]
idrequisuuid
checkfacultatifAmlCheckResponse | null
check_idrequisuuid
subjectrequisAmlSubjectResponse
networkrequisAmlNetwork
assetrequisAmlAsset
statusrequisstring
stagerequisstring
productrequisAmlProduct
lookback_daysrequisintegerActivity window purchased for this check.
created_atrequisdate-time
started_atrequisdate-time | null
completed_atrequisdate-time | null
deadline_atrequisdate-time | nullCurrent processing-attempt deadline, when the check is running.
status_endpointrequisstring
report_endpointrequisstring
callback_statusrequisstring | null
callback_attemptsrequisinteger
processing_attemptsrequisintegerNumber of worker attempts, including automatic recovery.
processing_time_msfacultatifinteger | nullCompleted wall-clock processing time for the latest attempt.
queue_time_msfacultatifinteger | nullTime from durable request creation until a worker started it.
total_time_msfacultatifinteger | nullCompleted end-to-end time from request creation to final result.
stage_durations_msfacultatifobjectSource-neutral processing time accumulated by public stage.
resultrequisAmlProductResultResponse | null
errorrequisobject | null
errorfacultatifobject | null
errorfacultatifErrorBody | null
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null
POSTAMLAPI key

/api/v1/aml/checks/get

Get an asynchronous AML check

get_aml_check_api_v1_aml_checks_get_post

Request body

requis
Request
{
  "id": "c4e5295c-8f4a-4db2-980f-0e782b63811f"
}
Schema1 champs
FieldTypeDescription
idrequisuuid

Responses

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "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
}
Schema87 champs
FieldTypeDescription
datafacultatifAmlCheckResponse | null
check_idrequisuuid
subjectrequisAmlSubjectResponse
typerequisSubjectType
valuerequisstring
networkrequisAmlNetwork
assetrequisAmlAsset
statusrequisstring
stagerequisstring
productrequisAmlProduct
lookback_daysrequisintegerActivity window purchased for this check.
created_atrequisdate-time
started_atrequisdate-time | null
completed_atrequisdate-time | null
deadline_atrequisdate-time | nullCurrent processing-attempt deadline, when the check is running.
status_endpointrequisstring
report_endpointrequisstring
callback_statusrequisstring | null
callback_attemptsrequisinteger
processing_attemptsrequisintegerNumber of worker attempts, including automatic recovery.
processing_time_msfacultatifinteger | nullCompleted wall-clock processing time for the latest attempt.
queue_time_msfacultatifinteger | nullTime from durable request creation until a worker started it.
total_time_msfacultatifinteger | nullCompleted end-to-end time from request creation to final result.
stage_durations_msfacultatifobjectSource-neutral processing time accumulated by public stage.
resultrequisAmlProductResultResponse | null
productrequisAmlProduct
subjectrequisAmlProductSubjectResponse
typerequisSubjectType
valuerequisstring
networkrequisAmlNetwork
assetrequisAmlAsset
risk_scorefacultatifinteger | 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_levelrequisRiskLevel
decisionrequisstring
triggered_rulesrequisstring[]
categoriesrequisAmlCategoryAssessmentResponse[]
categoryrequisRiskCategory
assessment_statusrequisstring
exposure_typerequisstring
min_confirmed_hopsfacultatifinteger | null
path_statusrequisstring
exposure_amount_usdfacultatifstring | nullDocumented USDT exposure amount or path-capacity upper bound. Null for non-USDT assets and when exposure is not attributable to an amount.
exposure_sharefacultatifnumber | null
directionsfacultatifExposureDirection[]
context_signal_countfacultatifinteger
warningfacultatifstring | null
coveragerequisAmlCoverageItemResponse[]
categoryrequisRiskCategory
statusrequisstring
directionsfacultatifExposureDirection[]
lookback_daysrequisinteger
coverage_statusrequisstring
lookback_daysrequisinteger
route_summariesfacultatifAmlRouteSummaryResponse[] | nullAggregated confirmed routes available to Enhanced and Investigation.
categoryrequisRiskCategory
directionrequisExposureDirection
confirmed_hopsrequisinteger
exposure_typerequisstring
exposure_amount_usdfacultatifstring | null
exposure_sharefacultatifnumber | null
first_observed_atfacultatifdate-time | null
last_observed_atfacultatifdate-time | null
entity_namefacultatifstring | nullPresent only when the API key permits downstream entity disclosure.
evidence_availablefacultatifboolean
policy_versionrequisstring
dataset_revisionrequisstring
billingrequisBillingChargeResponse
enabledrequisboolean
amountrequisstring
currencyrequisstring
balance_afterrequisstring | null
waivedfacultatifbooleanTrue when a reserved AML charge was automatically returned because the purchased result was not delivered with contractually sufficient coverage.
warningsrequisstring[]
customer_riskfacultatifCustomerRiskResultResponse | nullResult calculated with the customer's published model. Safio's proprietary score remains in risk_score and is evaluated independently.
model_idrequisuuid
model_namerequisstring
model_versionrequisinteger
scorefacultatifinteger | null
risk_levelrequisRiskLevel
decisionrequisstring
triggered_rulesrequisstring[]
errorrequisobject | null
errorfacultatifErrorBody | null
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null
POSTAMLAPI key

/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

Request body

requis
Request
{
  "id": "c4e5295c-8f4a-4db2-980f-0e782b63811f"
}
Schema1 champs
FieldTypeDescription
idrequisuuid

Responses

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "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
}
Schema72 champs
FieldTypeDescription
datafacultatifAmlEvidenceResponse | null
check_idrequisuuid
audit_idrequisuuid
productrequis"investigation"
subjectrequisAmlProductSubjectResponse
typerequisSubjectType
valuerequisstring
networkrequisAmlNetwork
assetrequisAmlAsset
generated_atrequisdate-time
lookback_daysrequisinteger
linked_identitiesrequisAmlEvidenceIdentityResponse[]
addressrequisstring
kindrequisstring
node_activityfacultatifAmlEvidenceNodeActivityResponse[]Observed transaction-flow denominator for graph nodes. Values are deduplicated from the immutable screening trace and are not wallet balances.
addressrequisstring
observed_inflowrequisstring
observed_outflowrequisstring
observed_amountrequisstringLargest observed inbound or outbound value in the immutable screening window. This is not the current on-chain balance.
screened_transaction_transfersfacultatifAmlEvidenceSubjectTransferResponse[]Economic transfers that belong to the screened transaction subject. Empty when the screened subject is an address.
sourcerequisstring
destinationrequisstring
transactionrequisstring
networkrequisAmlNetwork
assetrequisAmlAsset
amountrequisstring
timestampfacultatifdate-time | null
channelrequisstring
rolerequisstring
initiatorfacultatifstring | null
pathsrequisAmlEvidencePathResponse[]
categoryrequisRiskCategory
risk_addressrequisstring
entity_namerequisstring | nullPresent only when the analyst key also has the aml:entity:read downstream-disclosure scope.
directionrequisExposureDirection
confirmed_hopsrequisinteger
amountrequisstring | null
amount_basisrequisstring
stepsrequisAmlEvidenceTransferResponse[]
sourcerequisstring
destinationrequisstring
transactionrequisstring
networkrequisAmlNetwork
assetrequisAmlAsset
amountrequisstring
depthrequisinteger
timestamprequisdate-time
directionrequisExposureDirection
channelrequisstring
rolerequisstring
initiatorfacultatifstring | null
contextual_signalsrequisAmlEvidenceContextResponse[]
categoryrequisRiskCategory
directionrequisExposureDirection
countrequisinteger
warningrequisstring
coveragerequisAmlCoverageItemResponse[]
categoryrequisRiskCategory
statusrequisstring
directionsfacultatifExposureDirection[]
lookback_daysrequisinteger
analyst_notesrequisstring[]
policy_versionrequisstring
dataset_revisionrequisstring
export_tokenrequisstring
export_endpointrequisstring
export_expires_atrequisdate-time
errorfacultatifErrorBody | null
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null
POSTAMLAPI key

/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

Request body

requis
Request
{
  "id": "c4e5295c-8f4a-4db2-980f-0e782b63811f",
  "export_token": "ev_4J6YmpZ9xK2rN7qW5cT8bH3sF1dL0aPc"
}
Schema2 champs
FieldTypeDescription
idrequisuuid
export_tokenrequisstring

Responses

2
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "data": null,
  "error": {
    "code": "http_error",
    "message": "Missing or invalid API key.",
    "status": 401
  }
}
Schema6 champs
FieldTypeDescription
datarequisnull
errorrequisErrorBody
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/pdf
PDF

Document binaire renvoyé avec Content-Type: application/pdf.

POSTAMLAPI key

/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

Request body

requis
Request
{
  "id": "c4e5295c-8f4a-4db2-980f-0e782b63811f"
}
Schema1 champs
FieldTypeDescription
idrequisuuid

Responses

2
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "data": null,
  "error": {
    "code": "http_error",
    "message": "Missing or invalid API key.",
    "status": 401
  }
}
Schema6 champs
FieldTypeDescription
datarequisnull
errorrequisErrorBody
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/pdf
PDF

Document binaire renvoyé avec Content-Type: application/pdf.

POSTAMLAPI key

/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

Request body

requis
Request
{
  "source_address": "TPKvdDWMtkbmx1UXopGVyXGJi256uhXVuH",
  "target": {
    "risk_category": "sanctions"
  },
  "network": "tron",
  "asset": "USDT",
  "max_hops": 5,
  "lookback_days": 180
}
Schema15 champs
FieldTypeDescription
source_addressrequisstring
targetrequisAmlPathTargetRequest
addressfacultatifstring | null
entity_categoryfacultatifEntityCategory | null
risk_categoryfacultatifRiskCategory | null
networkrequisAmlNetwork
assetrequisAmlAsset
max_hopsfacultatifinteger
lookback_daysfacultatifinteger
min_transfer_amountfacultatifnumber | string
max_transfer_amountfacultatifnumber | string | null
min_transfer_amount_usdfacultatifnumber | string | null
max_transfer_amount_usdfacultatifnumber | string | null
max_pathsfacultatifinteger
modefacultatifstring

Responses

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "data": null,
  "error": {
    "code": "http_error",
    "message": "Missing or invalid API key.",
    "status": 401
  }
}
Schema41 champs
FieldTypeDescription
datafacultatifAmlPathSearchResponse | null
statusrequisstring
networkrequisAmlNetwork
assetrequisAmlAsset
source_addressrequisstring
targetrequisAmlPathTargetRequest
addressfacultatifstring | null
entity_categoryfacultatifEntityCategory | null
risk_categoryfacultatifRiskCategory | null
max_hopsrequisinteger
billable_depth_tierrequisinteger
pathsrequisAmlPathResponse[]
hopsrequisinteger
path_capacityrequisstring
first_observed_atrequisdate-time | null
last_observed_atrequisdate-time | null
matched_targetrequisAmlPathMatchResponse
addressrequisstring
entity_categoryfacultatifEntityCategory | null
risk_categoryfacultatifRiskCategory | null
entity_namefacultatifstring | null
confidencefacultatifnumber | null
source_tierfacultatifstring | null
stepsrequisAmlPathTransferResponse[]
sourcerequisstring
destinationrequisstring
transactionrequisstring
assetrequisAmlAsset
amountrequisstring
timestamprequisdate-time | null
coveragerequisAmlPathSearchCoverageResponse
statusrequisstring
reasonsrequisstring[]
visited_addressesrequisinteger
visited_transactionsrequisinteger
warningsrequisstring[]
errorfacultatifErrorBody | null
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null
POSTBillingAPI key

/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

Request body

This operation has no request body.

Responses

1
200Processed RPC request. Inspect error in the response body; HTTP 200 does not imply business success.application/json
Response
{
  "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
}
Schema19 champs
FieldTypeDescription
datafacultatifBillingAccountResponse | null
api_key_idrequisuuid
enabledrequisboolean
currencyrequisstring
balancerequisstring
complimentary_aml_checks_remainingfacultatifinteger
aml_pricesrequisAmlPriceScheduleResponse
exact_sanctionsrequisstring
screenrequisstring
enhancedrequisstring
investigationrequisstring
rate_pricerequisstringPrice of one successful POST /rate request.
tariff_plan_idrequisuuid | null
tariff_plan_coderequisstring | null
errorfacultatifErrorBody | null
coderequisstring
messagerequisstring
statusfacultatifinteger | null
extrafacultatifobject | null