Skip to content

NFL-API-Dokumentation

Erstellen Sie normkonforme Nährwertkennzeichnungen, verwalten Sie Rezepte und rufen Sie Nährwertdaten programmgesteuert ab. Zwei Dinge funktionieren heute für jedes qualifizierte Konto: die Live-Label-Einbettung Und Servergerenderte ExporteDie REST-Ressourcen-API befindet sich im Rahmen des Business-Plans in der frühen Zugriffsphase.

Die API akzeptiert und gibt ausschließlich JSON zurück (die Label-Render-Endpunkte geben die Binärdatei zurück).

Definition

https://nutritionfactlabel.com/api/v1

API-Endpunkt

Alle REST-Ressourcen befinden sich unter einer versionierten Basis-URL. Änderungen, die die Kompatibilität beeinträchtigen, werden ausschließlich unter einem neuen Versionspräfix veröffentlicht. Während der Early-Access-Phase bestätigt Ihre Willkommens-E-Mail die für Ihre Schlüssel aktive Basis-URL.

Zusammenfassung der Ressourcen-URL-Muster

/v1/recipes
/v1/recipes/{RECIPE_ID}
/v1/recipes/{RECIPE_ID}/label.{svg|png|pdf}
/v1/ingredients
/v1/ingredients/{INGREDIENT_ID}
/v1/analyze

Authentifizierung

Authentifizieren Sie jede Anfrage mit Ihrem geheimen Schlüssel im Authorization Header. Die Schlüssel sind auf Ihr Konto beschränkt und beinhalten die Berechtigungen Ihres Tarifs: dieselben serverseitigen Zugangsdaten wie die App.

Schlüssel geheim halten. Senden Sie diese niemals im clientseitigen Code aus; verwenden Sie stattdessen einen Proxy über Ihr Backend. Melden Sie einen durchgesickerten Schlüssel umgehend dem Support.

Beispielanfrage

curl https://nutritionfactlabel.com/api/v1/recipes \
  -H 'Authorization: Bearer nfl_live_9f30c2...'

Ratenbegrenzungen

Um Fairness und Stabilität zu gewährleisten: 60 Anfragen pro Minute pro Taste; Label-Renderings zusätzlich begrenzt auf 5 gleichzeitig; Anfragetexte mit 1 MB. Ab einem bestimmten Limit erhalten Sie 429 mit einem Retry-After Kopfzeile.

Beispielantwort

HTTP/2 429 Too Many Requests
Retry-After: 22

{ "error": { "code": "rate_limited",
  "message": "Try again in 22 seconds." } }

Live-Label-Einbettung Jetzt erhältlich

Zeigen Sie auf jeder Website ein stets aktuelles Label an – kein API-Schlüssel erforderlich. Aktivieren Sie die Einbettung in einem Rezept im Generator (Rezeptzeile → Einbetten) um sein öffentliches Token zu erhalten.

Das Skript-Tag passt seine Höhe automatisch an; aktualisieren Sie das Rezept in NFL, und jede Seite, die die Einbettung anzeigt, wird aktualisiert. Bei Professional- und Business-Tarifen wird das Token sofort gelöscht, wenn die Einbettung deaktiviert wird.

Definition: Script-Tag

<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>

Etikettenexporte Jetzt erhältlich

SVG-, PNG- und PDF-Dateien werden serverseitig von derselben Engine wie die App gerendert, wobei die Planregeln (Formate, Dateitypen, Wasserzeichen) beim Zugriff durchgesetzt werden. Rufen Sie die Funktion direkt mit Ihrem Sitzungstoken auf, bis API-Schlüssel allgemein verfügbar sind. Gibt die Binärdatei zurück. 403 außerhalb Ihres Plans.

Zwei Anmerkungen zur Kompatibilität mit dem In-App-Export. Die App wird im Browser gerendert. Verwenden Sie diesen Endpunkt daher, wenn Sie ein Label benötigen, das ohne eines erstellt wird. jpg Gibt aktuell PNG-Bytes zurück, während eps Und ai sind Formate, die nur exportiert werden und vom Endpunkt nicht unterstützt werden.

Definition

POST /functions/v1/export-label
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json

{
  "fileType": "pdf",
  "data": { ...label state },
  "extra": { }
}

Rezepte Früher Zugang · Unternehmen

Das Kernobjekt: Zutaten, Portionen und ein label_format (152 Formate in 114 Ländern) erzeugen das berechnete labelNährwertangaben gerundet gemäß den jeweiligen Rechtsordnungen, Zutatenliste, Allergene.

Wichtigste Merkmale: id, name, servings, serving_weight_g, label_format, label (berechnet), embed_enabled, Zeitstempel.

Definition

GET    /v1/recipes
POST   /v1/recipes
GET    /v1/recipes/{ID}
PUT    /v1/recipes/{ID}
DELETE /v1/recipes/{ID}
GET    /v1/recipes/{ID}/label.pdf

Beispielantwort

{
  "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
}

Zutaten Früher Zugang · Unternehmen

Benutzerdefinierte Zutaten mit Nährwertangaben pro 100 g, Allergeninformationen und optionalen Kosten, identisch mit den in der App erstellten, können im Generator gesucht werden. USDA-Zutatenadressen werden wie folgt angegeben: usda:{fdc_id}; Satz "archived": true zum Archivieren (standardmäßig von Listen ausgeschlossen).

Definition

GET    /v1/ingredients
POST   /v1/ingredients
GET    /v1/ingredients/{ID}
PUT    /v1/ingredients/{ID}
DELETE /v1/ingredients/{ID}

Beispielanfrage

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"
}

Nährwertanalyse Früher Zugang · Unternehmen

Einmalige Analyse ohne Speichern eines Rezepts. Gibt dasselbe Ergebnis zurück. label Objekt plus claims: die Angaben zum Nährstoffgehalt, für die die Werte gelten (z. B. "gute Ballaststoffquelle") mit ihren CFR-Zitaten. Nicht übereinstimmende Namen werden mit dem USDA abgeglichen.

Beispielanfrage

POST /v1/analyze

{
  "label_format": "standard",
  "servings": 12,
  "serving_weight_g": 28,
  "ingredients": [
    { "ingredient_id": "usda:173410", "grams": 120 },
    { "name": "brown sugar", "grams": 80 }
  ]
}

Fehler

Konventionelle HTTP-Codes; Fehlermeldungen sind im JSON-Format mit einem stabilen Maschinencode und einer lesbaren Fehlermeldung. 400 fehlerhafte Eingabe · 401 falscher Schlüssel · 403 außerhalb Ihres Plans · 404 Nicht gefunden / Nicht Ihr Eintrag · 429 Ratenbegrenzung · 500 Wiederholungsversuch mit Backoff.

Beispielantwort

{
  "error": {
    "code": "plan_format_not_allowed",
    "message": "The 'eu-1169' label format
      requires the Professional plan."
  }
}

Zugang erhalten

Die Einbettung benötigt keinen Schlüssel; aktivieren Sie sie pro Rezept (Professional+). Der frühzeitige Zugriff auf die REST-API ist enthalten. Geschäft Plan: E-Mail support@nutritionfactlabel.com Die E-Mail-Adresse und die Schlüssel für Ihr Kundenkonto werden innerhalb eines Werktages bereitgestellt.

Fehlt Ihnen ein benötigter Endpunkt? Teilen Sie es uns mit. Unsere Early-Access-Partner bestimmen die Roadmap.

Upgrade auf Business