Get Foods (Menu Items)
curl --request GET \
--url https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods \
--header 'Access-Token: <api-key>'import requests
url = "https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods"
headers = {"Access-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'Access-Token': '<api-key>'}};
fetch('https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Access-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Access-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods")
.header("Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Access-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": false,
"error": "çok fazla istek",
"message": "Çok fazla istek. Lütfen 30 saniye bekleyin."
}
{
"status": false,
"error": "yetkisiz erişim"
}
Foods
Get Foods (Menu Items)
Retrieve all menu items with modifiers
GET
/
foods
/
get-foods
Get Foods (Menu Items)
curl --request GET \
--url https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods \
--header 'Access-Token: <api-key>'import requests
url = "https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods"
headers = {"Access-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'Access-Token': '<api-key>'}};
fetch('https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Access-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Access-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods")
.header("Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Access-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": false,
"error": "çok fazla istek",
"message": "Çok fazla istek. Lütfen 30 saniye bekleyin."
}
{
"status": false,
"error": "yetkisiz erişim"
}
Rate Limited: This endpoint has a 30-second cooldown between requests.
Overview
Retrieves all menu items across accessible restaurants with complete details including categories, prices, and modifier groups.Headers
string
required
Your API access token
Response
boolean
true if successfularray
Array of food/menu item objects
Show Food Object
Show Food Object
integer
Unique identifier for the menu item
string
Display name of the food item
object
string
Product description
string | null
Full URL to product image
string
Branch UUID this item belongs to
number
Base price in smallest currency unit (cents/kuruş)
array
Array of modifier groups
Show Modifier Group
Show Modifier Group
string
Modifier group name (e.g., “Sos Seçimi”)
string
Selection type:
"tekli" (single choice) or "coklu" (multiple choice)string
Operation type: always
"ekleme" (addition)string
Requirement:
"zorunlu" (required) or "opsiyonel" (optional)Examples
curl -X GET 'https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods' \
-H 'Access-Token: your-access-token'
const response = await fetch(
'https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods',
{
headers: {
'Access-Token': 'your-access-token'
}
}
);
const data = await response.json();
import requests
response = requests.get(
'https://www.xn--dkkango-n2a.com/api/integrations/foods/get-foods',
headers={'Access-Token': 'your-access-token'}
)
data = response.json()
Response Example
{
"status": true,
"data": [
{
"food_id": 1,
"name": "Beef Burrito",
"category": {
"id": 1,
"name": "Burritos",
"sort": 0
},
"desc": "Delicious beef burrito with fresh ingredients",
"image": "https://example.com/images/beef-burrito.jpg",
"restaurant_id": "0ca1d2b1-a199-4960-8617-83a659d890c8",
"sort": 0,
"price": 675,
"add_substract": [
{
"ilave_basligi": "Sos Seçimi",
"secim_turu": "coklu",
"ekleme_cikarma": "ekleme",
"zorunlu_turu": "opsiyonel",
"ilave_opsiyonlari": [
{
"name": "Ballı Hardal",
"price": 10
},
{
"name": "Balzamik Hardal",
"price": 15
}
]
}
]
}
]
}
Understanding Modifiers
Selection Types
- Tekli (Single)
- Çoklu (Multiple)
Customer can select only one option from the group.Example: Size selection (Small, Medium, Large)
{
"secim_turu": "tekli",
"ilave_opsiyonlari": [
{"name": "Small", "price": 0},
{"name": "Medium", "price": 50},
{"name": "Large", "price": 100}
]
}
Customer can select multiple options from the group.Example: Toppings (Lettuce, Tomato, Onion)
{
"secim_turu": "coklu",
"ilave_opsiyonlari": [
{"name": "Lettuce", "price": 0},
{"name": "Tomato", "price": 5},
{"name": "Onion", "price": 5}
]
}
Requirement Types
- Zorunlu (Required)
- Opsiyonel (Optional)
Customer must select at least one option.
{
"zorunlu_turu": "zorunlu",
"ilave_basligi": "Protein Choice"
}
Customer can skip this modifier group.
{
"zorunlu_turu": "opsiyonel",
"ilave_basligi": "Extra Toppings"
}
Caching Strategy
Due to the 30-second rate limit, cache this data locally in your POS system.
1
Initial Fetch
Call
/get-foods when your POS starts or when user manually refreshes.2
Store Locally
Cache the complete menu structure in memory or local database.
3
Periodic Refresh
Refresh menu every 30-60 minutes or on manual request.
4
Real-time Updates
Use
/foods/status-active and /foods/status-passive to toggle availability without full refresh.Error Responses
{
"status": false,
"error": "çok fazla istek",
"message": "Çok fazla istek. Lütfen 30 saniye bekleyin."
}
{
"status": false,
"error": "yetkisiz erişim"
}
Related Endpoints
Activate Food
Make menu item available
Deactivate Food
Mark item as unavailable
Price Calculation Example
function calculateItemTotal(food, selectedModifiers) {
let total = food.price;
// Add modifier prices
for (const modifier of selectedModifiers) {
for (const option of modifier.selected_options) {
total += option.price;
}
}
return total;
}
// Example usage
const food = { price: 675 }; // Beef Burrito
const modifiers = [
{
selected_options: [
{ name: "Ballı Hardal", price: 10 },
{ name: "Balzamik Hardal", price: 15 }
]
}
];
const total = calculateItemTotal(food, modifiers);
// Result: 675 + 10 + 15 = 700 (₺7.00)
Always convert prices to human-readable format: divide by 100 for display (e.g.,
675 → ₺6.75).⌘I