NFL APIドキュメント
準拠した栄養ラベルを表示し、レシピを管理し、栄養データをプログラムで取得します。今日、対象となるすべてのアカウントで機能する 2 つのこと: ライブラベル埋め込み そして サーバーレンダリングされたエクスポートRESTリソースAPIは、ビジネスプランで早期アクセス版として提供されています。
APIはJSON形式のみを受け付け、JSON形式のみを返します(ラベルレンダリングエンドポイントはバイナリファイルを返します)。
意味
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...'
レート制限
公平性と安定性を保つために: 1分あたり60件のリクエスト キーごとに、ラベルはさらに制限されます 5同時接続リクエストボディは1MBです。制限を超えると 429 と共に Retry-After ヘッダ。
回答例
HTTP/2 429 Too Many Requests
Retry-After: 22
{ "error": { "code": "rate_limited",
"message": "Try again in 22 seconds." } }
ライブラベル埋め込み 発売中
API キーなしで、任意の Web サイトに常に最新のラベルを表示します。ジェネレーターのレシピで埋め込みを有効にします (レシピ行 → 埋め込み) 公開トークンを取得するため。
スクリプトタグは高さを自動調整します。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 あなたの計画外です。
アプリ内エクスポートとの互換性に関する注意点が2つあります。アプリはブラウザでレンダリングされるため、ラベルなしでラベルを生成する必要がある場合は、このエンドポイントを使用してください。 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
}
材料 早期アクセス・ビジネス
アプリで作成されたものと同じ、100gあたりの栄養成分、アレルゲン種、オプションのコストを含むカスタム成分をジェネレーターで検索できます。USDA成分住所は 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 アカウントのメールアドレス宛に、1営業日以内にキーが発行されます。
必要なエンドポイントが見つかりませんか?ぜひお知らせください。早期アクセスパートナーがロードマップを主導します。
ビジネスプランにアップグレード