Skip to content

Venues

Get the menu

The venue's categories and products, with their portions, prices, extras, option groups, removable ingredients, allergens and stock status.

GET/public/v1/venues/{venueId}/menu
Authentication

An API key in the X-Api-Key header

Permission
Can read the menu (every key has it)
Rate limit
About 120 requests a minute per key

Everything the venue has hidden from its menu is left out, and so is a category with nothing left in it. Categories and products come in the order the venue shows them. All prices are in Turkish lira and include VAT. The menu does not depend on how the venue's QR menu is set up: it is returned whether the venue shows its QR menu or has put a PDF in its place.

Language. lang is the two-letter code of one of the venue's languages (languages in the venue's details); a region on the end (en-US) is ignored. A language the venue does not offer, or none, is answered in the venue's default language, and a venue with no language set up answers with the text it wrote. language in the answer is the language the text is actually in.

Campaigns. A portion that a running campaign discounts carries campaign with the price to show. It is worked out on every call, so a happy hour begins and ends on time.

Caching. The menu is kept for up to five minutes and refreshed at once when the venue edits it. The answer carries an ETag: send it back in If-None-Match and an unchanged menu answers 304 Not Modified with no body. The ETag stands for the menu in data, not for the envelope around it. More in Reading the menu.

Parameters

venueIdstring · uuidPath parameterrequired

The venue's id, from the list of venues.

langstringQuery parameter

The language of the menu's text, for example en. Leave it out for the venue's default language.

Accept-LanguagestringHeader

The language of userMessage in an error: tr (the default), en, de, fr, it, es, ar or ru. The first language in the header decides, without its region (en-US reads as en) and without weighing q values; a language Cibusy does not offer is answered in Turkish. It does not choose the language of a menu: that is lang on the menu call.

If-None-MatchstringHeader

The ETag of the copy you already hold. While it is still the current version the answer is 304 Not Modified with no body.

Responses

200

The venue's menu, with its ETag.

ETag

The version of this answer's data: the first 32 hex digits of a SHA-256, in quotes. Send it back in If-None-Match.

Cache-Control

Always private, no-cache: keep a copy, but ask the server whether it is still current before using it.

304

The menu has not changed since the version named in If-None-Match. There is no body; the copy you hold is current.

ETag

The version of this answer's data: the first 32 hex digits of a SHA-256, in quotes. Send it back in If-None-Match.

Cache-Control

Always private, no-cache: keep a copy, but ask the server whether it is still current before using it.

401

The X-Api-Key header is missing (PUBLIC_API_KEY_MISSING), or the key is invalid or has been revoked (PUBLIC_API_KEY_INVALID).

403

The key may not make this call (PUBLIC_API_SCOPE_MISSING). Every key made in the venue's panel may read venues, menus and tables.

404

The venue does not exist, or this key cannot reach it (PUBLIC_API_VENUE_NOT_FOUND).

429

The key's budget of about 120 requests a minute is spent; wait Retry-After seconds.

Retry-After

Seconds to wait. The next one-minute window opens within it.

The data of a successful answer

A venue's menu as a structure a website can render: categories, the products in them and everything a guest chooses on a product. Only what the venue shows on its menu is in it.

venueIdstring · uuid

The venue the menu belongs to.

languagestringnullable

The language the menu's text is in, the two-letter code of one of the venue's languages. It is the one asked for with lang when the venue offers it, and the venue's default language otherwise. null when the venue has set up no language, and the text is then as the venue wrote it.

currencystring

The currency of every price, an ISO 4217 code. Always TRY; prices include VAT.

categoriesobject[]

The menu's categories in the order the venue shows them. A category with nothing visible in it is left out.

Fields of Category
idstring · uuid

The category's id.

namestring

The category's name, in the menu's language.

photoUrlstringnullable

The address of the category's picture. null when it has none.

displayOrderinteger

The category's position on the menu, lowest first. The categories come already in this order.

productsobject[]

The category's products in the order the venue shows them. Never empty.

Fields of Product
idstring · uuid

The product's id, the one an order names.

namestring

The product's name, in the menu's language.

descriptionstringnullable

A line about the product, in the menu's language. null when the venue wrote none.

contentsstringnullable

What the product is made of, in the menu's language. null when the venue wrote none.

photoUrlstringnullable

The address of the product's picture. null when it has none.

displayOrderinteger

The product's position in its category, lowest first. The products come already in this order.

vatPercentinteger

The VAT rate in the prices, as a percentage: 0, 1, 10 or 20, Türkiye's brackets since July 2023. A product still on a retired bracket (8 or 18 percent) reads as the bracket that replaced it, 10 or 20.

containsAlcoholboolean

true when the product contains alcohol. Show a label for it.

containsPorkDerivativesboolean

