Nutrition Label Parse

Upload a nutrition facts label image and get structured macros back — calories, protein, carbs, fat, and key nutrients with a confidence score.

Endpoint

POST /v1/parse/nutrition-label

Requests are made to:

Base URL

https://api.nutritionsignals.com

Authentication

All requests require an API key sent as a Bearer token in the Authorization header.

Authorization header

Authorization: Bearer YOUR_API_KEY

Request

Send a multipart form upload:

  • image — the label image file (required)
  • country — optional (e.g. DE, US)
curl -sS -X POST "https://api.nutritionsignals.com/v1/parse/nutrition-label" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -F "image=@/path/to/label.jpg" \
  -F "country=DE" | jq

Try it

Try it
POST /v1/parse/nutrition-label
Tip: Use test_123 to try quickly, or get a real key in Authentication.
Calling:
https://api.nutritionsignals.com/v1/parse/nutrition-label
Note: On this docs site, the URL won’t be saved in your browser (prevents “sticky” wrong URLs). On localhost it is saved.
Notes
  • Best results: clear, straight-on label photo with good lighting.
  • Response includes scan_id so you can fetch it later via GET /v1/scans/<scan_id>.
  • Trial image preview uses /v1/images/<scan_id>?key=test_123 so the browser can load it.
Response
{}

Response

Example response:

Example response

{
  "scan_id": "NdVVx3yqQ8C4nJ77Uh2X",
  "id": "NdVVx3yqQ8C4nJ77Uh2X",
  "kind": "nutrition_label_parse",
  "revision": "2026-01-18.1",

  "search_key": "syrup 20g",
  "title": "Syrup",
  "brand": "no_brand",
  "ingredients_text": "Tapioca Starch, Water, ... Maple Syrup Flavoring",

  "serving": { "amount": 20, "unit": "g" },
  "calories_kcal_total": 50,
  "protein_g": 0,
  "carbs_g": 12,
  "fat_g": 0,

  "match": {
    "confidence": 0.765,
    "source": "nutrition_label",
    "normalized_from": "syrup 20g",
    "country": null
  },

  "image_hash": "d96668c5...c4b0",
  "image_object_path": "scans/labels/1768754201668_...cc8d.webp",
  "image_url": "https://api.nutritionsignals.com/v1/images/scans/labels/1768754201668_...cc8d.webp",

  "created_at": "2026-01-18T17:43:50.000Z",
  "updated_at": "2026-01-18T17:43:50.070Z"
}

Errors

  • 401 — Missing/invalid API key
  • 422 — Invalid request body / missing image
  • 429 — Rate limited
  • 5xx — Server error

Was this page helpful?