> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fooddelivery.cl/llms.txt
> Use this file to discover all available pages before exploring further.

# Autenticación

> API keys por restaurante con header Bearer

Todas las llamadas se autentican con una **API key** enviada en el header
`Authorization`:

```bash theme={null}
Authorization: Bearer fd_live_xxxxxxxxxxxxxxxx
```

La llave se genera desde el panel de administración en
**Integraciones → API pública** y se muestra **una sola vez**: en nuestra base
de datos solo se guarda su hash.

<Note>
  Para desarrollar sin efectos reales genera una llave **Sandbox**
  (`fd_test_`) desde el mismo panel: opera sobre tu restaurante en modo
  prueba. Ver [Sandbox](/sandbox).
</Note>

## Alcance y permisos

* Cada llave accede **solo al restaurante que la generó**, incluyendo todas
  sus sucursales (usa el parámetro `location_id` para filtrar por sucursal).
* Al generar la llave eliges su permiso:
  * **Solo lectura** (default): todos los `GET`.
  * **Escritura**: además puede crear pedidos, cambiar estados,
    abrir/cerrar sucursales y actualizar stock. Los endpoints que la
    requieren están marcados en la referencia; sin el permiso responden
    `403 forbidden`.
* Ninguna llave puede mover dinero, emitir reembolsos ni tocar la
  configuración del restaurante.
* Puedes tener hasta **5 llaves activas** por restaurante, con nombre para
  identificarlas (ej: "ERP", "contabilidad").
* Puedes revocar una llave en cualquier momento desde
  **Integraciones → API pública**; deja de servir de inmediato.

## Buenas prácticas

<AccordionGroup>
  <Accordion title="Nunca expongas la llave en el navegador">
    Úsala solo desde tu backend. Si necesitas datos en un frontend, crea un
    endpoint propio que haga de proxy.
  </Accordion>

  <Accordion title="Rota la llave si sospechas filtración">
    Revoca la llave comprometida y genera una nueva. La revocación es
    instantánea y no afecta a las demás llaves.
  </Accordion>

  <Accordion title="Una llave por sistema conectado">
    Genera una llave distinta para cada integración (ERP, contabilidad,
    dashboard). Así puedes revocar una sin interrumpir las demás, y el campo
    "último uso" del panel te dice cuál está funcionando.
  </Accordion>
</AccordionGroup>

## Límites de uso

| Límite                | Valor                                          |
| --------------------- | ---------------------------------------------- |
| Peticiones por minuto | 120 por restaurante                            |
| Respuesta al exceder  | `429 Too Many Requests` + header `Retry-After` |
