KyroKyro Docs
ReferenceAPI Reference

Index a wallet Kyro has not seen yet

POST
/api/v1/intake/{wallet}

On-demand intake for anyone about to transact with an address Kyro has never indexed. Starts a multi-chain scan of public on-chain data; the wallet owner is not involved and no consent gate exists because all evidence is public. Intake never invents a verdict: poll GET /api/v1/score/{wallet} until the snapshot commits, then re-run the decision read.

Idempotent by state: an already-indexed wallet answers 200 with no work; an in-flight indexing job answers 202 (status: indexing); otherwise a new job starts (202, status: started). One indexing attempt per wallet per 10 minutes; a recent failed attempt answers 429 with Retry-After. Starting a scan consumes 8 rate units anonymously or 5 with any API key (it is far heavier than a cached read, and anonymous starts cost more because rotating IPs is the cheap way to multiply scans). Starts are also capped per UTC day: 25 per IP anonymously; 200, 1000 or 2000 per key on developer, pro and partner. Only scans that actually start count against the cap; reaching it answers 429 with Retry-After pointing at the next UTC midnight, before any units are spent. The already_indexed and indexing answers are free and carry no rate headers. A cooldown 429 arrives after its units were spent, so hammering a failing wallet stays expensive.

Authorization

bearerApiKey
AuthorizationBearer <token>

Optional Kyro API key: Authorization: Bearer kyro_live_.... Anonymous access (no header) works on every endpoint with a lower rate limit (20 units/minute per IP; keyed budgets follow the key's plan, starting at developer 120). Keys are validated only when the header is present; a malformed, unknown or revoked key is rejected with 401 INVALID_KEY.

In: header

Path Parameters

wallet*string

EVM wallet address. 0x + 40 hex characters (case-insensitive).

Match^0x[a-fA-F0-9]{40}$

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/api/v1/intake/0x1234567890abcdef1234567890abcdef12345678"
{  "ok": true,  "version": "v1",  "data": {    "wallet": "0x1234567890abcdef1234567890abcdef12345678",    "status": "already_indexed",    "lastIndexedAt": "2026-08-11T13:36:05.979Z"  }}