---
title: "Create an account"
method: POST
path: "/auth/register"
tags: ["Auth"]
---

# Create an account

`POST /auth/register`

## Request

- Base URL: `https://tasg.app/api/v1`
- URL: `https://tasg.app/api/v1/auth/register`
- Auth: none required

Only when public sign-up is enabled on the instance. Sends a 24-hour verification email; the response is identical whether or not the address was already registered. Disposable email domains are refused. No session is issued: verify first, then log in. When the instance has reached its signup cap, no account is created and the response is `{ "at_capacity": true }`; offer the waitlist (`POST /waitlist`) instead.

## Request body

- object
  - `name` string, required
  - `email` string, email, required
  - `password` string, required: At least 8 chars with an uppercase letter, a lowercase letter, a number and one of `!@#$%^&*`.
  - `src` string: Optional signup-source tag from a `?src=` on the register link (e.g. `registry`, `hn`, `email`). Normalized to an allowlist and stored on the account; unrecognised values become `other`, absent becomes `direct`.

## Response `200`

Accepted, or `{ at_capacity: true }` when the signup cap is reached.

- object
  - `message` string
  - `at_capacity` boolean

## Other responses

- `400`: Validation failed: the body or query did not match the schema, or a business rule was violated. `error` says which.
- `403`: Public registration is disabled.
- `429`: Too many sign-ups from this IP. Try again later.

---

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