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.
This endpoint creates a scan record you can fetch later via GET /v1/scans/<scan_id>.
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_idso you can fetch it later viaGET /v1/scans/<scan_id>. - Trial image preview uses
/v1/images/<scan_id>?key=test_123so 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 key422— Invalid request body / missing image429— Rate limited5xx— Server error