Wix Restaurants Setup API Reference

Download skillThe skill is a reference md and part of wix-manage skill. You can use the following command to add the full wix-manage skill to your project:
Copy

This recipe covers setting up and configuring Wix Restaurants using the REST API, including menus, items, and ordering configuration.

Prerequisites

  1. Wix Restaurants app installed on the site
  2. API access with restaurant management permissions

Required APIs

  • Menus API: REST
  • Menu Items API: REST
  • Menu Sections API: REST
  • Item Modifiers API: REST
  • Item Modifier Groups API: REST
  • Item Variants API: REST

Overview

Wix Restaurants uses a hierarchical structure:

  • Menus (e.g., Breakfast, Lunch, Dinner)
    • Sections (e.g., Appetizers, Main Courses, Desserts)
      • Items (e.g., Caesar Salad, Grilled Salmon)

Step 1: Create a Menu

Endpoint: POST https://www.wixapis.com/restaurants/menus-menu/v1/menus

Request Body:

Copy

Response:

Copy

Step 2: Create Menu Sections

Endpoint: POST https://www.wixapis.com/restaurants/menus-section/v1/sections

Request Body:

Copy

Repeat per section, incrementing sortOrder, or create them all at once with the bulk endpoint in Step 7.

Step 3: Create Menu Items

Endpoint: POST https://www.wixapis.com/restaurants/menus-item/v1/items

Request Body:

Copy

modifierGroups holds objects referencing existing modifier groups — [{ "id": "<MODIFIER_GROUP_ID>" }]. Leave it empty until the groups exist (Step 5).

Step 4: Add Items to Sections

Endpoint: PATCH https://www.wixapis.com/restaurants/menus-section/v1/sections/{sectionId}

Each section update requires the latest section revision.

Copy

Step 5: Configure Item Options and Modifiers

A modifier group (e.g. "Cooking Temperature", "Toppings") holds a set of individual choices and the selection rule that governs them. The choices are separate entities — a modifier group does not contain inline options. Creating a group therefore takes two calls, in this order:

  1. Create one item modifier per choice (Item Modifiers API) and keep each returned id.
  2. Create the modifier group (Item Modifier Groups API), referencing those IDs.

Do both calls; a group created without step 1 comes back with an empty modifiers array and no choices are saved.

Step 5a: Create each item modifier

Endpoint: POST https://www.wixapis.com/restaurants/item-modifiers/v1/modifiers

Only modifier.name is required.

Copy

The response returns the new modifier.id. Repeat per choice, collecting the IDs.

Step 5b: Create the modifier group

Endpoint: POST https://www.wixapis.com/restaurants/item-modifier-group/v1/modifier-groups

The request body's top-level field is modifierGroup. Sending modifier instead is rejected with 400 modifierGroup must not be empty (violatedRule: REQUIRED_FIELD).

Required: modifierGroup and modifierGroup.name.

Copy

For a mandatory single-choice group (e.g. cooking temperature) use the same shape with "rule": { "required": true, "minSelections": 1, "maxSelections": 1 }.

Field reference for modifierGroup:

FieldNotes
nameRequired. The group's display name.
modifiers[].idID of an existing item modifier from Step 5a — not a name. Up to 500.
modifiers[].additionalChargeInfo.additionalChargeThat choice's surcharge, a decimal string ("2.00"). No currency field — the site currency is used.
modifiers[].preSelectedOptional boolean; selects the choice by default.
rule.requiredWhether the customer must choose. Named required, not mandatory.
rule.minSelections / rule.maxSelectionsIntegers bounding how many choices are allowed.

There is no options field and no per-option price object.

Step 5c: Attach the group to an item

A modifier group only reaches customers once an item references it. The item's modifierGroups is an array of objects carrying an id, not bare ID strings.

Endpoint: PATCH https://www.wixapis.com/restaurants/menus-item/v1/items/{itemId}

Copy

To create modifier groups in bulk, use POST https://www.wixapis.com/restaurants/menus/v1/bulk/modifier-groups/create and POST https://www.wixapis.com/restaurants/menus/v1/bulk/modifiers/create; the per-entity body shape is the same.

Step 6: Set Menu Structure (Attach Sections to Menu)

Attach section IDs to a menu. This call requires the latest menu revision.

Endpoint: PATCH https://www.wixapis.com/restaurants/menus-menu/v1/menus/{menuId}

Copy

Step 7: Bulk Operations for Large Menus

For restaurant setup flows with many sections/items, use bulk endpoints:

  • Bulk Create Sections: POST https://www.wixapis.com/restaurants/menus-section/v1/bulk/sections/create
  • Bulk Create Items: POST https://www.wixapis.com/restaurants/menus-item/v1/bulk/items/create
  • Bulk Create Variants: POST https://www.wixapis.com/restaurants/item-variants/v1/bulk/variants/create
Copy

Step 8: Query Menus / Sections / Items

Use query APIs for retrieval and UI display flows.

  • Query Menus: POST https://www.wixapis.com/restaurants/menus-menu/v1/menus/query
  • Query Sections: POST https://www.wixapis.com/restaurants/menus-section/v1/sections/query
  • Query Items: POST https://www.wixapis.com/restaurants/menus-item/v1/items/query
Copy

For complex restaurant menus, use this order to avoid dependency issues:

  1. Create variants (sizes/options) if needed.
  2. Create item modifiers, then group them into modifier groups (Step 5) if the items need customization options.
  3. Create items (single or bulk).
  4. Create sections (single or bulk).
  5. Update each section with itemIds.
  6. Update menu with sectionIds.
  7. Update items with modifierGroups to attach the groups from step 2.

Item Labels

Common dietary labels:

  • vegetarian
  • vegan
  • gluten-free
  • gluten-free-option
  • dairy-free
  • nut-free
  • spicy
  • chef-recommendation

Error Handling

ErrorCauseSolution
MENU_NOT_FOUNDInvalid menu IDVerify menu exists
ITEM_NOT_FOUNDInvalid item IDVerify item exists
INVALID_PRICENegative priceUse positive amounts
400 modifierGroup must not be emptyRequest body wrapped the group in modifier instead of modifierGroupUse modifierGroup as the top-level field (Step 5b)
Group created but modifiers is []Choices were sent inline (e.g. an options array) instead of as item modifier IDsCreate item modifiers first, then reference their IDs in modifiers[].id (Step 5a → 5b)

Last updated: 30 July 2026

Did this help?