Menu calories

POST /v1/food/menu · $0.01 a call

Send a photo of a menu. A vision model reads every dish as printed (name, description, section and price) and estimates what a typical serving contains. Each component is matched to our reference nutrition database, and the dish gets a typical calorie figure with a low to high range, since restaurant portions vary.

For calorie trackers, restaurant ordering, diet coaches.

Request

Send the photo as image (multipart), image_base64 or image_url, as described in the overview. These fields go alongside it:

FieldTypeDescription
contextstring, up to 500 charactersAnything about the restaurant or the diner, e.g. "this is a fast food chain" or "large portions".

Photo tips. Photograph the whole menu page flat and in focus, without glare. One page per call; up to 20 dishes are read.

curl https://truelens.keronlabs.com/v1/food/menu \
  -H "Authorization: Bearer $TRUELENS_KEY" \
  -F image=@lunch.jpg \
  -F context="example"

Response

FieldDescription
summaryOne line, e.g. "14 dishes, 380 to 1,450 kcal".
is_menufalse when the photo is not a menu; dishes is then empty.
dishes[].nameThe dish name as printed.
dishes[].description, section, priceAs printed, or null when the menu does not show them.
dishes[].calorieslow, typical and high estimates for one serving. The range is 0.8x to 1.25x the typical estimate.
dishes[].nutritioncalories, protein_g, carbs_g, fat_g, fiber_g for a typical serving.
dishes[].componentsWhat the estimate assumes: each ingredient with its grams and calories.
dishes[].confidence0 to 1. Short names with no description score lower.
notesWarnings, e.g. when only some dishes could be read.

Example

Output of this API’s own code on a sample photo. Values will differ for your photos.

{
  "metadata": {
    "id": "req_9cf4da08fe7f40dab71a",
    "engine": "food/menu",
    "status": "success",
    "cached": false,
    "credits_used": 1,
    "created_at": "2026-10-19T09:30:00.000Z",
    "processing_ms": 3400
  },
  "summary": "3 dishes, 127 to 249 kcal",
  "is_menu": true,
  "dishes": [
    {
      "name": "Beetroot",
      "description": "Feta, Pine-nut",
      "section": "6 Course",
      "price": null,
      "calories": {
        "low": 100,
        "typical": 127,
        "high": 160
      },
      "nutrition": {
        "calories": 127,
        "protein_g": 5.2,
        "carbs_g": 4.8,
        "fat_g": 10.4,
        "fiber_g": 2.9
      },
      "components": [
        {
          "name": "roasted beetroot",
          "grams": 70,
          "calories": 34
        },
        {
          "name": "feta",
          "grams": 20,
          "calories": 53
        },
        {
          "name": "pine nuts",
          "grams": 6,
          "calories": 40
        }
      ],
      "confidence": 0.6
    },
    {
      "name": "Venison",
      "description": "Carrot, Tarragon, Mushroom",
      "section": "6 Course",
      "price": null,
      "calories": {
        "low": 170,
        "typical": 209,
        "high": 260
      },
      "nutrition": {
        "calories": 209,
        "protein_g": 22.3,
        "carbs_g": 8.5,
        "fat_g": 9.4,
        "fiber_g": 1.9
      },
      "components": [
        {
          "name": "venison loin",
          "grams": 70,
          "calories": 105
        },
        {
          "name": "carrot",
          "grams": 40,
          "calories": 39
        },
        {
          "name": "mushrooms",
          "grams": 30,
          "calories": 8
        },
        {
          "name": "butter",
          "grams": 8,
          "calories": 57
        }
      ],
      "confidence": 0.6
    },
    {
      "name": "Apple",
      "description": "Puff Pastry, Caramel, Vanilla",
      "section": "6 Course",
      "price": null,
      "calories": {
        "low": 200,
        "typical": 249,
        "high": 310
      },
      "nutrition": {
        "calories": 249,
        "protein_g": 2.5,
        "carbs_g": 34.5,
        "fat_g": 11.6,
        "fiber_g": 1.7
      },
      "components": [
        {
          "name": "apple",
          "grams": 60,
          "calories": 39
        },
        {
          "name": "puff pastry",
          "grams": 30,
          "calories": 167
        },
        {
          "name": "caramel sauce",
          "grams": 20,
          "calories": 43
        }
      ],
      "confidence": 0.5
    }
  ],
  "notes": []
}