API reference
Everything you need to screen wallets, monitor transactions and receive risk alerts. Base URL: api.checkyourcrypto.com/v1
Authentication
Authenticate every request with a secret API key in the Authorization header. Keys are created in the dashboard and can be scoped per environment; test keys are prefixed sk_test_, live keys sk_live_.
Authorization: Bearer sk_live_••••••••••••••••Screen a wallet
Score any address in a single call. The response includes a 0 to 100 risk score, a level, the flags that drove the score and a source of funds exposure breakdown. Typical latency is under 200ms.
curl -X POST https://api.checkyourcrypto.com/v1/screen \
-H "Authorization: Bearer sk_live_••••••••" \
-H "Content-Type: application/json" \
-d '{
"address": "0x7f367c...debe1b",
"chain": "ethereum"
}'{
"address": "0x7f367c…debe1b",
"chain": "ethereum",
"score": 82,
"level": "high",
"flags": [
{
"type": "mixer_exposure",
"severity": "high",
"hops": 2
}
],
"exposure": {
"mixer": 0.41,
"high_risk_exchange": 0.23,
"regulated": 0.36
},
"recommended_action": "hold_for_review",
"latency_ms": 142
}Supported chains: bitcoin, ethereum, tron, solana and all EVM networks. Levels: low · medium · high · severe.
Monitoring & webhooks
Subscribe a wallet once and we screen it again continuously. When its risk level changes, we POST a signed event to your webhook URL. Verify the cyc-signature header with your webhook secret.
{
"address": "0x7f367c...debe1b",
"chain": "ethereum",
"webhook_url": "https://your.app/hooks/cyc",
"threshold": "medium"
}{
"type": "risk.level_changed",
"monitor_id": "mon_9f2c81",
"address": "0x7f367c…debe1b",
"previous_level": "medium",
"level": "high",
"occurred_at": "2026-07-02T07:40:11Z"
}Errors
Errors use conventional HTTP status codes with a stable machine readable code in the body.
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_address | Address failed checksum or format validation |
| 401 | invalid_api_key | Missing or unknown API key |
| 402 | quota_exceeded | Plan limit reached for this billing period |
| 404 | unsupported_chain | Chain not in your plan's coverage |
| 429 | rate_limited | Too many requests; retry with backoff |
Rate limits
Screening calls are limited to 20 requests/second on Starter and 100 requests/second on Growth; Enterprise limits are custom. Every response includes x-ratelimit-remaining so you can pace clients. Need more headroom? Talk to us.
Demonstration reference. Endpoints are illustrative and return simulated data.