---
title: "Start account creation for a human"
method: POST
path: "/v1/auth/register"
tags: ["Authentication"]
---

# Start account creation for a human

`POST /v1/auth/register`

## Request

- Base URL: `https://aicontentdrop.com`
- URL: `https://aicontentdrop.com/v1/auth/register`
- Auth: none required

Sends the given address a sign-in link and returns 202. The account is not usable until the human clicks it — that click is what confirms the mailbox and releases the 10 free credits, and it is the one step an agent cannot perform. There is deliberately NO password parameter: an agent should never hold a user's password. An address that already has an account gets the same response, so this cannot be used to test who is registered. Rate limited to 5 per hour per IP.

## Request body

- object
  - `email` string, email, required: The HUMAN's email address. They must be able to open it.

## Response `202`

Sign-in link sent. Tell the human to click it.

- SignupInitiated: 202 from POST /v1/auth/register. The account is NOT usable yet — a human must click the emailed link. Relay `message_for_human` to your user rather than reporting success.
  - `status` 'human_action_required', required
  - `email` string, email, required
  - `message_for_human` string, required: Written to be repeated verbatim to the person you are acting for.
  - `next_step` object, required
    - `actor` 'human'
    - `action` string
    - `why` string
    - `fallback_url` string, uri
  - `free_credits` object, required
    - `amount` integer
    - `granted_when` string
    - `granted_now` boolean: Always false here. Credits are released on email confirmation.
    - `card_required` boolean
  - `available_without_an_account` object: Surfaces usable immediately, so a blocked journey continues instead of stopping.
  - `after_verification` object
  - `documentation` string, uri

## Other responses

- `400`: The request was malformed. `error.code` names the class of problem and `error.message` names the field.
- `429`: Rate limited. Read Retry-After (header) or error.retry_after_seconds (body) — they carry the same number — and wait that long. Retrying sooner extends the window rather than shortening it.
- `500`: Unexpected failure on our side. Retry once; nothing was charged.
- `502`: The sign-in email could not be sent. The human can sign up at /register.

---

[API](https://skmtc.dev/aicontentdrop/apis/ai-content-drop-api.md) · [All operations](https://skmtc.dev/aicontentdrop/apis/ai-content-drop-api/llms.txt) · [OpenAPI document](https://skmtc.dev/aicontentdrop/apis/ai-content-drop-api/revisions/75a13a8043ae?raw)
