---
title: "Register a new free RRM Academy account"
method: POST
path: "/api/auth/signup"
tags: ["Mutations"]
---

# Register a new free RRM Academy account

`POST /api/auth/signup`

## Request

- Base URL: `https://rrmacademy.org`
- URL: `https://rrmacademy.org/api/auth/signup`
- Auth: none required

Creates a user account and sends an email-verification magic link. Free registration; no payment. Public endpoint (no bearer auth). Protected by IP rate limiting (5 attempts / 15 min) and a Cloudflare Turnstile bot check. For anti-enumeration the endpoint returns the same 201 success shape whether or not the email is already registered.

## Request body

- SignupRequest
  - `firstName` string, required
  - `lastName` string, required
  - `email` string, email, required: Validated for format, disposable domains, and MX records.
  - `password` string, required: 8-128 characters; common/breached passwords are rejected.
  - `next` string: Optional post-signup redirect path.
  - `turnstileToken` string: Cloudflare Turnstile token when the bot check is enforced.

## Response `201`

Account created (or, for an existing email, the anti-enumeration equivalent). Sets session and auth-hint cookies via Set-Cookie. An email-verification link is sent to the address.

- SignupSuccess
  - `ok` true, required
  - `emailVerificationRequired` true, required
  - `resendPath` string: Path to request a fresh verification email, e.g. /api/auth/resend-verification.

## Other responses

- `400`: Invalid JSON, invalid payload, failed field validation, weak or wrong-length password (8-128 chars required), or rejected email (disposable domain / bad MX). May include a `suggestion` for a likely email typo.
- `403`: Turnstile bot check failed or verification service misconfigured.
- `429`: Too many signup attempts from this IP.
- `500`: Unexpected server error.
- `503`: Email service temporarily unavailable, or client IP could not be determined.

---

[API](https://skmtc.dev/rrmacademy/apis/rrm-academy-agent-api.md) · [All operations](https://skmtc.dev/rrmacademy/apis/rrm-academy-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/rrmacademy/apis/rrm-academy-agent-api/revisions/0e3589a38b0c?raw)