true when the product contains pork or something made from it. Show a label for it.

acceptsMealCardboolean

true when the venue takes meal cards for the product.

allergensstring[]

The allergens the venue has declared for the product (the 14 of EU regulation). Empty means none were declared, not that the product is certain to be free of them.

Gluten
Gluten
Crustaceans
Crustaceans
Eggs
Eggs
Fish
Fish
Peanuts
Peanuts
Soybeans
Soybeans
Milk
Milk
Nuts
Tree nuts
Celery
Celery
Mustard
Mustard
Sesame
Sesame
Sulphites
Sulphites
Lupin
Lupin
Molluscs
Molluscs
stockStatusstringnullable

Whether the product is in stock, running low or sold out. null when the venue does not track the product's stock; show no badge then. A product that is sold out stays on the menu, and an order for it is refused.

InStock
In stock.
LowStock
Running low.
OutOfStock
Sold out; it stays on the menu but cannot be ordered.
portionsobject[]

The sizes or servings the product comes in. An order names one of them.

Fields of Portion
idstring · uuid

The portion's id, the one an order names together with the product's id.

namestring

The portion's name, in the menu's language. A product with a single serving usually has one called "Standart"; show the product's name alone then.

pricenumber

The price, in lira, VAT included. For a portion sold by measure it is the price of one pricingUnit, and the portion cannot be ordered through the API.

isDefaultboolean

true for the portion the venue preselects.

caloriesintegernullable

The energy of the portion in kilocalories. null when the venue has not declared it.

weightnumbernullable

The weight or volume printed on the portion, a label to show beside its name, not something the price is worked out from. null when the venue gave none; weightUnit is set whenever this is.

weightUnitstringnullable

The unit of weight. null when there is no weight.

Kilogram
Kilogram
Gram
Gram
Liter
Litre
Milliliter
Millilitre
Deciliter
Decilitre
Piece
Piece
Box
Box
Package
Package
Dozen
Dozen
Portion
Portion
Cup
Cup
Tablespoon
Tablespoon
Teaspoon
Teaspoon
pricingUnitstringnullable

The unit price is quoted per when the portion is sold by measure: Kilogram means the price is that of a kilogram, and the venue weighs out what the guest takes. null for an ordinary portion, whose price is for one serving.

Kilogram
Kilogram
Gram
Gram
Liter
Litre
Milliliter
Millilitre
Deciliter
Decilitre
Piece
Piece
Box
Box
Package
Package
Dozen
Dozen
Portion
Portion
Cup
Cup
Tablespoon
Tablespoon
Teaspoon
Teaspoon
orderableboolean

false when the portion is sold by measure: it can be shown but not ordered through the API, because the amount is weighed at the venue. true otherwise.

campaignobjectnullable

The discount the portion has right now, to show beside price. null when there is none. Worked out on every call, so a happy hour starts and ends on time. Only a plain discount on the portion itself shows here: a percentage or an amount off, with no minimum basket and no coupon, that the venue shows on its menu. Combos, buy two pay for one and the like are taken into account when an order is priced. Every order is priced by the server, so nothing here is sent back with one.

Fields of Campaign
campaignIdstring · uuid

The campaign's id.

namestring

The campaign's name.

badgeTextstringnullable

The short label the venue wants on the badge. null when it set none.

discountedPricenumber

What one unit of the portion costs under the campaign, in lira, VAT included.

endsAtstring · date-timenullable

The moment, in UTC, the campaign's current window ends, for a countdown. null when it has no end.

optionGroupsobject[]

The rules that group some of the extras into choices: "pick one level of cooking". Empty when none of the extras is a choice.

Fields of Option group
idstring · uuid

The group's id, the value of optionGroupId on each of its choices.

namestring

The group's name: what is being chosen.

selectionTypestring

Single when at most one choice may be picked, Multiple when any number may.

Multiple
Any number of choices.
Single
At most one choice.
isRequiredboolean

true when the product cannot be ordered until a choice from the group is picked.

displayOrderinteger

The group's position among the product's groups, lowest first. The groups come already in this order.

extrasobject[]

The extras a guest may add to the product, with their prices. An extra whose optionGroupId is set is a choice in that group.

Fields of Extra
idstring · uuid

The extra's id, the one an order names.

namestring

The extra's name, in the menu's language.

pricenumber

What the extra adds to the price of the portion it is ordered with, in lira, VAT included. Zero for a free extra.

optionGroupIdstring · uuidnullable

The option group the extra is a choice in. null for an extra that is not part of any group, which may be added freely.

removableIngredientsobject[]

The ingredients a guest may ask to leave out of the product.

Fields of Removable ingredient
idstring · uuid

The ingredient's id, the one an order names.

namestring

The ingredient's name, in the menu's language.