Browse endpoints

Typo-tolerante Vorschläge

Leichtgewichtige Vorschlagsliste (nur ID + Name) für Eingabefelder.

GET /v1/ingredients/autocomplete

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
q Required
string (query)
lang
string (query)
Sprach-Code (de | en | es). Default en.
limit
integer (query)
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/ingredients/autocomplete?q=value" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{
  "language" : "string",
  "query" : "string",
  "suggestions" : [
    {
      "ingredientId" : "string",
      "name" : "string"
    }
  ]
}

Anzahl Zutaten-Einträge

Anzahl Zutaten-Einträge

GET /v1/ingredients/count

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/ingredients/count" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{

}

Detail-Lookup — volles Zutaten-Profil

Das vollständige Profil (Allergene, Flavor, Physik, Relationen) als Datenprodukt.

GET /v1/ingredients/{canonicalId}

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
canonicalId Required
string (path)
Kanonische Zutaten-ID.
lang
string (query)
Sprach-Code (de | en | es). Default en.
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/ingredients/canonicalId" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{
  "ingredient" : {
    "allergen_profile" : {
      "dairy" : null,
      "egg" : null,
      "fish" : null,
      "fodmap" : null,
      "gluten" : null,
      "histamine" : null,
      "lactose" : null,
      "pancreas" : null,
      "peanut" : null,
      "sesame" : null,
      "shellfish" : null,
      "soy" : null,
      "sulfite" : null,
      "treeNut" : null
    },
    "allowed_units" : [
      "string"
    ],
    "animal_source" : [
      "string"
    ],
    "category" : "string",
    "density" : 0,
    "flavor_profile" : {

    },
    "id" : "string",
    "ingredient_relationships" : {
      "functionallySimilarTo" : null,
      "oftenUsedWith" : null,
      "pairsWellWith" : null,
      "sameFamilyAs" : null,
      "substitutesPartially" : null,
      "substitutesWell" : null
    },
    "name" : "string",
    "piece_weight" : 0,
    "subcategory" : "string",
    "synonyms" : [
      "string"
    ]
  },
  "ingredientId" : "string",
  "language" : "string"
}

Vorkommende Kategorien

Vorkommende Kategorien

GET /v1/meta/categories

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/meta/categories" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{
  "categories" : [
    "string"
  ]
}

Unterstützte Sprach-Codes

Unterstützte Sprach-Codes

GET /v1/meta/languages

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/meta/languages" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{
  "languages" : [
    "de",
    "en",
    "es"
  ]
}

Verfügbare Einheiten (lokalisiert)

Verfügbare Einheiten (lokalisiert)

GET /v1/meta/units

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
lang
string (query)
Sprach-Code (de | en | es). Default en.
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/meta/units" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{
  "language" : "string",
  "units" : [
    {
      "id" : "teaspoon",
      "name" : "Teelöffel",
      "precision" : "weight",
      "shortcut" : "TL"
    }
  ]
}

Zutatenliste über alle 14 Domänen prüfen

Bewertet eine Zutatenliste über alle Unverträglichkeits-Domänen. Mit `concerns` (z. B. `["gluten","histamine"]`) kommen klare Urteile zurück: `compatible | caution | incompatible | uncertain`. Ohne Mengenangabe wird mit 100 g gerechnet (`amountAssumed = true`).

POST /v1/compatibility/check

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
Curl example
curl 
  -X POST "https://api.foodoracle.app/v1/compatibility/check" 
  -H "Authorization: Bearer fo_live_..." 
  -H "Content-Type: application/json" 
  -d '{"concerns":["string"],"items":[null]}'
Response 200 OK
{
  "concerns" : [
    {
      "concern" : "string",
      "risk" : "string",
      "verdict" : "compatible"
    }
  ],
  "evaluation" : {

  },
  "items" : [
    {
      "amountAssumed" : true,
      "grams" : 0,
      "ingredientId" : "string"
    }
  ],
  "unresolved" : [
    {
      "ingredientId" : "string",
      "reason" : "string"
    }
  ]
}

Bis zu 100 Compatibility-Checks in einem Request (Credits = Anzahl × 5)

Führt bis zu 100 einzelne Compatibility-Checks synchron in einem Request aus. Jedes Element entspricht einem Aufruf von `/v1/compatibility/check`; `concerns` auf Top-Ebene gilt als Default für alle Elemente und wird von Element-`concerns` überstimmt. Die Ergebnisse kommen in Anfrage-Reihenfolge (`index`); Fehler eines Elements (z. B. unbekannte Concerns) betreffen nur dieses Element (`error` statt `result`), unbekannte Zutaten stehen wie beim Einzel-Check in `unresolved`. Leere Batches und mehr als 100 Checks werden mit 400 abgelehnt (`EMPTY_BATCH` / `BATCH_TOO_LARGE`). Abgerechnet werden Anzahl Checks × 5 Credits (M2-Gewicht); für das Rate-Limit zählt der Batch als ein Request.

