Skip to content

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