---
title: "Login"
method: POST
path: "/auth/login"
tags: ["auth"]
---

# Login

`POST /auth/login`

## Request

- Base URL: `https://api.dialogbrain.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.dialogbrain.com/auth/login`
- Auth: none declared

Login with email and password.

Returns JWT access token, refresh token, and user information.

- Access token expires in 15 minutes
- Refresh token expires in 14 days
- Implements token rotation for security
- Rate limited: 10 requests per minute

Check order: user exists → is_active → email_verified → password
This allows unverified users to see verification message without correct password.

## Request body

- LoginRequest
  - `email` string, email, required
  - `password` string, required

## Response `200`

Successful Response

- union
  - LoginResponse
    - `accessToken` string, required
    - `refreshToken` string, required
    - `token_type` string
    - `expires_in` integer, required
    - `user` object, required
  - TwoFARequiredResponse
    - `status` string
    - `user_id` integer, required
    - `email` string, required
    - `message` string
    - `expires_in` integer
    - `method` string

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/dialogbrain/apis/dialogbrain-v2-api-gateway.md) · [All operations](https://skmtc.dev/dialogbrain/apis/dialogbrain-v2-api-gateway/llms.txt) · [OpenAPI document](https://skmtc.dev/dialogbrain/apis/dialogbrain-v2-api-gateway/revisions/77bef09a9209?raw)