POST /v1/compatibility/check/batch

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
Curl example
curl 
  -X POST "https://api.foodoracle.app/v1/compatibility/check/batch" 
  -H "Authorization: Bearer fo_live_..." 
  -H "Content-Type: application/json" 
  -d '{"checks":[{"concerns":null}],"concerns":["string"]}'
Response 200 OK
{
  "results" : [
    {
      "error" : {
        "code" : null,
        "message" : null
      },
      "index" : 0,
      "result" : null
    }
  ]
}

Diät-Prüfung (vegan/vegetarian/pescetarian/porkFree)

Diät-Prüfung (vegan/vegetarian/pescetarian/porkFree)

POST /v1/compatibility/diet

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
Curl example
curl 
  -X POST "https://api.foodoracle.app/v1/compatibility/diet" 
  -H "Authorization: Bearer fo_live_..." 
  -H "Content-Type: application/json" 
  -d '{"ingredientIds":["string"],"diet":"vegan"}'
Response 200 OK
{
  "diet" : "string",
  "uncertain" : [
    "string"
  ],
  "unresolved" : [
    "string"
  ],
  "verdict" : "compatible",
  "violations" : [
    {
      "ingredientId" : "string",
      "sources" : [
        "string"
      ]
    }
  ]
}

FODMAP-Bewertung inkl. sicherer Portionsgrößen

FODMAP-Bewertung inkl. sicherer Portionsgrößen

POST /v1/compatibility/fodmap

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
Curl example
curl 
  -X POST "https://api.foodoracle.app/v1/compatibility/fodmap" 
  -H "Authorization: Bearer fo_live_..." 
  -H "Content-Type: application/json" 
  -d '{"items":[{"amount":0,"ingredientId":"string","unit":"string"}]}'
Response 200 OK
{
  "ingredients" : [
    {
      "ingredientId" : "string",
      "profile" : {
        "confidence" : null,
        "fodmapGroups" : null,
        "fodmapLevel" : null,
        "processed" : null,
        "safeServingGrams" : null
      }
    }
  ],
  "items" : [
    {
      "amountAssumed" : true,
      "grams" : 0,
      "ingredientId" : "string"
    }
  ],
  "result" : {
    "dominantGroups" : [
      "string"
    ],
    "hasUnknown" : true,
    "level" : "none"
  },
  "unresolved" : [
    {
      "ingredientId" : "string",
      "reason" : "string"
    }
  ]
}

Histamin-Bewertung inkl. DAO-Effekt & Schwellenwerten

Histamin-Bewertung inkl. DAO-Effekt & Schwellenwerten

POST /v1/compatibility/histamine

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
Curl example
curl 
  -X POST "https://api.foodoracle.app/v1/compatibility/histamine" 
  -H "Authorization: Bearer fo_live_..." 
  -H "Content-Type: application/json" 
  -d '{"items":[{"ingredientId":"string","unit":"string","amount":0}]}'
Response 200 OK
{
  "ingredients" : [
    {
      "ingredientId" : "string",
      "profile" : {
        "aged" : null,
        "confidence" : null,
        "daoEffect" : null,
        "fermented" : null,
        "histamineContent" : null,
        "liberator" : null,
        "thresholdGrams" : null
      }
    }
  ],
  "items" : [
    {
      "amountAssumed" : true,
      "grams" : 0,
      "ingredientId" : "string"
    }
  ],
  "result" : {
    "containsAged" : true,
    "containsFermented" : true,
    "containsLiberators" : true,
    "hasUnknown" : true,
    "risk" : "none",
    "topContributors" : [
      "string"
    ]
  },
  "unresolved" : [
    {
      "ingredientId" : "string",
      "reason" : "string"
    }
  ]
}

Allergen-/Unverträglichkeitsprofil einer Zutat

Das 14-Dimensionen-Profil inkl. Histamin, FODMAP und Pankreas.

