API documentation
Authentication, pricing, networks, address checks (Pro mode), check completion webhooks, KYT monitoring, error codes, and Swagger
Authentication
After creating an account, issue an API key from the API Keys section and include it in the header of every request.
- Sign up or sign in to the user panel.
- Open API Keys and create a new key.
- Send the key value in the X-API-Key header.
Authentication header
X-API-Key: ak_live_...Base URL: https://api.aryacrypto.net
Pricing
The amounts below are loaded from the pricing service and update automatically when tariffs change.
| Service | Cost |
|---|---|
| Per address or transaction check | … |
| Per automatic KYT monitor run | … |
| Per personal KYC verification request | … |
| Per business KYB verification request | … |
For programmatic access, call GET /v1/pricing.
Balance
Returns the account token balance. Requires the X-API-Key header and does not debit credits.
https://api.aryacrypto.net/v1/account/balanceAlias path: GET /v1/balance
curl -s "https://api.aryacrypto.net/v1/account/balance" \
-H "X-API-Key: ak_live_..."Response fields
| Name | Description |
|---|---|
| result | Indicates whether the request completed successfully |
| balance | Remaining token balance |
| message | Descriptive message in the selected locale |
Response language
Set message and report language with the locale parameter in the query string or request body. Ten languages are supported.
Allowed values
| locale | Description |
|---|---|
| en | English |
| ar | Arabic |
| ru | Russian |
| fa | Persian |
| tr | Turkish |
| es | Spanish |
| de | German |
| zh | Chinese |
| ko | Korean |
| ka | Georgian |
Supported networks
Active networks available through the API. For address checks, send the network symbol in the asset parameter.
/v1/chainsLive list from GET /v1/chainsLoading…
Address and transaction check
The supported report mode is Pro. Submit a check with POST /v1/check; the response is typically pending and includes a uid. Retrieve the completed result with POST /v1/checks/status, or register an address-check webhook to be notified automatically when analysis finishes.
Cost per check request: 1 token(s).
Procedure
- Send POST /v1/check with the X-API-Key header and the asset and hash parameters.
- Store data.uid from the response. The initial status is typically pending.
- Poll POST /v1/checks/status with the uid until data.status is success — or register a webhook via the API Keys page / API so we POST the same result when done (events check.completed / check.failed, signed with X-AML-Signature).
Submit request
https://api.aryacrypto.net/v1/checkContent-Type: application/json · multipart/form-data · application/x-www-form-urlencoded
Parameters
| Name | Required | Description |
|---|---|---|
| asset | Yes | Network symbol (for example BTC, ETH, TRX) |
| hash | Yes | Wallet address or transaction identifier |
| type | No | address or tx; if omitted, the type is detected automatically |
| locale | No | Response language — one of: fa, en, ar, ru, tr, es, de, zh, ko, ka |
chain may be used instead of asset, and input instead of hash. The supported flow value is pro. Body may be JSON or form-data / x-www-form-urlencoded (Postman form-data is supported).
Request example
curl -s -X POST "https://api.aryacrypto.net/v1/check" \
-H "Content-Type: application/json" \
-H "X-API-Key: ak_live_..." \
-d '{"asset":"BTC","hash":"bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh","locale":"fa"}'data.status values
| data.status | Description |
|---|---|
| pending | Processing in progress; resubmit the status request or wait for the webhook. |
| success | Result is ready. |
| failed | Deep analysis failed permanently (status response or check.failed webhook event). |
Submit response fields
| Name | Description |
|---|---|
| result | Indicates whether the request completed successfully |
| balance | Remaining token balance |
| flow | Report mode (pro) |
| data.uid | Unique check identifier for status retrieval |
| data.status | Processing status: pending, success, or failed |
| data.address | Checked address |
| data.asset | Network symbol |
| data.network | Network under review |
| data.hasBlackListFlag | Indicates a blacklist association |
| data.counterparty | Entity or cluster identity when identified |
| data.timestamp | Request registration time |
Retrieve result
Repeat the status request while data.status is pending. After success, Pro report fields are returned in data. Status polling does not consume additional credits. If you have an enabled webhook, you can wait for the delivery POST instead of continuous polling.
https://api.aryacrypto.net/v1/checks/statusEquivalent GET method: GET /v1/checks/status?uid=...
Parameters
| Name | Required | Description |
|---|---|---|
| uid | Yes | Check identifier (data.uid from the submit response) |
| locale | No | Response language — one of: fa, en, ar, ru, tr, es, de, zh, ko, ka |
Status request example
curl -s -X POST "https://api.aryacrypto.net/v1/checks/status" \
-H "Content-Type: application/json" \
-H "X-API-Key: ak_live_..." \
-d '{"uid":"00481233","locale":"fa"}'Pro report fields (after success)
After processing completes, the following fields are returned in data.
| Name | Description |
|---|---|
| data.riskscore | Risk score in the range 0 to 1 |
| data.signals | Relative distribution of risk sources |
| data.counterparty | Counterparty details, including connections and inbound/outbound signals |
| data.counterparty.connections[] | Entities that interacted with the address |
| data.connections[] | Connections list at the data level |
| data.received_fiat_amount | Total received amount in USD cents |
| data.sent_fiat_amount | Total sent amount in USD cents |
| data.extras | Supplementary Pro-mode information |
| data.pdfReport | URL of the PDF report |
When available, the PDF URL is provided in data.pdfReport.
Address-check webhooks (AML)
When Pro analysis finishes (success or permanent failure), we POST JSON to your registered URL so you do not need to keep polling /v1/checks/status. This webhook is for address checks, not KYC.
You can manage the webhook from the API Keys page in the user panel.
What we POST to you
After a successful finish (including pdfReport when ready) or a permanent analysis failure, we POST to your enabled URL with Content-Type: application/json. The body matches the status envelope, plus an event field.
| event | Description |
|---|---|
| check.completed | Pro analysis completed successfully; data.status is success and report fields are in data. |
| check.failed | Analysis failed permanently; data.status is failed and data.error may explain the failure. |
Delivery payload fields
Fields we send to your endpoint:
| Name | Description |
|---|---|
| event | Notification type: check.completed or check.failed |
| result | Indicates whether the request completed successfully |
| balance | Remaining token balance |
| flow | Report mode (pro) |
| data.uid | Unique check identifier for status retrieval |
| data.status | Final status in data: success or failed |
| data.address | Checked address |
| data.asset | Network symbol |
| data.network | Network under review |
| data.hasBlackListFlag | Indicates a blacklist association |
| data.riskscore | Risk score in the range 0 to 1 |
| data.signals | Relative distribution of risk sources |
| data.counterparty | Counterparty details, including connections and inbound/outbound signals |
| data.pdfReport | URL of the PDF report |
| data.error | Error detail on failure (optional) |
| data.timestamp | Request registration time |
{
"event": "check.completed",
"result": true,
"balance": 42.5,
"flow": "pro",
"data": {
"uid": "00481233",
"status": "success",
"asset": "BTC",
"network": "BTC",
"address": "bc1q...",
"hasBlackListFlag": false,
"riskscore": 0.12,
"pdfReport": "/v1/reports/pdf/...",
"timestamp": "2026-07-25 12:00:00",
"flow": "pro"
}
}Signature verification
If you set a secret for the webhook in the panel, the X-AML-Signature header is the hex-encoded HMAC-SHA256 of the raw request body using that secret. Verify the signature on your server before processing.
# X-AML-Signature = hex(HMAC-SHA256(request_body, secret))
# Verify with the raw POST body bytes and your webhook secret from the panel.Automatic monitoring (KYT)
Periodic address monitoring. After registration, use the monitor identifier to retrieve details and snapshots.
Approximate cost per automatic run: 0.2 token(s).
Single registration
https://api.aryacrypto.net/v1/kyt/monitors| Name | Required | Description |
|---|---|---|
| chain | Yes | Network id from the networks table |
| address | Yes | Monitored address |
| label | No | Optional label |
| interval_hours | No | Interval between analyses in hours (minimum 2) |
curl -s -X POST "https://api.aryacrypto.net/v1/kyt/monitors" \
-H "Content-Type: application/json" \
-H "X-API-Key: ak_live_..." \
-d '{"chain":"tron","address":"TXYZ...","label":"Hot wallet","interval_hours":6}'Bulk registration
Submit multiple addresses in the items array. The response includes created, failed, and skipped counts.
/v1/kyt/monitors/bulkList, detail, and delete
Use the monitor identifier to list, inspect, retrieve snapshots, or delete monitors.
/v1/kyt/monitors/v1/kyt/monitors/:id/v1/kyt/monitors/:id/snapshots/v1/kyt/monitors/:idIdentity verification (KYC)
B2B identity verification: create a business in the panel with a callback URL to get an 8-digit business_code, create a request via API, send verification_url to the end user, and receive the result on your callback.
Each request costs approximately 5 token(s) under the active tariff (charged on a final state: completed, cancelled, or expired).
Flow
- In the panel KYC section, create a business (name + callback_url) and store the business_code.
- POST /v1/kyc-service/requests with X-API-Key and give the returned verification_url to the end user.
- The user has 30 minutes to submit documents in the verification web app.
- When finished (accept, reject, review, cancel, or expiry), we POST JSON to your business callback_url.
Create request and link
https://api.aryacrypto.net/v1/kyc-service/requestsContent-Type: application/json
Parameters
| Name | Required | Description |
|---|---|---|
| business_code | Yes | 8-digit business code from the panel |
| external_ref | No | Your internal reference (e.g. user id in your system) |
| doc_type | No | Document type: id_card, passport, or driver_license (optional) |
| return_url | No | End-user return URL after finishing (separate from the webhook callback) |
curl -s -X POST "https://api.aryacrypto.net/v1/kyc-service/requests" \
-H "Content-Type: application/json" \
-H "X-API-Key: ak_live_..." \
-d '{"business_code":"90593008","external_ref":"user-42","doc_type":"id_card","return_url":"https://example.com/kyc/done"}'Create response
The response includes the request object and verification_url. Credits are not deducted at create time; they are charged on a final state.
{
"request": {
"id": "a1b2c3d4-....",
"status": "pending",
"external_ref": "user-42",
"doc_type": "id_card",
"expires_at": "2026-07-27T13:00:00Z",
"cost_credits": 10
},
"verification_url": "https://kyc.aryacrypto.net/v/a1b2c3d4-...."
}Status and cancel
Fetch request status with GET, or cancel with POST cancel from the business side (cancel is also billable).
https://api.aryacrypto.net/v1/kyc-service/requests/{id}https://api.aryacrypto.net/v1/kyc-service/requests/{id}/cancelResult webhook (callback)
When the request reaches a final state, we POST to the business callback_url with Content-Type: application/json.
| Name | Description |
|---|---|
| event | Always kyc.completed |
| request_id | Request id |
| external_ref | The external_ref you sent |
| status | Final status: completed, cancelled, or expired |
| decision | accept, review, reject, cancelled, or expired |
| match_score | Match score 0–100 when available |
| risk_score | Watchlist screening result including risk_score and risk_level |
| risk_level | clear / low / medium / high / unknown |
| screening | Watchlist screening result including risk_score and risk_level |
| completed_at | Completion time when available |
{
"event": "kyc.completed",
"request_id": "a1b2c3d4-....",
"external_ref": "user-42",
"status": "completed",
"decision": "reject",
"match_score": 62,
"risk_score": 95,
"risk_level": "high",
"screening": {
"risk_score": 95,
"risk_level": "high",
"lists_available": true,
"hit_count": 1,
"hits": [
{
"source": "OFAC",
"category": "sanction",
"matched_name": "VLADIMIR PETROV",
"score": 95
}
]
},
"completed_at": "2026-07-27T12:45:00Z"
}If the business has a callback secret, X-AML-Signature is the hex-encoded HMAC-SHA256 of the raw body.
Business verification (KYB)
KYB verification service: create a business with a callback in the panel, create a request via API, submit company/UBO data directly, and receive the result via webhook.
Each request is charged on a final status (approved, rejected, or cancelled) at about 25 tokens (kyb_verify tariff).
How it works
- In the panel under «Business verification KYB», create a business (name + callback_url) and store the business_code.
- With X-API-Key, POST /v1/kyb-service/requests and share form_url with the company representative (or include company_name and ubos in the same request).
- The public form is valid for up to 7 days; after submit, international screening runs and status becomes review.
- Approve or reject with POST review; then event=kyb.completed is sent to your callback and tokens are deducted.
Create request / form link
https://api.aryacrypto.net/v1/kyb-service/requestsContent-Type: application/json
| Name | Required | Description |
|---|---|---|
| business_code | Yes | Eight-digit KYB business id from the panel |
| external_ref | No | Your internal reference |
| return_url | No | Return URL after form submit |
| company_name | No | If sent with ubos, screening runs immediately |
| ubos | No | Array of beneficial owners (full_name, ownership_pct, role, …) |
curl -s -X POST "https://api.aryacrypto.net/v1/kyb-service/requests" \
-H "Content-Type: application/json" \
-H "X-API-Key: ak_live_..." \
-d '{"business_code":"90593008","external_ref":"corp-42","return_url":"https://example.com/kyb/done"}'Create response
{
"request": { "id": "....", "status": "pending", "cost_credits": 25, "expires_at": "..." },
"form_url": "https://my.aryacrypto.net/kyb/form/...."
}Track, report, review, cancel
https://api.aryacrypto.net/v1/kyb-service/requests/{id}https://api.aryacrypto.net/v1/kyb-service/requests/{id}/reporthttps://api.aryacrypto.net/v1/kyb-service/requests/{id}/reviewhttps://api.aryacrypto.net/v1/kyb-service/requests/{id}/cancelKYB result webhook
On a final status we POST event=kyb.completed to your callback_url.
{
"event": "kyb.completed",
"request_id": "....",
"external_ref": "corp-42",
"status": "approved",
"decision": "clear",
"risk_score": 18,
"edd_required": false,
"company_name": "Acme Ltd",
"lei": "....",
"completed_at": "2026-07-29T12:00:00Z"
}When callback_secret is set, X-AML-Signature is the hex HMAC-SHA256 of the raw body.
Error codes
On failure, the response is typically JSON containing an error field.
| Code | Meaning | Recommended action |
|---|---|---|
| 400 | Invalid request | Review parameters and input format |
| 401 | Authentication failed | Verify the X-API-Key header value |
| 402 | Insufficient credits | Increase the account balance |
| 403 | Access denied | The verification link expired or is no longer in progress |
| 404 | Not found | Verify the request or resource identifier |
| 429 | Rate limit exceeded | Retry after the period indicated by Retry-After |
| 500 | Internal service error | Contact support if the issue persists |
Swagger — live explorer
Open the Swagger UI on a separate page to register your API key and call endpoints live.
Open Swagger UI/zh/docs/swagger