Verification & Transaction Risk API
Use a platform API key to start individual verification (KYC), business verification (KYB), transaction monitoring and wallet address screening from your own systems, and to query check records. The open API and the console run the same check process: the same prices and the same rules for results, refunds and reconciliation.
First click Enable under Verification & Transaction Risk in the console, then create a key under API Management and grant the Verification & risk permissions: verification.read to query prices and records, verification.write to start checks. Each check is charged from your account balance.
Endpoints
- GET /api/v1/verification/info: Returns whether your account has the service enabled, whether each of the four check types is available and its price (USD), and the networks and assets available for transaction monitoring and wallet screening. Types that are not available have no price.
- POST /api/v1/verification/checks: Starts a check; charging and creating the record happen in the same request. Identity checks return a handoff_url you send to the person being verified; transaction monitoring and wallet screening usually return a result directly.
- GET /api/v1/verification/checks: The list is sorted by start time, newest first, and can be filtered by kind, status, verdict and keyword (subject ID, address or charge order number), with page and page_size for paging (up to 100 per page). The single-record query includes handoff_url while the session is still with the person being verified. Refresh reads the result from the provider again (wallet screening cannot be refreshed, because screening again is charged again).
Retrying with the same idempotency_key and the same content returns the original record without charging again; reusing a key with different content is rejected (400). Starting an identity check again for a subject reference whose session is unfinished returns that session (reused is true) without charging either.
Result callbacks
Set an https callback URL under Integration settings in the console and enable it. When a check record's status or result changes asynchronously (identity verification finished, manual review changed the result, transaction result updated, failed and refunded), the platform POSTs an event. The start call itself is not pushed, because its synchronous response already has the result.
X-Tovanix-Event is the event type (check.updated, or ping for tests), X-Tovanix-Delivery is the event_id, X-Tovanix-Timestamp is Unix seconds, and X-Tovanix-Signature is sha256= followed by the hex HMAC-SHA256(signing secret, timestamp + "." + raw request body).
A 2xx response counts as delivered. Anything else, including timeouts, is retried with backoff of 1 minute, 5 minutes, 15 minutes, 1 hour, 3 hours, 6 hours and 12 hours, up to 8 attempts in total, then it stops. Retries send the same event_id and the same body, so de-duplicate by event_id. Events can arrive out of order: keep the one with the newer data.updated_at, or call the query endpoint for the latest state. After you disable the callback, undelivered events are not sent.
Related pages: Verification & Transaction Risk · Identity verification: individuals and businesses · Transaction risk: monitoring and wallet screening · API Documentation
Loading…