Dishes
curl --request POST \
--url https://api.everybite.com/graphql \
--header 'Authorization: <api-key>'import requests
url = "https://api.everybite.com/graphql"
headers = {"Authorization": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: '<api-key>'}};
fetch('https://api.everybite.com/graphql', 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://api.everybite.com/graphql",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: <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://api.everybite.com/graphql"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.everybite.com/graphql")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.everybite.com/graphql")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_bodyEndpoints
Dishes
Get detailed dish information including nutrition and allergens
POST
/
graphql
Dishes
curl --request POST \
--url https://api.everybite.com/graphql \
--header 'Authorization: <api-key>'import requests
url = "https://api.everybite.com/graphql"
headers = {"Authorization": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: '<api-key>'}};
fetch('https://api.everybite.com/graphql', 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://api.everybite.com/graphql",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: <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://api.everybite.com/graphql"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.everybite.com/graphql")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.everybite.com/graphql")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_bodyWhen a guest taps on a menu item, they expect the full picture: complete nutrition facts, allergen warnings, and dietary badges. The
dish query returns a single dish by ID with all the fields you need to build a rich detail view.
Query
query GetDish {
dish(id: "DISH_ID") {
id
chainProductId
name
description
imageUrl
nutrition {
caloriesTotal
caloriesFromFat
fatTotal
fatSaturated
fatTrans
cholesterol
sodium
dietaryFiber
carbohydrates
sugar
protein
vitaminA
vitaminC
calcium
iron
}
servingSize
servingSizeInGrams
createdAt
updatedAt
isCustomizable
cuisines {
id
name
parent {
id
name
}
}
allergens {
id
name
description
confidence
}
diets {
id
name
description
confidence
}
preparationTypes {
id
name
confidence
}
styles {
id
name
description
confidence
}
addedIngredients {
id
name
brand
description
supplier
amountGrams
containsEgg
containsFish
containsMilk
containsSesame
containsShellfish
containsWheat
containsPeanut
containsSoy
containsTreeNut
}
menu {
id
name
}
originalCategoryName
}
}
This query requires an API key scoped to your chain in the
Authorization header. Optionally include X-Session-ID for analytics; you do not pass chain or session in the GraphQL query itself.Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | ID | Yes | Opaque EveryBite dish ID returned by the API. |
Response Types
Dish
type Dish {
id: ID!
chainProductId: String
name: String!
description: String
imageUrl: String
servingSize: String
servingSizeInGrams: Float
createdAt: DateTime
updatedAt: DateTime
"""
Grouped nutrition information for this dish.
"""
nutrition: DishNutrition
"""
Controls whether this dish should be displayed in the widget.
"""
displayOnWidget: Boolean
"""
Indicates whether the dish has any ingredients and can be customized.
"""
isCustomizable: Boolean!
"""
A list of dish cuisines.
"""
cuisines: [Cuisine]!
"""
A list of dish allergens.
"""
allergens: [Allergen]!
"""
A list of dish diets.
"""
diets: [Diet]!
"""
A list of dish preparation types.
"""
preparationTypes: [PreparationType]!
"""
A list of dish styles.
"""
styles: [Style]!
"""
A list of added ingredients.
"""
addedIngredients: [Ingredient]!
"""
Dish menu.
"""
menu: Menu
"""
Original category name from the menu (denormalized for display/filtering).
"""
originalCategoryName: String
}
DishNutrition
type DishNutrition {
caloriesTotal: Float
caloriesFromFat: Float
fatTotal: Float
fatSaturated: Float
fatTrans: Float
cholesterol: Float
sodium: Float
carbohydrates: Float
dietaryFiber: Float
sugar: Float
protein: Float
vitaminA: Float
vitaminC: Float
calcium: Float
iron: Float
}
Example
query DishExample {
dish(id: "DISH_ID") {
id
name
description
originalCategoryName
nutrition {
caloriesTotal
protein
fatTotal
}
allergens {
id
name
confidence
}
diets {
id
name
}
}
}
{
"data": {
"dish": {
"id": "dish_001",
"chainProductId": "olo_prod_78901",
"name": "Seasonal Harvest Salad",
"description": "Mixed greens, candied pecans, goat cheese, dried cranberries, citrus vinaigrette",
"originalCategoryName": "Salads",
"nutrition": {
"caloriesTotal": 400,
"protein": 25,
"fatTotal": 18
},
"allergens": [
{ "id": "allergen_dairy", "name": "Dairy", "confidence": 1.0 },
{ "id": "allergen_tree_nut", "name": "Tree Nut", "confidence": 1.0 }
],
"diets": [
{ "id": "diet_vegetarian", "name": "Vegetarian" }
]
}
}
}
Was this page helpful?
⌘I

