# NutriScan | Label Scan Platebase Label Scan reads a nutrition-label photo and returns normalized nutrition facts, detected allergens, and product details in one call. ## API Information - **Model Slug:** nutriscan-label-scan - **Branded URL:** https://www.eachlabs.ai/platebase/nutriscan/nutriscan-label-scan - **Provider:** Platebase - **Category:** Text to Text - **Output Type:** text - **Status:** active - **Version:** 0.0.1 - **Base Cost:** Cost = credits used × $0.01. - **Estimated Processing Time:** 60 seconds - **Last Updated:** 2026-07-27 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/nutriscan-label-scan ## Pricing - **Charge Type:** dynamic - **Pricing Details:** Cost = credits used × $0.01. ### Pricing Rules | Condition | Pricing | | --- | --- | | Rule 1 | Cost = credits used × $0.01. | ## Input Schema No input parameters documented. ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "nutriscan-label-scan", "input": {} }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "text", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview **NutriScan | Label Scan Overview** NutriScan | Label Scan by byterise is a specialized **text-to-text** model designed to read nutrition-label images and return structured, normalized nutrition data. It focuses on turning unstructured packaging information into machine-readable fields such as calories, macronutrients, micronutrients, detected allergens, and product metadata. Hosted on each::labs, NutriScan | Label Scan helps developers and product teams automate label processing for food, beverage, and CPG workflows. While public documentation on the underlying architecture is limited, the model’s primary differentiator is its focus on nutrition labels and allergen detection rather than general OCR. This makes it especially useful for nutrition apps, grocery platforms, and compliance tools that need consistent, normalized nutrition facts from varied label formats. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.