Menu
Get a restaurant's full menu with optional search and filtering. Item IDs from this response are used to add items to the cart and in the select endpoint.
Get Restaurant Menu
Authentication is not required for this endpoint. No Bearer token needed.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| providerId | string | required | Provider ID from nearby-restaurants |
| sellerId | string | required | Seller UUID from nearby-restaurants |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| searchQuery | string | optional | Search term to filter items by name or description. Example: pizza |
| vegFilter | string | optional | Filter by diet type. Accepted values: veg or nonveg |
| categoryIds | string | optional | Comma-separated category IDs from the categories endpoint. Example: CM11 |
Example Request
GET /ret11/api/restaurants/pramaan_provider_1/seller/019b78d7-1371-7017-a997-3f6429a2f663/foods?searchQuery=pizza&vegFilter=veg&categoryIds=CM11
Response
Returns an object with provider information and menu items grouped by category.
provider
| Field | Type | Description |
|---|---|---|
| id | string | Provider ID |
| name | string | Restaurant display name |
| shortDesc | string | Short description of the restaurant |
| images | string[] | Array of restaurant image URLs |
| location | object | Location object with id (locationId) and address |
| location.id | string | Location ID (e.g., SSL1) |
| location.address.locality | string | Locality or neighborhood name |
| location.address.street | string | Street address |
| location.address.city | string | City name |
| location.address.areaCode | string | PIN / postal code |
| location.address.state | string | State name |
categories[]
Array of category objects. Each category groups related food items.
| Field | Type | Description |
|---|---|---|
| categoryId | string | Category identifier (e.g., CM11) |
| categoryName | string | Category display name (e.g., "Pizza") |
| categoryShortDesc | string | Short description of the category |
| categoryDisplaySeq | number | Display order sequence |
| items[] | array | Food items in this category — see items[] below |
items[]
Each item in a category represents a food product that can be added to cart.
| Field | Type | Description |
|---|---|---|
| id | string | Item ID. Used in cart/add and select endpoints. |
| name | string | Item name |
| shortDesc | string | Short description |
| longDesc | string | Full description |
| images | string[] | Array of item image URLs |
| rating | string | Item rating |
| unit | string | Unit of measure (e.g., "piece") |
| unitValue | string | Value per unit |
| maxOrder | number | Maximum quantity allowed per order |
| minPrice | number | Lowest possible price across all customization combinations |
| maxPrice | number | Highest possible price across all customization combinations |
| defaultMin | number | Price with default customizations selected (lower bound) |
| defaultMax | number | Price with default customizations selected (upper bound) |
| isCustomizable | boolean | Whether the item has customization options |
| vegOrNonveg | string | "veg" or "nonveg" |
| customizationGroups[] | array | Hierarchical customization groups. Only present when isCustomizable is true. See customizationGroups[]. |
customizationGroups[]
Customizations are hierarchical. A pizza item may have: Crust (required, pick 1) → Size (required, pick 1) → Toppings (optional, up to 2). Each group on an item is a top-level group; nested groups appear under each option's childGroups.
| Field | Type | Description |
|---|---|---|
| id | string | Group ID (e.g., CG11). Used as parentCategoryId in cart. |
| name | string | Group label shown in UI (e.g., "Crust (any 1 option)") |
| type | string | Group type identifier |
| displaySeq | number | Display order within the item |
| min | number | Minimum selections required. 0 = optional, 1+ = required. |
| max | number | Maximum number of selections allowed |
| input | string | UI input hint (e.g., "select") |
| items[] | array | Selectable options within this group — see option fields below |
| items[].id | string | Option ID. Used as item ID when adding customization selections to cart. |
| items[].name | string | Option display name (e.g., "New Hand Tossed") |
| items[].price | number | Additional price for this option. 0 = no extra charge. |
| items[].maxPrice | number | Maximum price for this option |
| items[].available | boolean | Whether the option is currently available |
| items[].isDefault | boolean | Whether this option is pre-selected by default |
| items[].childGroups[] | array | Nested customization groups unlocked by selecting this option (e.g., Size inside a Crust choice). Same structure as customizationGroups[]. |
When adding a customizable item to cart or the select endpoint, include the id of each selected customization option. Set parentCategoryId to the customization group ID (e.g., CG11), not the option ID itself.
Response Example (truncated)
{
"provider": {
"id": "pramaan_provider_1",
"name": "Pramaan Store 1",
"shortDesc": "Pramaan Store 1",
"images": ["https://example.com/images/store1.webp"],
"location": {
"id": "SSL1",
"address": {
"locality": "N. Caldwell",
"street": "633 Stagtrail Rd",
"city": "New Delhi",
"areaCode": "110030",
"state": "Delhi"
}
}
},
"categories": [
{
"categoryId": "CM11",
"categoryName": "Pizza",
"categoryShortDesc": "Veg and Non-Veg Pizza",
"categoryDisplaySeq": 1,
"items": [
{
"id": "id_ancc5_0_0",
"name": "Farmhouse Pizza",
"shortDesc": "A classic loaded with farm fresh veggies",
"longDesc": "Loaded with capsicum, mushroom, tomato and onion on a rich tomato sauce base.",
"images": ["https://example.com/images/farmhouse.webp"],
"rating": "4.5",
"unit": "piece",
"unitValue": "1",
"maxOrder": 10,
"minPrice": 265,
"maxPrice": 999,
"defaultMin": 265,
"defaultMax": 399,
"isCustomizable": true,
"vegOrNonveg": "veg",
"customizationGroups": [
{
"id": "CG11",
"name": "Crust (any 1 option)",
"type": "INS",
"displaySeq": 1,
"min": 1,
"max": 1,
"input": "select",
"items": [
{
"id": "id_1bai73_1_0",
"name": "New Hand Tossed",
"price": 0,
"maxPrice": 0,
"available": true,
"isDefault": true,
"childGroups": [
{
"id": "CG21",
"name": "Size (any 1 option)",
"type": "INS",
"displaySeq": 1,
"min": 1,
"max": 1,
"input": "select",
"items": [
{ "id": "id_c2egb_3_0", "name": "Regular", "price": 0, "maxPrice": 0, "available": true, "isDefault": true },
{ "id": "id_18yq4w_4_0", "name": "Medium", "price": 25, "maxPrice": 25, "available": true, "isDefault": false },
{ "id": "id_55vxa_5_0", "name": "Large", "price": 50, "maxPrice": 50, "available": true, "isDefault": false }
]
}
]
},
{
"id": "id_newyo_1_1",
"name": "Wheat Thin Crust",
"price": 0,
"maxPrice": 0,
"available": true,
"isDefault": false,
"childGroups": []
}
]
}
]
}
]
}
]
}
Usage Notes
- Obtain
providerIdandsellerIdfrom the nearby-restaurants endpoint before calling this endpoint. - Use
categoryIdsfrom the categories endpoint to filter the menu by food type. - Store item
idvalues — they are required when calling cart/add and select. - For customizable items, traverse
customizationGroupsrecursively throughchildGroupsto build the full selection tree. - Use
minPrice/maxPriceto display a price range before customizations are chosen. UsedefaultMin/defaultMaxfor the price with default selections applied.
When rendering a customizable item, show only top-level customizationGroups first. Load childGroups dynamically as the user makes selections to build a guided customization flow.