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'