GET /v1/ingredients/{canonicalId}/allergens

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
canonicalId Required
string (path)
Kanonische Zutaten-ID.
lang
string (query)
Sprach-Code (de | en | es). Default en.
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/ingredients/canonicalId/allergens" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{
  "allergenProfile" : {
    "dairy" : {
      "confidence" : "low",
      "crossContactRisk" : "string",
      "processed" : true,
      "thresholdGrams" : 0
    },
    "egg" : {
      "confidence" : "low",
      "crossContactRisk" : "string",
      "processed" : true,
      "thresholdGrams" : 0
    },
    "fish" : {
      "confidence" : "low",
      "crossContactRisk" : "string",
      "processed" : true,
      "thresholdGrams" : 0
    },
    "fodmap" : {
      "confidence" : "low",
      "fodmapGroups" : [
        null
      ],
      "fodmapLevel" : "none",
      "processed" : true,
      "safeServingGrams" : 0
    },
    "gluten" : {
      "confidence" : "low",
      "crossContactRisk" : "string",
      "processed" : true,
      "thresholdGrams" : 0
    },
    "histamine" : {
      "aged" : true,
      "confidence" : "low",
      "daoEffect" : "none",
      "fermented" : true,
      "histamineContent" : "high",
      "liberator" : "no",
      "thresholdGrams" : 0
    },
    "lactose" : {
      "confidence" : "low",
      "crossContactRisk" : "string",
      "processed" : true,
      "thresholdGrams" : 0
    },
    "pancreas" : {
      "alcohol" : true,
      "confidence" : "low",
      "fatLoad" : "string",
      "fiberLoad" : "string",
      "friedOrGreasy" : true,
      "pancreasRisk" : "low",
      "safeServingGrams" : 0
    },
    "peanut" : {
      "confidence" : "low",
      "crossContactRisk" : "string",
      "processed" : true,
      "thresholdGrams" : 0
    },
    "sesame" : {
      "confidence" : "low",
      "crossContactRisk" : "string",
      "processed" : true,
      "thresholdGrams" : 0
    },
    "shellfish" : {
      "confidence" : "low",
      "crossContactRisk" : "string",
      "processed" : true,
      "thresholdGrams" : 0
    },
    "soy" : {
      "confidence" : "low",
      "crossContactRisk" : "string",
      "processed" : true,
      "thresholdGrams" : 0
    },
    "sulfite" : {
      "confidence" : "low",
      "crossContactRisk" : "string",
      "processed" : true,
      "thresholdGrams" : 0
    },
    "treeNut" : {
      "confidence" : "low",
      "crossContactRisk" : "string",
      "processed" : true,
      "thresholdGrams" : 0
    }
  },
  "ingredientId" : "string",
  "name" : "string"
}

Flavor-Pairings + häufige Ko-Nutzung

Flavor-Pairings + häufige Ko-Nutzung

GET /v1/ingredients/{canonicalId}/pairings

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
canonicalId Required
string (path)
Kanonische Zutaten-ID.
lang
string (query)
Sprach-Code (de | en | es). Default en.
limit
integer (query)
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/ingredients/canonicalId/pairings" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{
  "ingredientId" : "string",
  "language" : "string",
  "oftenUsedWith" : [
    {
      "ingredientId" : "string",
      "name" : "string"
    }
  ],
  "pairsWellWith" : [
    {
      "ingredientId" : "string",
      "name" : "string",
      "reasons" : [
        "string"
      ],
      "score" : 0
    }
  ]
}

Ähnliche Zutaten (Familie + funktional)

Ähnliche Zutaten (Familie + funktional)

GET /v1/ingredients/{canonicalId}/similar

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
canonicalId Required
string (path)
Kanonische Zutaten-ID.
lang
string (query)
Sprach-Code (de | en | es). Default en.
limit
integer (query)
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/ingredients/canonicalId/similar" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{
  "ingredientId" : "string",
  "language" : "string",
  "similar" : [
    {
      "ingredientId" : "string",
      "name" : "string",
      "reasons" : [
        "string"
      ],
      "relation" : "sameFamily",
      "score" : 0
    }
  ]
}

Substitutions-Vorschläge (Food-Graph)

Substitutions-Vorschläge (Food-Graph)

GET /v1/ingredients/{canonicalId}/substitutes

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
canonicalId Required
string (path)
Kanonische Zutaten-ID.
lang
string (query)
Sprach-Code (de | en | es). Default en.
limit
integer (query)
includePartial
boolean (query)
Teilweise geeignete Substitute mit einbeziehen (Default true).
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/ingredients/canonicalId/substitutes" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{
  "ingredientId" : "string",
  "language" : "string",
  "substitutes" : [
    {
      "ingredientId" : "string",
      "name" : "string",
      "quality" : "well",
      "reasons" : [
        "string"
      ],
      "score" : 0
    }
  ]
}

Einheiten-Umrechnung einer Zutat

Gewicht ↔ Volumen ↔ Stück über Dichte und Stückgewicht.

POST /v1/units/convert

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
Curl example
curl 
  -X POST "https://api.foodoracle.app/v1/units/convert" 
  -H "Authorization: Bearer fo_live_..." 
  -H "Content-Type: application/json" 
  -d '{"toUnit":"gram","amount":1,"ingredientId":"butter","fromUnit":"tablespoon"}'
Response 200 OK
{
  "amount" : 0,
  "estimated" : true,
  "fromUnit" : "string",
  "ingredientId" : "string",
  "result" : 0,
  "toUnit" : "string"
}

Nährwerte einer Zutat (pro 100 g)

