Документация по API НФЛ
Создавайте соответствующие требованиям этикетки с информацией о пищевой ценности, управляйте рецептами и программно извлекайте данные о пищевой ценности. Сегодня для каждого соответствующего требованиям аккаунта работают две вещи: встраивание живой метки и экспорт, отрисованный на сервереREST API для доступа к ресурсам находится на стадии раннего доступа в рамках бизнес-плана.
API принимает и возвращает только 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...'
Ограничения скорости
Для обеспечения справедливости и стабильности: 60 запросов в минуту за клавишу; количество отрисовок меток дополнительно ограничено. 5 одновременных; объем тела запроса составляет 1 МБ. При превышении лимита вы получите ошибку. 429 с Retry-After заголовок.
Пример ответа
HTTP/2 429 Too Many Requests
Retry-After: 22
{ "error": { "code": "rate_limited",
"message": "Try again in 22 seconds." } }
Встраивание живой метки Доступно сейчас
Отображение постоянно актуальной метки на любом веб-сайте без ключа API. Включение встраивания в рецепт в генераторе (строка рецепта → Встроить) чтобы получить его публичный токен.
Высота тега скрипта изменяется автоматически; обновите рецепт в NFL, и все страницы, отображающие встроенный контент, обновятся. Для тарифных планов Professional и Business отключение встроенного контента немедленно аннулирует токен.
Определение: тег скрипта
<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 (152 формата в 114 странах) выдают вычисленные значения 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."
}
}
Получение доступа
Для встраивания не требуется ключ; его можно включить для каждого рецепта отдельно (Professional+). Ранний доступ к REST API включен в стоимость. Бизнес план: электронная почта support@nutritionfactlabel.com Ключи будут отправлены на ваш электронный адрес, указанный в учетной записи, и предоставлены в течение одного рабочего дня.
Не хватает нужной вам конечной точки? Сообщите нам. Партнеры, предоставляющие ранний доступ, определяют дальнейшую стратегию развития.
Переход на бизнес-версию