Skip to main content
POST
/
auth
/
register
Register User
curl --request POST \
  --url https://api.example.com/auth/register \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "email": "<string>",
  "password": "<string>"
}
'
{
  "message": "<string>",
  "user": {
    "user.id": 123,
    "user.name": "<string>",
    "user.email": "<string>",
    "user.role": "<string>",
    "user.createdAt": "<string>"
  }
}

Overview

Creates a new user account with the default customer role. This endpoint is rate-limited to 10 requests per 15-minute window.

Authentication

No authentication required. This is a public endpoint.

Request Body

name
string
required
The user’s full name
email
string
required
The user’s email address. Must be a valid email format and unique in the system.
password
string
required
The user’s password. Must be at least 6 characters long.

Request Example

{
  "name": "John Doe",
  "email": "[email protected]",
  "password": "securePassword123"
}

Response

message
string
Success message confirming user registration
user
object
The created user object without sensitive data
user.id
integer
Unique user identifier
user.name
string
User’s full name
user.email
string
User’s email address
user.role
string
User’s role (defaults to “customer”)
user.createdAt
string
ISO 8601 timestamp of account creation

Response Example

{
  "message": "Usuario registrado exitosamente",
  "user": {
    "id": 1,
    "name": "John Doe",
    "email": "[email protected]",
    "role": "customer",
    "createdAt": "2026-03-06T10:30:00.000Z"
  }
}

Error Responses

409 Conflict

Returned when the email address is already registered.
{
  "error": "El email ya está en uso"
}

400 Bad Request

Returned when validation fails (invalid email format, password too short, missing fields).
{
  "error": "Validation failed",
  "details": [
    "La contraseña debe tener al menos 6 caracteres"
  ]
}

429 Too Many Requests

Returned when rate limit is exceeded (10 requests per 15 minutes).
{
  "error": "Demasiados intentos. Intenta de nuevo en 15 minutos."
}

Notes

  • Passwords are hashed using bcrypt before storage
  • The password hash is never returned in the response
  • New users are automatically assigned the customer role
  • Email addresses are case-sensitive and must be unique

Build docs developers (and LLMs) love