---
title: "Self-issue a free identified key (no human in the loop, no card)"
method: POST
path: "/api/keys"
---

# Self-issue a free identified key (no human in the loop, no card)

`POST /api/keys`

## Request

- Base URL: `https://api.signalbureau.ai`
- URL: `https://api.signalbureau.ai/api/keys`
- Auth: none declared

Body: `{label}` (required — name yourself; free text), plus optional `contact`, `purpose`, and `preferredRail` (one of card-via-principal | agent-token | stablecoin | other — how you would rather pay, recorded as profiling ONLY: it gates nothing, changes no price, and an unrecognized value is filed as 'other' with the text dropped). The raw key (`sb_live_<32 hex>`) is returned exactly ONCE in this response; only its SHA-256 is stored, no contact or IP retained. The key carries a free Answer Engine allowance of 25 asks for its lifetime (stated in the response with whether it resets — it does not — and the price after it) and is presented as `x-api-key` or `Authorization: Bearer`. The response also states the BALANCE terms: a key can be funded once with any amount from $5 to $500 and every Read past the allowance draws from it at the published Read rate — this meter funded in advance at list, never a discounted prepaid pack. Issuance is bounded per network address per day.

## Request body

- object
  - `label` string: Required. Name yourself (e.g. 'Acme research agent'). 120 chars.

## Response `200`

The key (shown once), its hint, allowance, and what is stored.

## Other responses

- `429`: Per-address daily issuance bound reached — the anonymous lane stays open meanwhile.

---

[API](https://skmtc.dev/sigb/apis/signal-bureau-api.md) · [All operations](https://skmtc.dev/sigb/apis/signal-bureau-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sigb/apis/signal-bureau-api/revisions/290c9c6ca0d0?raw)
