Intake unknown wallets
Start indexing a wallet Kyro has not seen yet. No signature from the wallet owner is needed.
Use POST /api/v1/intake/:wallet when a wallet has no committed Kyro score yet. It starts on-demand indexing in the background. No signature or action from the wallet owner is needed.
Responses are idempotent by state: 200 already_indexed when a committed snapshot exists, 202 started or indexing for new or in-flight work. One attempt per wallet per 10 minutes: during the cooldown you get 429 with Retry-After. An intake costs 5 units.
Poll, then re-check
Indexing usually completes in under a minute. Poll GET /api/v1/score/:wallet until cacheStatus is cached (the Kyro UI polls every 5 seconds for up to 2 minutes), then re-run the decision.
await fetch(base + "/api/v1/intake/" + wallet, { method: "POST" }); // 202, costs 5 units
for (let i = 0; i < 24; i++) { // ~2 minutes at 5s intervals
await new Promise((r) => setTimeout(r, 5000));
const score = await fetch(base + "/api/v1/score/" + wallet).then((r) => r.json());
if (score.ok && score.data.cacheStatus === "cached") break;
}
const check = await fetch(base + "/api/v1/decision/" + wallet).then((r) => r.json());Wallets indexed through intake stay out of the public directory and username lookups until the owner claims them. Intake creates score evidence, not a public profile.