---
title: "Login with email + password, receive JWT access token."
method: POST
path: "/v1/auth/login"
tags: ["auth"]
---

# Login with email + password, receive JWT access token.

`POST /v1/auth/login`

## Request

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

Verify email + argon2id password, issue JWT HS256 access token.

Returns constant-time 401 for both wrong email and wrong password
to prevent user enumeration.

## Request body

- LoginRequest: Request body for POST /v1/auth/login.
  - `email` string, email, required: Registered email address.
  - `password` string, required: Plain-text password for verification.

## Response `200`

Successful Response

- LoginResponse: Response for successful POST /v1/auth/login (HTTP 200).
  - `access_token` string, required: JWT HS256 access token (TTL 12h).
  - `token_type` string: Always 'bearer'.
  - `user_id` string, uuid, required: Authenticated user UUID.
  - `tenant_id` string, uuid, required: Tenant UUID for this user.

## Other responses

- `401`: Invalid credentials
- `422`: Validation Error

---

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