---
title: "Register a new account"
method: POST
path: "/register"
tags: ["Authentication"]
---

# Register a new account

`POST /register`

Creates a new user account and returns an API key. In hosted mode, a verification code (from /register/send-code) is required. In selfhosted mode, registration is only allowed if no users exist yet. Rate limited to 3 registrations per IP per hour.

## Request body

- object
  - `name` string, required — Full name of the user
  - `email` string, email, required — Email address for the account
  - `password` string, required — Account password (minimum 8 characters)
  - `verification_code` string — 6-digit verification code from /register/send-code (required in hosted mode only)
  - `timezone` string — IANA timezone identifier
  - `language_code` 'en' | 'es' | 'de' | 'fr' | 'it' | 'pt' | 'he' | 'nl' | 'ar' | 'et' | 'ru' — Preferred language code

## Response `201`

Account created successfully

- object
  - `data` object
    - `api_key` string — API key for authenticating future requests. Store this securely.
    - `api_key_expires_at` string, date-time — ISO 8601 timestamp when the API key expires
    - `user` object
      - `id` string — Encoded user ID
      - `name` string — User's full name
      - `email` string, email — User's email address

## Other responses

- `403` — Registration is closed (selfhosted mode with existing users)
- `422` — Validation error
- `429` — Too many registration attempts

---

[API](https://skmtc.dev/eventschedule/apis/event-schedule-api.md) · [All operations](https://skmtc.dev/eventschedule/apis/event-schedule-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/eventschedule/event-schedule-api/revisions/fc24d7d227c4/schema)
