KyroKyro Docs
ReferenceAPI Reference

Re-index a wallet (keyed)

POST
/api/v1/interaction-graph/{wallet}/refresh

Ask Kyro to (re)index a wallet so its Observed Interaction Graph does not stay not_indexed or stale forever. Runs the same persisted indexing pipeline as intake; observed counterparties remain untrusted observations and never confer endorsement.

Requires an API key. Anonymous callers receive 401 NOT_ALLOWED; they can still index a never-seen wallet once via POST /api/v1/intake/{wallet}.

State machine:

  • an in-flight run answers 202 with status: indexing (free);
  • a snapshot committed within the last 60 minutes answers 200 with status: fresh, lastIndexedAt, nextRefreshAt and retryAfterSeconds (free);
  • otherwise the run starts and answers 202 with status: started and mode: reindex for a wallet with a committed snapshot, first_index for one without.

Cost: starting a run consumes 5 units. A first_index start draws from the caller's daily intake cap; a reindex start draws from the separate daily refresh cap (developer 50, plus 150, pro 500, partner 1000 by default). Free answers (fresh, indexing) carry no rate headers and consume nothing. A wallet whose last attempt failed within the past 10 minutes answers 429 after units were consumed, same as intake. Concurrent requests collapse into a single run.

If the refresh ledger is not provisioned on the deployment, reindex requests answer 503 SCHEMA_MISSING and nothing is charged or started (the endpoint fails closed; there is no in-memory fallback for a paid budget).

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

application/json

curl -X POST "https://example.com/api/v1/interaction-graph/0x1234567890abcdef1234567890abcdef12345678/refresh"
{  "ok": true,  "version": "v1",  "data": {    "wallet": "0x1234567890abcdef1234567890abcdef12345678",    "status": "fresh",    "lastIndexedAt": "2026-08-25T14:32:18Z",    "nextRefreshAt": "2026-08-25T15:32:18Z",    "retryAfterSeconds": 2130  }}