Documentation de l'API NFL
Générez des étiquettes nutritionnelles conformes, gérez les recettes et extrayez les données nutritionnelles par programmation. Deux choses fonctionnent aujourd'hui pour chaque compte éligible : Intégration d'étiquettes en direct et exportations rendues côté serveurL'API de ressources REST est disponible en accès anticipé avec le plan Business.
L'API n'accepte et ne renvoie que du JSON (les points de terminaison de rendu d'étiquettes renvoient le fichier binaire).
Définition
https://nutritionfactlabel.com/api/v1
point de terminaison de l'API
Toutes les ressources REST sont accessibles via une URL de base versionnée. Les modifications importantes sont systématiquement déployées sous un nouveau préfixe de version. Lors de votre accès anticipé, votre e-mail de bienvenue confirme l'URL de base active pour vos clés.
Résumé des modèles d'URL de ressources
/v1/recipes
/v1/recipes/{RECIPE_ID}
/v1/recipes/{RECIPE_ID}/label.{svg|png|pdf}
/v1/ingredients
/v1/ingredients/{INGREDIENT_ID}
/v1/analyze
Authentification
Authentifiez chaque requête avec votre clé secrète dans le Authorization En-tête. Les clés sont liées à votre compte et incluent les droits de votre forfait : les mêmes barrières côté serveur que l’application.
Gardez vos clés secrètes. Ne les transmettez jamais dans le code côté client ; utilisez un proxy via votre serveur. En cas de fuite de clé, veuillez la faire remplacer immédiatement par le support technique.
Exemple de requête
curl https://nutritionfactlabel.com/api/v1/recipes \ -H 'Authorization: Bearer nfl_live_9f30c2...'
Limites de débit
Pour que les choses restent justes et stables : 60 requêtes par minute par touche ; le rendu des étiquettes est également limité à 5 simultanés; les corps de requêtes de 1 Mo. Au-delà d'une limite, vous obtenez 429 avec un Retry-After en-tête.
Exemple de réponse
HTTP/2 429 Too Many Requests
Retry-After: 22
{ "error": { "code": "rate_limited",
"message": "Try again in 22 seconds." } }
Intégration d'étiquettes en direct Disponible dès maintenant
Affichez une étiquette toujours à jour sur n'importe quel site web, sans clé API. Activez l'intégration sur une recette dans le générateur (ligne de recette → Intégrer) pour obtenir son jeton public.
La hauteur de la balise script s'adapte automatiquement ; la recette est mise à jour sur NFL et chaque page affichant le contenu intégré est mise à jour. Abonnements Professionnel et Business : la désactivation du contenu intégré entraîne la suppression immédiate du jeton.
Définition : balise script
<script src="https://nutritionfactlabel.com/embed.js"
data-label="YOUR_EMBED_TOKEN"
data-width="290"></script>
Alternative : iframe
<iframe src="https://nutritionfactlabel.com/embed/TOKEN" width="290" height="560" frameborder="0" title="Nutrition Facts"></iframe>
Exportations d'étiquettes Disponible dès maintenant
SVG / PNG / PDF rendus côté serveur par le même moteur que l'application, avec application des règles du plan (formats, types de fichiers, filigrane) dès le départ. Appelez-le directement avec votre jeton de session jusqu'à ce que les clés API soient disponibles pour tous. Renvoie le fichier binaire, ou 403 hors de votre plan.
Deux remarques concernant la parité avec l'exportation intégrée à l'application. L'application s'affiche dans le navigateur ; utilisez donc ce point de terminaison lorsque vous avez besoin d'une étiquette générée sans celle-ci. jpg renvoie actuellement des octets PNG, tandis que eps et ai Ce sont des formats d'exportation uniquement que le point de terminaison ne prend pas en charge.
Définition
POST /functions/v1/export-label
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json
{
"fileType": "pdf",
"data": { ...label state },
"extra": { }
}
Recettes Accès anticipé · Entreprises
L'élément central : ingrédients, portions et un label_format (152 formats répartis dans 114 pays) produisent les résultats calculés label: valeurs nutritionnelles arrondies selon la juridiction, liste des ingrédients, allergènes.
Attributs clés : id, name, servings, serving_weight_g, label_format, label (calculé), embed_enabled, horodatages.
Définition
GET /v1/recipes
POST /v1/recipes
GET /v1/recipes/{ID}
PUT /v1/recipes/{ID}
DELETE /v1/recipes/{ID}
GET /v1/recipes/{ID}/label.pdf
Exemple de réponse
{
"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
}
Ingrédients Accès anticipé · Entreprises
Ingrédients personnalisés avec informations nutritionnelles pour 100 g, allergènes et coût optionnel, identiques à ceux créés dans l'application, consultables dans le générateur. Adresse des ingrédients USDA : usda:{fdc_id}; ensemble "archived": true archiver (exclu des listes par défaut).
Définition
GET /v1/ingredients
POST /v1/ingredients
GET /v1/ingredients/{ID}
PUT /v1/ingredients/{ID}
DELETE /v1/ingredients/{ID}
Exemple de requête
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"
}
Analyse nutritionnelle Accès anticipé · Entreprises
Analyse ponctuelle sans enregistrement de recette. Renvoie le même résultat. label objet plus claims: les allégations relatives à la teneur en nutriments auxquelles les valeurs se qualifient (par exemple « bonne source de fibres ») avec leurs références au CFR. Les noms non appariés sont comparés à ceux de l'USDA.
Exemple de requête
POST /v1/analyze
{
"label_format": "standard",
"servings": 12,
"serving_weight_g": 28,
"ingredients": [
{ "ingredient_id": "usda:173410", "grams": 120 },
{ "name": "brown sugar", "grams": 80 }
]
}
Erreurs
Codes HTTP conventionnels ; les corps d’erreur sont au format JSON, avec un code machine stable et un message humain. 400 entrée malformée · 401 mauvaise clé · 403 hors de votre plan · 404 introuvable / ne vous appartient pas · 429 taux limité · 500 Réessayer avec un délai de récupération.
Exemple de réponse
{
"error": {
"code": "plan_format_not_allowed",
"message": "The 'eu-1169' label format
requires the Professional plan."
}
}
Accès
L'intégration ne nécessite aucune clé ; activez-la pour chaque recette (Professionnel+). L'accès anticipé à l'API REST est inclus. Entreprise plan : courriel support@nutritionfactlabel.com Les clés et l'adresse e-mail figurant sur votre compte sont fournies sous un jour ouvrable.
Vous ne trouvez pas le point de terminaison dont vous avez besoin ? Faites-le nous savoir. Nos partenaires ayant accès en avant-première définissent la feuille de route.
Passez à la version Business