Mit `amount` + `unit` wird zusätzlich die umgerechnete Menge geliefert.

GET /v1/ingredients/{canonicalId}/nutrition

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
canonicalId Required
string (path)
Kanonische Zutaten-ID.
amount
number (query)
unit
string (query)
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/ingredients/canonicalId/nutrition" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{
  "basis" : "per100g",
  "computed" : {
    "amount" : 0,
    "estimated" : true,
    "grams" : 0,
    "nutrients" : {
      "id" : "string",
      "lipids" : null,
      "macros" : null,
      "minerals" : null,
      "vitamins" : null
    },
    "unit" : "string"
  },
  "ingredientId" : "string",
  "nutrients" : {
    "id" : "string",
    "lipids" : {
      "cholesterol" : null,
      "monounsaturatedFat" : null,
      "polyunsaturatedFat" : null,
      "saturatedFat" : null
    },
    "macros" : {
      "alcohol" : null,
      "carbohydrates" : null,
      "energyKcal" : null,
      "energyKilojoule" : null,
      "fat" : null,
      "fibre" : null,
      "protein" : null,
      "salt" : null,
      "sugar" : null,
      "water" : null
    },
    "minerals" : {
      "calcium" : null,
      "iron" : null,
      "magnesium" : null,
      "phosphorus" : null,
      "potassium" : null,
      "sodium" : null,
      "zinc" : null
    },
    "vitamins" : {
      "a" : null,
      "b1" : null,
      "b2" : null,
      "b6" : null,
      "c" : null,
      "k" : null,
      "niacin" : null,
      "pantothenicAcid" : null
    }
  }
}

Nährwertanalyse einer Zutatenliste

Summe und — bei `servings` — Werte pro Portion. Nicht auflösbare Positionen unter `unresolved`.

POST /v1/nutrition/analyze

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
Curl example
curl 
  -X POST "https://api.foodoracle.app/v1/nutrition/analyze" 
  -H "Authorization: Bearer fo_live_..." 
  -H "Content-Type: application/json" 
  -d '{"servings":0,"items":[{"amount":0,"unit":"string","ingredientId":"string"}]}'
Response 200 OK
{
  "items" : [
    {
      "amount" : 0,
      "estimated" : true,
      "grams" : 0,
      "ingredientId" : "string",
      "nutrients" : {
        "id" : null,
        "lipids" : null,
        "macros" : null,
        "minerals" : null,
        "vitamins" : null
      },
      "unit" : "string"
    }
  ],
  "perServing" : {
    "id" : "string",
    "lipids" : null,
    "macros" : null,
    "minerals" : null,
    "vitamins" : null
  },
  "servings" : 0,
  "total" : {
    "id" : "string",
    "lipids" : {
      "cholesterol" : null,
      "monounsaturatedFat" : null,
      "polyunsaturatedFat" : null,
      "saturatedFat" : null
    },
    "macros" : {
      "alcohol" : null,
      "carbohydrates" : null,
      "energyKcal" : null,
      "energyKilojoule" : null,
      "fat" : null,
      "fibre" : null,
      "protein" : null,
      "salt" : null,
      "sugar" : null,
      "water" : null
    },
    "minerals" : {
      "calcium" : null,
      "iron" : null,
      "magnesium" : null,
      "phosphorus" : null,
      "potassium" : null,
      "sodium" : null,
      "zinc" : null
    },
    "vitamins" : {
      "a" : null,
      "b1" : null,
      "b2" : null,
      "b6" : null,
      "c" : null,
      "k" : null,
      "niacin" : null,
      "pantothenicAcid" : null
    }
  },
  "unresolved" : [
    {
      "ingredientId" : "string",
      "reason" : "string"
    }
  ]
}

Eigener API-Verbrauch pro Tag/Funktion

Eigener API-Verbrauch pro Tag/Funktion

GET /v1/account/usage

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
days
integer (query)
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/account/usage" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{
  "customerId" : "uuid",
  "days" : 0,
  "modules" : [
    "string"
  ],
  "plan" : "string",
  "usage" : [
    {
      "avgLatencyMs" : 0,
      "day" : "2026-07-07",
      "errors" : 0,
      "function" : "string",
      "module" : "string",
      "requests" : 0,
      "units" : 0
    }
  ]
}

Healthcheck

Healthcheck

GET /health

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
Curl example
curl 
  -X GET "https://api.foodoracle.app/health" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{

}

Healthcheck (versioniert)

Healthcheck (versioniert)

GET /v1/health

Parameters

Parameter Type Description
Authorization Required
String
API-Key als Bearer, z. B. `fo_live_…`.
Curl example
curl 
  -X GET "https://api.foodoracle.app/v1/health" 
  -H "Authorization: Bearer fo_live_..."
Response 200 OK
{

}