---
title: "Signup"
method: POST
path: "/api/v1/auth/signup"
tags: ["Auth"]
---

# Signup

`POST /api/v1/auth/signup`

## Request

- Base URL: `https://api.africadb.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.africadb.com/api/v1/auth/signup`
- Auth: none declared

Register a new user account.

Failure modes are split into three distinct outcomes so a bug in a
post-create step never leaves the client thinking their account
doesn't exist when it does:

* **400** — validation / duplicate email. Nothing was written.
* **201 + warning** — account created but tokens or welcome email
  failed. The user *is* signed up and can sign in; the response
  body carries ``status: "created_signin_required"`` so the client
  can route to /login instead of showing a hard failure.
* **500** — the ``create_user`` call itself blew up. Nothing was
  written; safe to retry.

Prior versions only caught ``ValueError``, so a JWT-encoding or
``user_to_response`` glitch turned into a 500 while the row was
already committed. Symptom: "signup failed" toast in the UI, user
visible in admin, user unable to log in because the client didn't
persist the tokens.

## Request body

- SignupRequest
  - `email` string, required
  - `password` string, required
  - `name` string, required
  - `company` string
  - `recaptcha_token` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/africadb/apis/africa-data-bank-api.md) · [All operations](https://skmtc.dev/africadb/apis/africa-data-bank-api/llms.txt) · [OpenAPI document](https://skmtc.dev/africadb/apis/africa-data-bank-api/revisions/2a50da82945b?raw)
