Menu API

Menu API allows integrated partners to push their menus to Wolt and then pull it to their system.

This enables our partners to save time and effort as venues can update and track what is being sold on their menus in their POS or menu management system. Changes done in the POS will reflect on the menu shown at Wolt. Partners are also able to mark items and options out of stock without needing to build a full fledged menu editor.

Environments

https://pos-integration-service.development.dev.woltapi.com

Authentication

Bearer authentication

The JWT token is used for authentication and is obtained as part of the OAuth 2.0 flow. For detailed implementation guidance, refer to the documentation.

You can get credentials by contacting your Wolt account manager or technical account manager.

Properties

idstring

Unique identifier for the menu.

currencystring

Required. Primary currency of the menu. Three-letter ISO 4217 currency code.

primary_languagestring

Required. Primary language of the menu. Two-letter ISO 639-1 language codes.

categories[object]

Required. Categories of items available in the menu.

Create a menu

This operation requires Bearer authentication.

Creates a menu for the venue or replaces the existing one.

Parameters

venueIdstring

Required. Unique identifier for the venue.

Properties

idstring

Unique identifier for the menu.

currencystring

Required. Primary currency of the menu. Three-letter ISO 4217 currency code.

primary_languagestring

Required. Primary language of the menu. Two-letter ISO 639-1 language codes.

categories[object]

Required. Categories of items available in the menu.

Responses

