> ## 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.

# Errores

> Códigos de estado y formato de error

Los errores se devuelven con el código HTTP correspondiente y un cuerpo JSON
uniforme:

```json theme={null}
{
  "error": {
    "code": "not_found",
    "message": "No existe un pedido con ese id para este restaurante"
  }
}
```

| HTTP    | `code`                  | Cuándo                                                                                  |
| ------- | ----------------------- | --------------------------------------------------------------------------------------- |
| 400     | `invalid_request`       | Parámetro faltante o con formato inválido                                               |
| 401     | `unauthorized`          | API key ausente, mal formada o revocada                                                 |
| 403     | `forbidden`             | La llave no tiene el permiso de escritura que exige el endpoint                         |
| 404     | `not_found`             | El recurso no existe o pertenece a otro restaurante                                     |
| 409     | `location_closed`       | No se pueden crear pedidos con la sucursal cerrada                                      |
| 409     | `location_inactive`     | La sucursal está desactivada en el panel                                                |
| 409     | `insufficient_stock`    | Un producto del pedido no tiene stock suficiente (el mensaje detalla cuál)              |
| 409     | `illegal_transition`    | El cambio de estado no sigue el flujo de cocina                                         |
| 409     | `managed_by_integrator` | El pedido lo gestiona una integración POS (Toteat/Justo/Rockeat)                        |
| 409     | `state_conflict`        | El pedido cambió de estado entre tu lectura y tu escritura; vuelve a consultarlo        |
| 409/503 | `payment_unavailable`   | No se pudo iniciar el pago online (ej: Fintoc no habilitado); el pedido queda cancelado |
| 429     | `rate_limited`          | Se excedió el límite de peticiones; ver header `Retry-After`                            |
| 500     | `internal_error`        | Error nuestro; reintenta con backoff                                                    |

<Note>
  Un recurso de otro restaurante responde `404`, no `403`: la API no revela
  la existencia de datos ajenos.
</Note>
