---
title: "Registration Status"
method: POST
path: "/signup/registrations/status"
tags: ["signup"]
---

# Registration Status

`POST /signup/registrations/status`

## Request

- Base URL: `https://app.zeno-works.ch` (the document declares no server; this is the origin it was published from)
- URL: `https://app.zeno-works.ch/signup/registrations/status`
- Auth: none declared

What the waiting tab sees. **`pending` is HTTP 200 and never carries a key.**

This is the whole of what makes a mailed link usable in a browser flow: the tab that
started the registration learns, by itself, that the person went to their inbox and
finished. Phase 4 chose a code over a link precisely because the click "opens a page
that knows nothing about the pending authorization" — the page still does not, and no
longer needs to, because the tab it left behind is watching.

⚠️ It does **not** transport a session. If the link was opened on another device, the
tab learns the account exists and must say so and stop; it cannot sign anybody in. That
residual is real and is the honest limit of this design.

## Request body

- RegistrationStatusIn
  - `claim_token` string, required

## Response `200`

Successful Response

- RegistrationStatusOut: ``pending`` | ``verified`` | ``denied`` | ``expired``. **Never a key.** ``pending`` is an HTTP **200**, for the same reason the agent claim route's is: it is the answer the caller retries on, and a 4xx would be read as "stop".
  - `status` string, required
  - `poll_interval_seconds` integer, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/zeno-works/apis/zeno-api.md) · [All operations](https://skmtc.dev/zeno-works/apis/zeno-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zeno-works/apis/zeno-api/revisions/1eb93dde146c?raw)