POST /v1/restaurants/{venueId}/menu
curl -X POST https://pos-integration-service.development.dev.woltapi.com/v1/restaurants/{venueId}/menu \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer {{access_token}}" \
-d '{"id":"string","currency":"string","primary_language":"string","categories":[{"id":"string","name":[{"lang":"string","value":"string"}],"description":[{"lang":"string","value":"string"}],"subcategories":[{"name":[{"lang":"string","value":"string"}],"description":[{"lang":"string","value":"string"}],"items":[{"name":[{"lang":"string","value":"string"}],"description":[{"lang":"string","value":"string"}],"image_url":"string","price":0,"sales_tax_percentage":0,"alcohol_percentage":0,"caffeine_content":{"serving_size":"per_100_grams","value":0},"weekly_availability":[{"opening_day":"MONDAY","opening_time":"string","closing_day":"MONDAY","closing_time":"string"}],"weekly_visibility":[{"opening_day":"MONDAY","opening_time":"string","closing_day":"MONDAY","closing_time":"string"}],"enabled":true,"delivery_methods":["homedelivery"],"options":[{"name":[{"lang":"string","value":"string"}],"type":"SingleChoice","selection_range":{"max":0,"min":0},"external_data":"string","values":[{"name":[{"lang":"string","value":"string"}],"selection_range":{"max":0,"min":0},"price":0,"enabled":true,"default":true,"external_data":"string","sub_option_values":[{"name":[{"lang":"string","value":"string"}],"selection_range":{"max":0,"min":0},"price":0,"enabled":true,"default":true,"external_data":"string","product_information":{"ingredients":[{"lang":"string","value":"string"}],"additives":[{"lang":"string","value":"string"}],"allergens":[{"lang":"string","value":"string"}],"producer_information":[{"lang":"string","value":"string"}],"distributor_information":[{"lang":"string","value":"string"}],"country_of_origin":[{"lang":"string","value":"string"}],"conditions_of_use_and_storage":[{"lang":"string","value":"string"}],"nutrition_information":{"serving_size":"per_100_grams","nutrition_values":{"energy_kcal":{"value":0},"energy_kj":{"value":0},"fats":{"unit":"g","value":0},"saturated_fats":{"unit":"g","value":0},"mono_unsaturated_fats":{"unit":"g","value":0},"poly_unsaturated_fats":{"unit":"g","value":0},"carbohydrate":{"unit":"g","value":0},"sugar":{"unit":"g","value":0},"starch":{"unit":"g","value":0},"polyols":{"unit":"g","value":0},"protein":{"unit":"g","value":0},"salt":{"unit":"g","value":0},"sodium":{"unit":"g","value":0},"fibres":{"unit":"g","value":0},"vitamin_c":{"unit":"g","value":0},"potassium":{"unit":"g","value":0},"calcium":{"unit":"g","value":0},"magnesium":{"unit":"g","value":0},"chloride":{"unit":"g","value":0},"fluoride":{"unit":"g","value":0}}},"regulatory_information":[{"name":"string","value":"string"}]},"gtin_barcode":"string","merchant_sku":"string","deposit":{"price":0,"vat_percentage":0},"vat_percentage":0}],"product_information":{"ingredients":[{"lang":"string","value":"string"}],"additives":[{"lang":"string","value":"string"}],"allergens":[{"lang":"string","value":"string"}],"producer_information":[{"lang":"string","value":"string"}],"distributor_information":[{"lang":"string","value":"string"}],"country_of_origin":[{"lang":"string","value":"string"}],"conditions_of_use_and_storage":[{"lang":"string","value":"string"}],"nutrition_information":{"serving_size":"per_100_grams","nutrition_values":{"energy_kcal":{"value":0},"energy_kj":{"value":0},"fats":{"unit":"g","value":0},"saturated_fats":{"unit":"g","value":0},"mono_unsaturated_fats":{"unit":"g","value":0},"poly_unsaturated_fats":{"unit":"g","value":0},"carbohydrate":{"unit":"g","value":0},"sugar":{"unit":"g","value":0},"starch":{"unit":"g","value":0},"polyols":{"unit":"g","value":0},"protein":{"unit":"g","value":0},"salt":{"unit":"g","value":0},"sodium":{"unit":"g","value":0},"fibres":{"unit":"g","value":0},"vitamin_c":{"unit":"g","value":0},"potassium":{"unit":"g","value":0},"calcium":{"unit":"g","value":0},"magnesium":{"unit":"g","value":0},"chloride":{"unit":"g","value":0},"fluoride":{"unit":"g","value":0}}},"regulatory_information":[{"name":"string","value":"string"}]},"gtin_barcode":"string","merchant_sku":"string","deposit":{"price":0,"vat_percentage":0},"vat_percentage":0}]}],"external_data":"string","quantity":0,"product_information":{"ingredients":[{"lang":"string","value":"string"}],"additives":[{"lang":"string","value":"string"}],"allergens":[{"lang":"string","value":"string"}],"producer_information":[{"lang":"string","value":"string"}],"distributor_information":[{"lang":"string","value":"string"}],"country_of_origin":[{"lang":"string","value":"string"}],"conditions_of_use_and_storage":[{"lang":"string","value":"string"}],"nutrition_information":{"serving_size":"per_100_grams","nutrition_values":{"energy_kcal":{"value":0},"energy_kj":{"value":0},"fats":{"unit":"g","value":0},"saturated_fats":{"unit":"g","value":0},"mono_unsaturated_fats":{"unit":"g","value":0},"poly_unsaturated_fats":{"unit":"g","value":0},"carbohydrate":{"unit":"g","value":0},"sugar":{"unit":"g","value":0},"starch":{"unit":"g","value":0},"polyols":{"unit":"g","value":0},"protein":{"unit":"g","value":0},"salt":{"unit":"g","value":0},"sodium":{"unit":"g","value":0},"fibres":{"unit":"g","value":0},"vitamin_c":{"unit":"g","value":0},"potassium":{"unit":"g","value":0},"calcium":{"unit":"g","value":0},"magnesium":{"unit":"g","value":0},"chloride":{"unit":"g","value":0},"fluoride":{"unit":"g","value":0}}},"regulatory_information":[{"name":"string","value":"string"}]},"gtin_barcode":"string","merchant_sku":"string","deposit":{"price":0,"vat_percentage":0},"bundle_offer":true,"restrictions":{"item_restrictions":["age_restricted"],"courier_restrictions":["no_bikes"]}}],"weekly_availability":[{"opening_day":"MONDAY","opening_time":"string","closing_day":"MONDAY","closing_time":"string"}]}],"items":[{"name":[{"lang":"string","value":"string"}],"description":[{"lang":"string","value":"string"}],"image_url":"string","price":0,"sales_tax_percentage":0,"alcohol_percentage":0,"caffeine_content":{"serving_size":"per_100_grams","value":0},"weekly_availability":[{"opening_day":"MONDAY","opening_time":"string","closing_day":"MONDAY","closing_time":"string"}],"weekly_visibility":[{"opening_day":"MONDAY","opening_time":"string","closing_day":"MONDAY","closing_time":"string"}],"enabled":true,"delivery_methods":["homedelivery"],"options":[{"name":[{"lang":"string","value":"string"}],"type":"SingleChoice","selection_range":{"max":0,"min":0},"external_data":"string","values":[{"name":[{"lang":"string","value":"string"}],"selection_range":{"max":0,"min":0},"price":0,"enabled":true,"default":true,"external_data":"string","sub_option_values":[{"name":[{"lang":"string","value":"string"}],"selection_range":{"max":0,"min":0},"price":0,"enabled":true,"default":true,"external_data":"string","product_information":{"ingredients":[{"lang":"string","value":"string"}],"additives":[{"lang":"string","value":"string"}],"allergens":[{"lang":"string","value":"string"}],"producer_information":[{"lang":"string","value":"string"}],"distributor_information":[{"lang":"string","value":"string"}],"country_of_origin":[{"lang":"string","value":"string"}],"conditions_of_use_and_storage":[{"lang":"string","value":"string"}],"nutrition_information":{"serving_size":"per_100_grams","nutrition_values":{"energy_kcal":{"value":0},"energy_kj":{"value":0},"fats":{"unit":"g","value":0},"saturated_fats":{"unit":"g","value":0},"mono_unsaturated_fats":{"unit":"g","value":0},"poly_unsaturated_fats":{"unit":"g","value":0},"carbohydrate":{"unit":"g","value":0},"sugar":{"unit":"g","value":0},"starch":{"unit":"g","value":0},"polyols":{"unit":"g","value":0},"protein":{"unit":"g","value":0},"salt":{"unit":"g","value":0},"sodium":{"unit":"g","value":0},"fibres":{"unit":"g","value":0},"vitamin_c":{"unit":"g","value":0},"potassium":{"unit":"g","value":0},"calcium":{"unit":"g","value":0},"magnesium":{"unit":"g","value":0},"chloride":{"unit":"g","value":0},"fluoride":{"unit":"g","value":0}}},"regulatory_information":[{"name":"string","value":"string"}]},"gtin_barcode":"string","merchant_sku":"string","deposit":{"price":0,"vat_percentage":0},"vat_percentage":0}],"product_information":{"ingredients":[{"lang":"string","value":"string"}],"additives":[{"lang":"string","value":"string"}],"allergens":[{"lang":"string","value":"string"}],"producer_information":[{"lang":"string","value":"string"}],"distributor_information":[{"lang":"string","value":"string"}],"country_of_origin":[{"lang":"string","value":"string"}],"conditions_of_use_and_storage":[{"lang":"string","value":"string"}],"nutrition_information":{"serving_size":"per_100_grams","nutrition_values":{"energy_kcal":{"value":0},"energy_kj":{"value":0},"fats":{"unit":"g","value":0},"saturated_fats":{"unit":"g","value":0},"mono_unsaturated_fats":{"unit":"g","value":0},"poly_unsaturated_fats":{"unit":"g","value":0},"carbohydrate":{"unit":"g","value":0},"sugar":{"unit":"g","value":0},"starch":{"unit":"g","value":0},"polyols":{"unit":"g","value":0},"protein":{"unit":"g","value":0},"salt":{"unit":"g","value":0},"sodium":{"unit":"g","value":0},"fibres":{"unit":"g","value":0},"vitamin_c":{"unit":"g","value":0},"potassium":{"unit":"g","value":0},"calcium":{"unit":"g","value":0},"magnesium":{"unit":"g","value":0},"chloride":{"unit":"g","value":0},"fluoride":{"unit":"g","value":0}}},"regulatory_information":[{"name":"string","value":"string"}]},"gtin_barcode":"string","merchant_sku":"string","deposit":{"price":0,"vat_percentage":0},"vat_percentage":0}]}],"external_data":"string","quantity":0,"product_information":{"ingredients":[{"lang":"string","value":"string"}],"additives":[{"lang":"string","value":"string"}],"allergens":[{"lang":"string","value":"string"}],"producer_information":[{"lang":"string","value":"string"}],"distributor_information":[{"lang":"string","value":"string"}],"country_of_origin":[{"lang":"string","value":"string"}],"conditions_of_use_and_storage":[{"lang":"string","value":"string"}],"nutrition_information":{"serving_size":"per_100_grams","nutrition_values":{"energy_kcal":{"value":0},"energy_kj":{"value":0},"fats":{"unit":"g","value":0},"saturated_fats":{"unit":"g","value":0},"mono_unsaturated_fats":{"unit":"g","value":0},"poly_unsaturated_fats":{"unit":"g","value":0},"carbohydrate":{"unit":"g","value":0},"sugar":{"unit":"g","value":0},"starch":{"unit":"g","value":0},"polyols":{"unit":"g","value":0},"protein":{"unit":"g","value":0},"salt":{"unit":"g","value":0},"sodium":{"unit":"g","value":0},"fibres":{"unit":"g","value":0},"vitamin_c":{"unit":"g","value":0},"potassium":{"unit":"g","value":0},"calcium":{"unit":"g","value":0},"magnesium":{"unit":"g","value":0},"chloride":{"unit":"g","value":0},"fluoride":{"unit":"g","value":0}}},"regulatory_information":[{"name":"string","value":"string"}]},"gtin_barcode":"string","merchant_sku":"string","deposit":{"price":0,"vat_percentage":0},"bundle_offer":true,"restrictions":{"item_restrictions":["age_restricted"],"courier_restrictions":["no_bikes"]}}],"weekly_availability":[{"opening_day":"MONDAY","opening_time":"string","closing_day":"MONDAY","closing_time":"string"}]}]}'
Response
HTTP/1.1 202 Accepted

