---
title: "Iniciar sesión"
method: POST
path: "/auth/login"
tags: ["auth"]
---

# Iniciar sesión

`POST /auth/login`

## Request

- Base URL: `https://contadeo.com/api`
- URL: `https://contadeo.com/api/auth/login`
- Auth: none required

La empresa NO se elige aquí: se entra a la del último acceso del usuario (el slug es un identificador interno y no se acepta). Con varias empresas, cámbiate con POST /auth/cambiar-cuenta (tenantId de GET /auth/mis-cuentas).

## Request body

- object
  - `email` string, email, required
  - `password` string, required

## Response `201`

Par de tokens, o un desafío MFA si el usuario tiene el segundo factor activo

- union: Si la respuesta trae `mfaRequerido: true`, la contraseña era correcta pero falta el segundo factor: canjea `desafioToken` en POST /auth/mfa/verificar.
  - Tokens
    - `accessToken` string
    - `refreshToken` string
  - DesafioMfa: La contraseña se validó pero el usuario tiene MFA activo. `desafioToken` caduca en 5 minutos y solo sirve para POST /auth/mfa/verificar.
    - `mfaRequerido` true, required
    - `desafioToken` string, required

## Other responses

- `401`: Token/key ausente, inválido o expirado

---

[API](https://skmtc.dev/contadeo/apis/api-de-contadeo.md) · [All operations](https://skmtc.dev/contadeo/apis/api-de-contadeo/llms.txt) · [OpenAPI document](https://skmtc.dev/contadeo/apis/api-de-contadeo/revisions/461bbb9a74ce?raw)
