Deliveroo Order API

The Deliveroo Order API is part of the Partner Platform Suite and manages restaurant orders and rider lifecycle events in real time. Orders and rider status updates are delivered to integrators via webhooks so that POS, kitchen display, and fulfillment systems can stay in sync without polling. Authentication uses OAuth-based credentials provisioned through the Deliveroo Developer Portal.

OpenAPI Specification

deliveroo-order-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Deliveroo Order API
  description: >-
    Part of the Deliveroo Partner Platform Suite. The Order API lets restaurant
    integrators receive and manage Deliveroo orders in real time. Orders and
    rider lifecycle events are delivered via webhooks, and integrators update
    order status, confirm preparation, and report in-store synchronization
    status back to Deliveroo. Authentication uses an OAuth 2.0 client
    credentials bearer token issued by the Deliveroo Developer Portal.
  version: v1
  x-generated-from: documentation
  x-last-validated: '2026-06-02'
  contact:
    name: Kin Lane
    email: kin@apievangelist.com
servers:
- url: https://api.developers.deliveroo.com
  description: Production
- url: https://api-sandbox.developers.deliveroo.com
  description: Sandbox
tags:
- name: Orders
- name: Sync Status
security:
- bearerAuth: []
paths:
  /order/v1/orders/{order_id}:
    patch:
      operationId: updateOrderStatus
      summary: Deliveroo Update Order Status
      description: >-
        Accept, reject, or confirm an order. The order must be in the PLACED
        status to be accepted or rejected. ASAP orders not accepted within 10
        minutes (7 minutes for the Kuwait and UAE markets) are rejected
        automatically. Rate limited to 5 requests per minute per order.
      tags:
      - Orders
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      parameters:
      - name: order_id
        in: path
        required: true
        description: The unique identifier of the Deliveroo order.
        schema:
          type: string
          example: gb:1234abcd-5678-90ef-ghij-klmnopqrstuv
        example: gb:1234abcd-5678-90ef-ghij-klmnopqrstuv
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderStatusUpdate'
            examples:
              UpdateOrderStatusRequestExample:
                summary: Default updateOrderStatus request
                x-microcks-default: true
                value:
                  status: accepted
                  reject_reason: busy
                  notes: example
      responses:
        '204':
          description: The order was successfully accepted, rejected, or confirmed.
        '400':
          description: Bad request, often a missing required parameter or incorrect content type.
        '401':
          description: The API key and token combination is invalid or the integration is disabled.
        '409':
          description: Conflict, for example the status was already sent or a timeout occurred.
        '500':
          description: Server error. Retry later.
  /order/v1/orders/{order_id}/sync_status:
    post:
      operationId: createSyncStatus
      summary: Deliveroo Create Sync Status for an Order
      description: >-
        Report whether the order was successfully sent to the site's in-store
        system. If Deliveroo does not receive a sync status within 3 minutes, or
        receives a failed status, it prompts site staff via the Deliveroo tablet
        to check their in-store system.
      tags:
      - Sync Status
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      parameters:
      - name: order_id
        in: path
        required: true
        description: The unique identifier of the Deliveroo order.
        schema:
          type: string
        example: gb-12345
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncStatus'
            examples:
              CreateSyncStatusRequestExample:
                summary: Default createSyncStatus request
                x-microcks-default: true
                value:
                  status: succeeded
                  reason: items_out_of_stock
                  notes: example
                  occurred_at: '2026-06-02T12:00:00Z'
      responses:
        '200':
          description: Everything worked as expected.
        '400':
          description: Bad request, missing required parameter or incorrect content type.
        '401':
          description: Invalid API credentials or disabled integration.
        '404':
          description: An order with that ID was not found.
        '409':
          description: Sync status was already sent or the timeout occurred.
        '500':
          description: Server error. Retry later.
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        OAuth 2.0 client credentials access token obtained from
        https://auth.developers.deliveroo.com/oauth2/token. Tokens expire after
        5 minutes; no refresh tokens are issued.
  schemas:
    OrderStatusUpdate:
      title: Order Status Update
      description: >-
        Request body for updating an order's status.
        x-schema-source: documentation
        x-source-url: https://api-docs.deliveroo.com/reference/patch-order-1
      type: object
      required:
      - status
      properties:
        status:
          type: string
          enum:
          - accepted
          - rejected
          - confirmed
          description: The new status for the order.
          example: accepted
        reject_reason:
          type: string
          nullable: true
          enum:
          - closing_early
          - busy
          - ingredient_unavailable
          - other
          description: Required when status is rejected. The reason for rejection.
          example: busy
        notes:
          type: string
          nullable: true
          description: Free-text notes accompanying the status change.
          example: example
    SyncStatus:
      title: Sync Status
      description: >-
        Reports the result of synchronizing the order to the in-store system.
        x-schema-source: documentation
        x-source-url: https://api-docs.deliveroo.com/reference/create-sync-status-1
      type: object
      required:
      - status
      - occurred_at
      properties:
        status:
          type: string
          enum:
          - succeeded
          - failed
          description: Whether the order was successfully sent to the in-store system.
          example: succeeded
        reason:
          type: string
          nullable: true
          enum:
          - price_mismatched
          - pos_item_id_mismatched
          - pos_item_id_not_found
          - items_out_of_stock
          - location_offline
          - location_not_supported
          - unsupported_order_type
          - no_webhook_url
          - webhook_failed
          - timed_out
          - other
          - no_sync_confirmation
          description: Reason for a failed sync status.
          example: items_out_of_stock
        notes:
          type: string
          nullable: true
          description: Free-text notes about the sync result.
          example: example
        occurred_at:
          type: string
          format: date-time
          description: Timestamp when the sync result occurred.
          example: '2026-06-02T12:00:00Z'