# Autenticación

La API Auvo usa **Bearer JWT** de 30 minutos emitido por `POST /login`.

## Flujo básico

1. El cliente llama a `POST /login` con `apiKey` + `apiToken`.
2. La API responde con `result.accessToken` y `result.expiration` (ISO-8601).
3. El cliente envía `Authorization: Bearer <accessToken>` en cada solicitud.
4. Antes de `expiration`, repite `POST /login` para renovar.


## Ejemplo


```bash
curl -X POST https://api.auvo.com.br/v2/login \
  -H 'Content-Type: application/json' \
  -d '{"apiKey":"...","apiToken":"..."}'
```

## Buenas prácticas

- **Guarda credenciales en un gestor de secretos** (AWS Secrets Manager, Doppler,
1Password). Nunca en el código.
- **Un token por aplicación**: evita compartir el mismo `accessToken` entre
procesos distintos; cada worker debe renovar el suyo.
- **Margen de seguridad**: renueva el token 2 minutos antes para cubrir desfase de reloj.
- **Rotación**: ejecuta `POST /login` ante 401 y vuelve a intentar la llamada
original solo una vez para evitar bucles.
- **Evita `GET /login`** en producción — las credenciales aparecen en logs de URL.


## Errores comunes

| Código | Causa | Acción |
|  --- | --- | --- |
| 400 | `apiKey` o `apiToken` vacíos | Revisa el body/query. |
| 401 | Token expirado | Renueva con `POST /login`. |
| 403 | Límite de tasa excedido | Espera 60 s o aplica backoff. |
| 404 | Credenciales incorrectas | Verifica en **Menú > Integración**. |