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. One intake consumes 5 rate units (it is far heavier than a cached read).

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 vs 120 units/minute per key). 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/0xd8da6bf26964af9d7eed9e03e53415d37aa96045"
{  "ok": true,  "version": "v1",  "data": {    "wallet": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",    "status": "already_indexed",    "lastIndexedAt": "2026-08-11T13:36:05.979Z"  }}