NFL API 文档
定义
https://nutritionfactlabel.com/api/v1
API 端点
所有 REST 资源都使用同一个版本化的基本 URL。重大变更只会以新的版本号前缀发布。在抢先体验期间,您的欢迎邮件会确认用于您密钥的基本 URL。
资源 URL 模式概述
/v1/recipes
/v1/recipes/{RECIPE_ID}
/v1/recipes/{RECIPE_ID}/label.{svg|png|pdf}
/v1/ingredients
/v1/ingredients/{INGREDIENT_ID}
/v1/analyze
验证
使用您的私钥对每个请求进行身份验证 Authorization 头部。密钥的作用域限定在您的帐户范围内,并包含您套餐的权限:与应用程序相同的服务器端网关。
务必妥善保管钥匙。 切勿在客户端代码中发布密钥;请通过后端代理。泄露的密钥应立即通过技术支持进行轮换。
示例请求
curl https://nutritionfactlabel.com/api/v1/recipes \ -H 'Authorization: Bearer nfl_live_9f30c2...'
速率限制
为了保持公平稳定: 每分钟 60 个请求 每个键;标签渲染额外限制为 5个并发请求的正文大小为 1 MB。超过限制后,您将获得 429 与一个 Retry-After 标题。
示例回复
HTTP/2 429 Too Many Requests
Retry-After: 22
{ "error": { "code": "rate_limited",
"message": "Try again in 22 seconds." } }
实时标签嵌入 现已上市
在任何网站上显示始终更新的标签,无需 API 密钥。在生成器中的食谱中启用嵌入功能(食谱行 → 嵌入)获取其公共代币。
脚本标签会自动调整高度;更新 NFL 中的食谱,所有显示嵌入内容的页面都会更新。专业版和商业版套餐;禁用嵌入内容会立即删除令牌。
定义:脚本标签
<script src="https://nutritionfactlabel.com/embed.js"
data-label="YOUR_EMBED_TOKEN"
data-width="290"></script>
替代方案:iframe
<iframe src="https://nutritionfactlabel.com/embed/TOKEN" width="290" height="560" frameborder="0" title="Nutrition Facts"></iframe>
标签出口 现已上市
SVG/PNG/PDF 由与应用程序相同的引擎在服务器端渲染,并强制执行计划规则(格式、文件类型、水印)。在 API 密钥正式发布之前,您可以使用会话令牌直接调用它。返回二进制文件,或 403 超出你的计划。
关于与应用内导出功能一致的两点说明。应用在浏览器中渲染,因此如果您需要生成一个没有标签的标签,请使用此接口。 jpg 目前返回PNG字节,而 eps 和 ai 这些是仅供导出的格式,该端点不支持。
定义
POST /functions/v1/export-label
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json
{
"fileType": "pdf",
"data": { ...label state },
"extra": { }
}
食谱 提前体验 · 商业
核心对象:配料、份量和 label_format (涵盖 114 个国家/地区的 152 种格式)生成计算结果 label:营养成分按司法管辖区四舍五入,配料表,过敏原。
主要属性: id, name, servings, serving_weight_g, label_format, label (计算得出) embed_enabled时间戳。
定义
GET /v1/recipes
POST /v1/recipes
GET /v1/recipes/{ID}
PUT /v1/recipes/{ID}
DELETE /v1/recipes/{ID}
GET /v1/recipes/{ID}/label.pdf
示例回复
{
"id": "rcp_2m4k9q",
"name": "Chocolate Chip Cookies",
"servings": 12,
"serving_weight_g": 28,
"label_format": "standard",
"label": {
"calories": 140,
"total_fat_g": 7,
"allergens": ["wheat","milk","soy"],
...
},
"embed_enabled": false
}
原料 提前体验 · 商业
可自定义配料,包括每 100 克营养成分、过敏原种类和可选成本,与应用程序中创建的配料相同,可在生成器中搜索。美国农业部配料地址为: usda:{fdc_id}; 放 "archived": true 归档(默认情况下已从列表中排除)。
定义
GET /v1/ingredients
POST /v1/ingredients
GET /v1/ingredients/{ID}
PUT /v1/ingredients/{ID}
DELETE /v1/ingredients/{ID}
示例请求
POST /v1/ingredients
{
"name": "Organic almond flour",
"nutrients_per_100g": {
"calories": 571, "total_fat_g": 50,
"protein_g": 21, "dietary_fiber_g": 10
},
"allergens": ["tree_nuts"],
"cost_per_unit": 12.5, "unit": "kg"
}
营养分析 提前体验 · 商业
无需保存配方即可进行一次性分析。返回相同结果。 label 对象加 claims:营养成分声明中所述数值符合要求(例如) “膳食纤维的良好来源”)及其 CFR 引用。未匹配的名称将与 USDA 进行匹配。
示例请求
POST /v1/analyze
{
"label_format": "standard",
"servings": 12,
"serving_weight_g": 28,
"ingredients": [
{ "ingredient_id": "usda:173410", "grams": 120 },
{ "name": "brown sugar", "grams": 80 }
]
}
错误
常规 HTTP 错误代码;错误体是 JSON 格式,包含稳定的机器代码和人类可读的错误信息。 400 输入格式错误 401 密钥错误 403 超出你的计划范围 404 未找到/不是您的 429 限价 500 使用退避策略重试。
示例回复
{
"error": {
"code": "plan_format_not_allowed",
"message": "The 'eu-1169' label format
requires the Professional plan."
}
}
获取访问权限
嵌入功能无需密钥;可按食谱启用(专业版及以上)。REST API 提前访问权限包含在内。 商业 计划:电子邮件 support@nutritionfactlabel.com 您将通过电子邮件收到账户信息,密钥将在一个工作日内发放。
找不到您需要的接口?请告诉我们。早期合作伙伴将指导产品路线图的制定。
升级到商务版