KyroKyro Docs
ReferenceAPI Reference

Mint an immutable, shareable receipt of a decision

POST
/api/v1/decision-receipts

Runs the live decision read for one wallet (or username) and use case, and stores the resulting verdict as an immutable receipt. Every stored field comes from the decision handler at creation time; nothing in a receipt is client-supplied except which wallet and use case to check, so receipts cannot disagree with what the decision endpoint said. A failed decision never produces a receipt.

Receipts dedupe per UTC day: minting the identical decision state twice on the same day returns the existing receipt with deduped: true (HTTP 200) instead of creating a new one (HTTP 201). The receipt payload is the decision data without the volatile coverage block, plus id, createdAt and a canonical payloadHash.

Costs: the standard guard unit plus one inner decision read and a separate creation budget of 5 receipts per minute.

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

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Provide exactly one of wallet or username, plus an optional use case.

Provide exactly one of wallet or username, plus an optional use case.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/api/v1/decision-receipts" \  -H "Content-Type: application/json" \  -d '{    "wallet": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",    "useCase": "payment"  }'
{  "ok": true,  "version": "v1",  "data": {    "receipt": {      "id": "string",      "createdAt": "2019-08-24T14:15:22Z",      "payloadHash": "string",      "wallet": "string",      "username": "string",      "useCase": "payment",      "decision": "allow",      "riskLevel": "string",      "recommendedLimit": {        "amountUsdc": 0,        "currency": "string",        "basis": "string"      },      "reasons": [        {          "code": "string",          "message": "string"        }      ],      "warnings": [        {          "code": "string",          "message": "string"        }      ],      "score": 0,      "evidence": {        "used": [          "string"        ],        "missing": [          "string"        ]      },      "freshness": {        "cacheStatus": "string",        "lastIndexedAt": "2019-08-24T14:15:22Z",        "refreshInProgress": true,        "refreshRecommended": true      },      "scoreModelVersion": "string",      "decisionModelVersion": "string"    },    "url": "string",    "deduped": true  }}