Developers

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_.

Header
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.

POST /v1/screen
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"
  }'
200 OK
{
  "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.

POST /v1/monitors
{
  "address": "0x7f367c...debe1b",
  "chain": "ethereum",
  "webhook_url": "https://your.app/hooks/cyc",
  "threshold": "medium"
}
Webhook event
{
  "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.

StatusCodeMeaning
400invalid_addressAddress failed checksum or format validation
401invalid_api_keyMissing or unknown API key
402quota_exceededPlan limit reached for this billing period
404unsupported_chainChain not in your plan's coverage
429rate_limitedToo 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.