openapi: 3.0.3
info:
title: Deliveroo Catalogue Menus API
description: Part of the Deliveroo Retail Platform Suite. The Catalogue API lets grocery and non-food retailers manage a master catalogue of up to 30,000 items per brand, publish product data and availability across retail sites, and override item prices at the site level. Authentication uses an OAuth 2.0 client credentials bearer token.
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
security:
- bearerAuth: []
tags:
- name: Menus
paths:
/menu/v1/brands/{brand_id}/menus/{id}:
put:
operationId: uploadMenu
summary: Deliveroo Upload Menu
description: Create a menu or update an existing menu so that customers see the most up-to-date offerings, stock, pricing, and allergen data. Menu processing is asynchronous; the result is delivered via the menu webhook. Rate limited to 1 request per minute per site.
tags:
- Menus
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
parameters:
- name: brand_id
in: path
required: true
description: The brand identifier.
schema:
type: string
example: gb-12345
- name: id
in: path
required: true
description: The menu identifier.
schema:
type: string
example: gb-12345
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MenuUpload'
examples:
UploadMenuRequestExample:
summary: Default uploadMenu request
x-microcks-default: true
value:
name: Lunch Menu
menu: {}
site_ids:
- example
responses:
'200':
description: OK. The menu upload was accepted for asynchronous processing.
'400':
description: Bad request.
'404':
description: Not found.
'409':
description: Conflict.
'422':
description: Unprocessable entity.
'429':
description: Too many requests.
'500':
description: Server error.
'503':
description: Service unavailable.
get:
operationId: getMenu
summary: Deliveroo Get Menu
description: Retrieve a menu previously created via Upload Menu and view the latest status of the menu in Deliveroo.
tags:
- Menus
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
parameters:
- name: brand_id
in: path
required: true
description: The brand identifier.
schema:
type: string
example: gb-12345
- name: id
in: path
required: true
description: The menu identifier.
schema:
type: string
example: gb-12345
responses:
'200':
description: The requested menu.
content:
application/json:
schema:
$ref: '#/components/schemas/MenuUpload'
examples:
GetMenu200Example:
summary: Default getMenu 200 response
x-microcks-default: true
value:
name: Lunch Menu
menu: {}
site_ids:
- example
'404':
description: Not found.
'500':
description: Server error.
components:
schemas:
MenuUpload:
title: Menu Upload
description: 'Request body for creating or updating a menu. x-schema-source: documentation x-source-url: https://api-docs.deliveroo.com/reference/put_v1-brands-brand-id-menus-id'
type: object
required:
- name
- menu
- site_ids
properties:
name:
type: string
description: A human-readable name for the menu.
example: Lunch Menu
menu:
type: object
description: The menu document containing categories, items, modifiers, prices, POS identifiers, stock, and allergen data.
site_ids:
type: array
description: The site identifiers this menu applies to.
items:
type: string
example:
- gb-site-001
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.