Solicitar demo

Orders API

Listar pedidos

Consulta pedidos con filtros, paginación y ordenación desde el perfil autenticado.

Volver a todos los endpoints

Orders API

Listar pedidos

Usa este endpoint para sincronizar pedidos o construir listados operativos. La respuesta queda acotada al perfil autenticado: un dispatcher ve sus pedidos, un restaurante ve los suyos y un rider ve los pedidos asignados a su cuenta.

GET /api/orders 200 OK
Auth requerida Perfil: dispatcher, restaurant o rider

Campos principales

Resumen de los campos relevantes para este endpoint.

Campo Tipo Uso Descripción
orderId uuid Opcional Filtra por el identificador del pedido devuelto por Operio.
dispatchOrderId string Opcional Filtra por la referencia del pedido en tu sistema.
currentStatus string Opcional Filtra por un único estado: pending_approval, dispatcher_accepted, going_to_pickup, arrived_at_pickup, in_route, arrived_at_dropoff, delivered, failed o cancelled.
statuses string Opcional Lista de estados separados por coma para filtrar varios estados en una misma consulta.
pickupAddress string Opcional Filtra por texto contenido en la dirección de recogida.
deliveryAddress string Opcional Filtra por texto contenido en la dirección de entrega.
dispatcherId uuid Opcional En cuentas dispatcher debe coincidir con el dispatcher autenticado. En cuentas restaurante solo se acepta si existe relación con ese dispatcher.
restaurantId uuid Opcional En cuentas dispatcher solo se acepta si el restaurante está vinculado. En cuentas restaurante debe coincidir con el restaurante autenticado.
riderId uuid Opcional Filtra por rider asignado. En cuentas rider, si se envía, debe coincidir con el rider autenticado.
createdFrom ISO date Opcional Fecha mínima de creación, inclusive.
createdTo ISO date Opcional Fecha máxima de creación, inclusive.
updatedFrom ISO date Opcional Fecha mínima de actualización, inclusive.
updatedTo ISO date Opcional Fecha máxima de actualización, inclusive.
limit number Opcional Número máximo de pedidos a devolver. Rango permitido: 1 a 200. Por defecto: 50.
offset number Opcional Desplazamiento para paginación. Por defecto: 0.
sortBy updatedAt | createdAt Opcional Campo usado para ordenar resultados. Por defecto: updatedAt.
sortOrder asc | desc Opcional Dirección de ordenación. Por defecto: desc.

Request cURL

curl -X GET 'https://api.deliveryforall.com/api/orders?statuses=going_to_pickup,in_route&deliveryAddress=C.%20Cisne&createdFrom=2026-02-01T00:00:00.000Z&createdTo=2026-02-26T23:59:59.999Z&limit=25&offset=0&sortBy=updatedAt&sortOrder=desc' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Respuesta 200

{
  "data": [
    {
      "orderId": "11111111-1111-4111-8111-111111111111",
      "dispatchOrderId": "POS-93442",
      "currentStatus": "in_route",
      "createdAt": "2026-02-25T17:00:00.000Z",
      "updatedAt": "2026-02-26T09:59:00.000Z",
      "customerInfo": {
        "customerName": "Ana Perez",
        "customerPhone": "+34 600 000 000",
        "customerEmail": "ana@example.com",
        "customerNotes": "Llamar si no responde"
      },
      "deliveryInfo": {
        "pickupAddress": "Av. de Orihuela, 27, 03007 Alicante",
        "pickupLat": 38.344498,
        "pickupLng": -0.509259,
        "deliveryAddress": "C. Cisne, 21-17, 03006 Alicante",
        "deliveryLat": 38.346158,
        "deliveryLng": -0.510089,
        "deliveryNotes": "Piso 2, puerta B"
      },
      "paymentInfo": {
        "method": "cash",
        "status": "pending",
        "totalAmount": "18.50",
        "currency": "EUR",
        "cashExpectedAmount": "20.00"
      },
      "assignment": {
        "orderBudgetId": "22222222-2222-4222-8222-222222222222",
        "dispatcherId": "33333333-3333-4333-8333-333333333333",
        "restaurantId": "44444444-4444-4444-8444-444444444444",
        "amount": "9.50",
        "currency": "EUR"
      }
    }
  ],
  "total": 1,
  "limit": 25,
  "offset": 0
}

Consola de prueba

Consulta pedidos desde la página

Ajusta la URL base, pega tu token y prueba los filtros de listado. También puedes copiar el ejemplo como cURL o JavaScript.

La respuesta aparecerá aquí.

Errores esperados

Respuestas habituales que debe contemplar la integración.

400
GET_ORDERS_INVALID_QUERY

Query inválida

Algún filtro no cumple el formato esperado, el rango de fechas es incoherente o los valores de paginación quedan fuera de rango.

401
AUTH_MISSING_TOKEN

Token requerido

No se ha enviado token en Authorization ni x-api-token.

401
AUTH_INVALID_AUTHORIZATION_HEADER

Cabecera Authorization inválida

La cabecera Authorization no tiene un formato válido.

401
AUTH_INVALID_TOKEN

Token inválido

Token inexistente, expirado o no resoluble.

401
GET_ORDERS_UNAUTHORIZED

Usuario no autenticado

La ruta llega sin usuario autenticado tras el middleware. Es un caso defensivo.

403
DISPATCHER_GET_ORDERS_DISPATCHER_ID_MISMATCH

Dispatcher no coincide

Una cuenta dispatcher intenta filtrar por un dispatcherId distinto al suyo.

403
DISPATCHER_GET_ORDERS_RESTAURANT_RELATION_REQUIRED

Relación con restaurante requerida

Una cuenta dispatcher intenta filtrar por un restaurante que no está vinculado a su integración.

403
AUTH_UNAUTHORIZED

Acceso no autorizado

La cuenta autenticada no tiene permisos para consultar el alcance solicitado.

429
RATE_LIMIT_EXCEEDED

Too Many Requests

Más de 3 peticiones por minuto a esta ruta para la misma IP o identidad.

500
AUTH_TOKEN_VALIDATION_FAILED

Fallo validando token

Fallo consultando el token del usuario durante autenticación.

500
AUTH_RESTAURANT_MEMBERSHIPS_READ_FAILED

Fallo leyendo membresías

Fallo leyendo membresías de restaurante durante autenticación.

500
GET_ORDERS_REPOSITORY_READ_FAILED

Fallo leyendo pedidos

Fallo leyendo pedidos desde el repositorio.

500
GET_ORDERS_FAILED

Fallo no clasificado

Fallo no clasificado al listar pedidos.

Ejemplo de error

{
  "error": {
    "code": "GET_ORDERS_INVALID_QUERY",
    "message": "Invalid query parameters"
  }
}