---
title: "Admit Account"
method: POST
path: "/api/v1/internal/self-serve/admit"
tags: ["internal", "self-serve"]
---

# Admit Account

`POST /api/v1/internal/self-serve/admit`

Admit an address, or attach it to the setup it already has.

A staff provisioning entry point, not part of public signup. Re-entrant: an
account already ready or in flight comes back as it stands rather than
starting a second setup.

## Request body

- AdmitAccountRequest
  - `email` string, email, required

## Response `200`

Successful Response

- AdmitAccountResponse
  - `account_id` string, uuid, required
  - `state` 'pending' | 'waitlisted' | 'preparing' | 'ready' | 'failed', required — Where a self-serve account sits between signup and a usable workspace. Signup is unconditional, so nothing here refuses one: an account moves from ``PENDING`` into setup and settles either ``READY`` or ``FAILED``. ``WAITLISTED`` is retired and no code writes it. It stays declared only because production rows still hold the value and ``state`` coerces on load, so an enum that cannot express it would raise on every such read. Delete it in the contract deploy that narrows the CHECK constraint, once a count of rows holding the value reads zero. That count is the trigger because it measures the only thing keeping the member alive; a source grep cannot, since the retained member is legitimately named by ``TERMINAL_STATES`` here and by the status map that has to render a stored row. ``test_self_serve_unconditional_admission.py`` carries a strict xfail that turns the suite red once the member is removable and nobody removed it. ``SEAT_HOLDING_STATES`` and the partial index below go out in that same deploy for a different reason — the live index, not the stored rows — and neither retention depends on the other. Deleting this member does not free them, and dropping the index does not free this member.
  - `workflow_id` string, nullable, required

## Other responses

- `422` — Validation Error

## Changes

- **2026-08-21** `b455048a022d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/maia-analytics/apis/maia-api/changes/api/v1/internal/self-serve/admit/post.md)

---

[API](https://skmtc.dev/maia-analytics/apis/maia-api.md) · [All operations](https://skmtc.dev/maia-analytics/apis/maia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/maia-analytics/apis/maia-api/revisions/7720763f8bf1?raw)
