Skip to main content
Prompt text drifts — someone tweaks it in a chat window, ships it, and nobody can say which version produced last Tuesday’s outputs. The Prompt Registry gives every prompt a name, an append-only version history, and named labels (production, staging, …) that point at a specific version. Runs through the built-in playground are metered like any other gateway traffic, and production requests can carry the prompt’s identity all the way into your cost and evidence data via a request header.

Prompts, versions, and labels

  • A prompt is a named template ({{variable}} placeholders supported) — unique per tenant by name.
  • A version is immutable once created: editing a prompt appends version N+1, it never rewrites N. History is preserved on purpose — a version an old receipt cites stays exactly as it was.
  • A label is a named pointer (e.g. production, staging) at a specific version, upsertable at any time. Labels are how you promote a version without changing any caller’s config — the caller resolves the label, not a hardcoded version id.
Full endpoint references: GET /v1/prompts, POST /v1/prompts, GET /v1/prompts/{promptId}/versions, POST /v1/prompts/versions, POST /v1/prompts/labels. A caller that only knows the label — not a specific version id — can resolve it at read time:
Full endpoint reference: GET /v1/prompts/{id}/label/{label}.

The playground (runs are metered)

Console → Prompts includes a playground: pick a version, fill in {{variable}} values, and run it. The run goes through the real gateway (POST /v1/messages, currently the claude-3-5-haiku model), so it consumes real budget and is priced the same as any other request — it is not a free sandbox. Each run is logged with its input/output token split and cost, and per-prompt stats (total runs, tokens, cost, per-version breakdown) are available from the Analytics tab on each prompt.
Full endpoint reference: POST /v1/prompts/run.

Production tagging

Outside the playground, tag any real gateway request with the prompt (and optionally the exact version) that generated it by sending the request-attribution headers documented in Gateway → Connect:
X-Wardin-Prompt-Version-Id is optional — send just X-Wardin-Prompt-Id to attribute a request to the prompt without pinning a version. Either way, the ids are carried through to the usage event, so per-prompt spend and run counts reflect real production traffic, not just playground runs.
Production tagging is separate from the labels feature above: the header carries whatever prompt/version id you send — it does not resolve a label server-side. If your client only knows a label name, resolve it first with GET /v1/prompts/{id}/label/{label} and send the resolved versionId in the header.

Where to see it

Console → PLATFORM → Prompts lists every prompt with its labels, lets you create/append/label/run from the same screen, and shows per-prompt run history and analytics.