Update menu item inventory

This operation requires Bearer authentication.

Allows venues to bulk update inventory quantities for items listed on Wolt. This saves time and effort as venues do not need to worry about receiving orders with out of stock items in them.

Integrating using this endpoint improves the consumer experience, preventing them from ordering unavailable items. If an item is out of stock, the venue can indicate that the item is out of stock by marking it "sold out" instead of removing the item from the menu.

Matching items between Wolt's menu and your system can be done with sku, gtin or external_id. When a match is found, the item is updated with the data provided in the payload.

Parameters

venueIdstring

Required. Unique identifier for the venue.

Properties

data[object]

Item inventories to update.

You must define either external_id, gtin or sku for each item to update.

Responses

PATCH /venues/{venueId}/items/inventory
curl -X PATCH https://pos-integration-service.development.dev.woltapi.com/venues/{venueId}/items/inventory \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer {{access_token}}" \
-d '{"data":[{"sku":"CAU001","inventory":55},{"sku":"SPN001","inventory":20}]}'
Response
HTTP/1.1 202 Accepted

Update menu items

This operation requires Bearer authentication.

Allows bulk updating item data such as price and visibility. This saves time and effort as venues can update their menus on the POS or menu management system and the changes will be reflected on the Wolt app.

Matching items between Wolt's menu and your system can be done with sku, gtin or external_id. When a match is found, the item is updated with the data provided in the payload.

