---
title: "Reserve Handle"
method: POST
path: "/v1/handles/reserve"
tags: ["public"]
---

# Reserve Handle

`POST /v1/handles/reserve`

## Request

- Base URL: `https://www.tandem-cc.com` (the document declares no server; this is the origin it was published from)
- URL: `https://www.tandem-cc.com/v1/handles/reserve`
- Auth: none declared

One-shot: turns a pending signup into a live Tandem user.

Wraps three steps in a single transaction so an error anywhere rolls
everything back:

    1. UPDATE the reservation row (used_at, handle_issued). A
       concurrent request that beat us loses the race — 0 rows
       affected = 410 Gone.
    2. INSERT into handles. Unique violation = 409 Conflict (handle
       was just claimed in a different /reserve call).
    3. INSERT into tokens bound to the new handle.

Returns { handle, token, email } with the raw bearer token. Token is
never shown again.

## Request body

- object

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/tandem-cc/apis/tandem-api.md) · [All operations](https://skmtc.dev/tandem-cc/apis/tandem-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tandem-cc/apis/tandem-api/revisions/3b804877b47c?raw)
