Venues
Get the menu
The venue's categories and products, with their portions, prices, extras, option groups, removable ingredients, allergens and stock status.
/public/v1/venues/{venueId}/menuEverything 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 parameterrequiredThe venue's id, from the list of venues.
langstringQuery parameterThe language of the menu's text, for example en. Leave it out for the venue's default language.
Accept-LanguagestringHeaderThe 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-MatchstringHeaderThe ETag of the copy you already hold. While it is still the current version the answer is 304 Not Modified with no body.
Responses
The venue's menu, with its ETag.
ETagThe 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-ControlAlways private, no-cache: keep a copy, but ask the server whether it is still current before using it.
The menu has not changed since the version named in If-None-Match. There is no body; the copy you hold is current.
ETagThe 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-ControlAlways private, no-cache: keep a copy, but ask the server whether it is still current before using it.
The X-Api-Key header is missing (PUBLIC_API_KEY_MISSING), or the key is invalid or has been revoked (PUBLIC_API_KEY_INVALID).
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.
The venue does not exist, or this key cannot reach it (PUBLIC_API_VENUE_NOT_FOUND).
The key's budget of about 120 requests a minute is spent; wait Retry-After seconds.
Retry-AfterSeconds 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 · uuidThe venue the menu belongs to.
languagestringnullableThe 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.
currencystringThe 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 · uuidThe category's id.
namestringThe category's name, in the menu's language.
photoUrlstringnullableThe address of the category's picture. null when it has none.
displayOrderintegerThe 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 · uuidThe product's id, the one an order names.
namestringThe product's name, in the menu's language.
descriptionstringnullableA line about the product, in the menu's language. null when the venue wrote none.
contentsstringnullableWhat the product is made of, in the menu's language. null when the venue wrote none.
photoUrlstringnullableThe address of the product's picture. null when it has none.
displayOrderintegerThe product's position in its category, lowest first. The products come already in this order.
vatPercentintegerThe 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.
containsAlcoholbooleantrue when the product contains alcohol. Show a label for it.
containsPorkDerivativesbooleantrue when the product contains pork or something made from it. Show a label for it.
acceptsMealCardbooleantrue 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
stockStatusstringnullableWhether 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 · uuidThe portion's id, the one an order names together with the product's id.
namestringThe 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.
pricenumberThe 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.
isDefaultbooleantrue for the portion the venue preselects.
caloriesintegernullableThe energy of the portion in kilocalories. null when the venue has not declared it.
weightnumbernullableThe 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.
weightUnitstringnullableThe 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
pricingUnitstringnullableThe 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
orderablebooleanfalse 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.
campaignobjectnullableThe 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 · uuidThe campaign's id.
namestringThe campaign's name.
badgeTextstringnullableThe short label the venue wants on the badge. null when it set none.
discountedPricenumberWhat one unit of the portion costs under the campaign, in lira, VAT included.
endsAtstring · date-timenullableThe 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 · uuidThe group's id, the value of optionGroupId on each of its choices.
namestringThe group's name: what is being chosen.
selectionTypestringSingle when at most one choice may be picked, Multiple when any number may.
Multiple- Any number of choices.
Single- At most one choice.
isRequiredbooleantrue when the product cannot be ordered until a choice from the group is picked.
displayOrderintegerThe 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 · uuidThe extra's id, the one an order names.
namestringThe extra's name, in the menu's language.
pricenumberWhat the extra adds to the price of the portion it is ordered with, in lira, VAT included. Zero for a free extra.
optionGroupIdstring · uuidnullableThe 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 · uuidThe ingredient's id, the one an order names.
namestringThe ingredient's name, in the menu's language.