---
title: "Register ONCE and get a Bearer token. Use YOUR real email (your account login + where recovery/notifications go) — a real inbox you control, not example.com. The token is reusable for every request until `token_expires_at` (1 year by default; optional `token_ttl_days` 1-1825; renew via POST /auth/token/refresh) — NOT single-use: save it to a file and send `Authorization: Bearer <token>` on each call. Calling register again creates a NEW, empty account; an email that already exists returns 422 and no token."
method: POST
path: "/auth/register"
---

# Register ONCE and get a Bearer token. Use YOUR real email (your account login + where recovery/notifications go) — a real inbox you control, not example.com. The token is reusable for every request until \`token_expires_at\` (1 year by default; optional \`token_ttl_days\` 1-1825; renew via POST /auth/token/refresh) — NOT single-use: save it to a file and send \`Authorization: Bearer <token>\` on each call. Calling register again creates a NEW, empty account; an email that already exists returns 422 and no token.

`POST /auth/register`

## Request

- Base URL: `https://api.eqvps.com/api/v1/eqvps`
- URL: `https://api.eqvps.com/api/v1/eqvps/auth/register`
- Auth: none declared

## Request body

- object
  - `email` string, email, required
  - `token_ttl_days` integer: Token lifetime in days (default 365). The response returns token_expires_at.

## Response `201`

{ token, token_type: "Bearer", token_expires_at, token_length, next_steps, user } — the token is one line of ~1,100 characters; save it to a file straight from the response (never retype it) and check its length against token_length.

## Other responses

- `422`: Invalid/reserved email, or the email is already registered (no token is issued)

---

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