# Autenticación

El API de Chapi soporta dos esquemas de autenticación, ambos definidos en el [OpenAPI](/openapi.yaml).

## 1. Token (recomendado para integraciones server-to-server)

Envía el token en el header `Authorization` con el prefijo literal `Token` (separado por un espacio):

```
Authorization: Token TU_TOKEN
```

### Ejemplo

```bash
curl -X POST https://app.chapi.cl/api/check \
  -H "Authorization: Token TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"rut": "22222222-2"}'
```

```python
import requests

r = requests.post(
    "https://app.chapi.cl/api/check",
    headers={"Authorization": "Token TU_TOKEN"},
    json={"rut": "22222222-2"},
    timeout=30,
)
r.raise_for_status()
print(r.json())
```

```javascript
const r = await fetch("https://app.chapi.cl/api/check", {
  method: "POST",
  headers: {
    "Authorization": "Token TU_TOKEN",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ rut: "22222222-2" }),
});
if (!r.ok) throw new Error(`HTTP ${r.status}`);
console.log(await r.json());
```

## 2. Cookie (uso desde el panel `app.chapi.cl`)

El panel autenticado en `https://app.chapi.cl` mantiene una cookie `sessionid`. Las llamadas hechas desde el panel (mismo origen) la usan automáticamente. Este esquema **no está pensado para integraciones server-to-server**; usa Token en su lugar.

## Esquema completo (extracto OpenAPI)

```yaml
securitySchemes:
  cookieAuth:
    type: apiKey
    in: cookie
    name: sessionid
  tokenAuth:
    type: apiKey
    in: header
    name: Authorization
    description: Token-based authentication with required prefix "Token"
```

Todos los endpoints declaran ambos esquemas como alternativos:

```yaml
security:
  - cookieAuth: []
  - tokenAuth: []
```

## Pendiente de aclaración

> **Cómo emitir / rotar tokens.** El procedimiento exacto para crear un token de API (probablemente desde el panel en `https://app.chapi.cl`), su política de rotación y los scopes asociados aún no están documentados públicamente. Si lo necesitas, contacta a Chapi vía [https://chapi.cl/contacto](/contacto).

> **Scopes y permisos.** El OpenAPI actual no diferencia scopes por endpoint. Asume que un token válido tiene acceso a los 4 endpoints del API.

---

Última actualización: 2026-05-01