Parameters

venueIdstring

Required. Unique identifier for the venue.

Properties

data[object]

Items to update.

You must define either external_id, gtin or sku for each item to update.

Responses

PATCH /venues/{venueId}/items
curl -X PATCH https://pos-integration-service.development.dev.woltapi.com/venues/{venueId}/items \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer {{access_token}}" \
-d '{"data":[{"external_id":"ABC_123","price":1900,"discounted_price":1500,"enabled":true,"in_stock":true,"image_url":"https://image-resizer-proxy.development.dev.woltapi.com/wolt-dev-development-restaurant-api-menu-images/menu-images/61af55beb346a4b2762f7e75/6ad53698-115a-11ed-9273-4ee6ff6595c3_chickpea_burgers_00951_16x9.jpeg"}]}'
Response
HTTP/1.1 202 Accepted

Update menu options

This operation requires Bearer authentication.

Allows bulk updating options data such as price and visibility.

Parameters

venueIdstring

Required. Unique identifier for the venue.

Properties

data[object]

Options to update.

You must define either external_id, gtin or sku for each item to update.

Responses

PATCH /venues/{venueId}/options/values
curl -X PATCH https://pos-integration-service.development.dev.woltapi.com/venues/{venueId}/options/values \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer {{access_token}}" \
-d '{"data":[{"external_id":"string","price":0,"enabled":true}]}'
Response
HTTP/1.1 202 Accepted

Properties

idstring

Unique identifier for the menu.

currencystring

Primary currency of the menu. Three-letter ISO 4217 currency code.

primary_languagestring

Primary language of the menu. Two-letter ISO 639-1 language codes.

categories[object]

Categories of items available in the menu.

items[object]

Items available in the menu along with their option bindings.

options[object]

Options available for all items in the menu.

weekly_availabilities[object]

Availability of the menu represented in days and hours of the week.

depositsobject

Get menu

This operation requires Bearer authentication.

Retrieves the menu information for a specific venue.

The response includes a resource_url that can be used to poll for the actual menu details.

Parameters

venueIdstring

Required. Unique identifier for the venue.

Responses

GET /v2/venues/{venueId}/menu
curl https://pos-integration-service.development.dev.woltapi.com/v2/venues/{venueId}/menu \
-H "Authorization: Bearer {{access_token}}"
Response
HTTP/1.1 200 OK
{
"request_id": "string",
"resource_url": "string"
}