Skip to content

Documentação da API da NFL

Gere rótulos nutricionais compatíveis, gerencie receitas e extraia dados nutricionais de forma programática. Duas coisas funcionam hoje para todas as contas qualificadas: incorporação de rótulo ao vivo e exportações renderizadas pelo servidorA API de recursos REST está em acesso antecipado no plano Business.

A API aceita e retorna apenas JSON (os endpoints de renderização de rótulos retornam o arquivo binário).

Definição

https://nutritionfactlabel.com/api/v1

endpoint da API

Todos os recursos REST residem sob uma única URL base versionada. Alterações que quebram a compatibilidade são sempre lançadas sob um novo prefixo de versão. Durante o acesso antecipado, o e-mail de boas-vindas confirma a URL base ativa para suas chaves.

Resumo dos padrões de URL de recursos

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

Autenticação

Autentique cada solicitação com sua chave secreta no Authorization Cabeçalho. As chaves são específicas para sua conta e contêm os direitos do seu plano: os mesmos controles do lado do servidor que o aplicativo.

Mantenha as chaves em segredo. Nunca envie chaves no código do lado do cliente; utilize um proxy através do seu backend. Em caso de vazamento de chaves, entre em contato imediatamente com o suporte.

Exemplo de solicitação

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

Limites de taxa

Para manter as coisas justas e estáveis: 60 solicitações por minuto por chave; os rótulos são adicionalmente limitados a 5 simultâneos; corpos de requisição de 1 MB. Acima desse limite, você obtém 429 com um Retry-After cabeçalho.

Exemplo de resposta

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

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

Incorporação de rótulo ao vivo Disponível agora

Exiba um rótulo sempre atualizado em qualquer site, sem chave de API. Habilite a incorporação em uma receita no Gerador (linha da receita → Incorporar) para obter seu token público.

A tag de script ajusta automaticamente sua altura; atualize a receita na NFL e todas as páginas que exibem o conteúdo incorporado serão atualizadas. Planos Profissional e Empresarial; desativar o conteúdo incorporado remove o token imediatamente.

Definição: tag de script

<script src="https://nutritionfactlabel.com/embed.js"
        data-label="YOUR_EMBED_TOKEN"
        data-width="290"></script>

Alternativa: iframe

<iframe
  src="https://nutritionfactlabel.com/embed/TOKEN"
  width="290" height="560" frameborder="0"
  title="Nutrition Facts"></iframe>

Exportações de etiquetas Disponível agora

SVG / PNG / PDF renderizados no servidor pelo mesmo mecanismo do aplicativo, com regras do plano (formatos, tipos de arquivo, marca d'água) aplicadas desde o início. Chame-o diretamente com seu token de sessão até que as chaves da API estejam disponíveis para o público em geral. Retorna o arquivo binário ou 403 fora do seu plano.

Duas observações sobre a paridade com a exportação no aplicativo. O aplicativo é renderizado no navegador, portanto, use este endpoint quando precisar de um rótulo gerado sem um. E jpg atualmente retorna bytes PNG, enquanto eps e ai São formatos exclusivos para exportação que o endpoint não suporta.

Definição

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

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

Receitas Acesso antecipado · Negócios

O objetivo principal: ingredientes, porções e um label_format (152 formatos em 114 países) produzem o calculado labelInformações nutricionais arredondadas de acordo com a jurisdição, lista de ingredientes, alérgenos.

Principais atributos: id, name, servings, serving_weight_g, label_format, label (calculado), embed_enabled, carimbos de data/hora.

Definição

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

Exemplo de resposta

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

Ingredientes Acesso antecipado · Negócios

Ingredientes personalizados com informações nutricionais por 100 g, espécies de alérgenos e custo opcional, idênticos aos criados no aplicativo, pesquisáveis no Gerador. Endereço dos ingredientes segundo o USDA. usda:{fdc_id}; definir "archived": true arquivar (excluído das listas por padrão).

Definição

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

Exemplo de solicitação

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

Análise nutricional Acesso antecipado · Negócios

Análise única sem salvar a receita. Retorna o mesmo. label objeto mais claims: as alegações de conteúdo nutricional para as quais os valores se qualificam (por exemplo "boa fonte de fibras") com suas citações do CFR. Os nomes não correspondentes são comparados com o USDA.

Exemplo de solicitação

POST /v1/analyze

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

Erros

Códigos HTTP convencionais; os corpos de erro são JSON com código de máquina estável e mensagem legível. 400 entrada malformada · 401 tecla inválida · 403 fora do seu plano · 404 Não encontrado / não é seu · 429 Taxa limitada · 500 Tente novamente com um intervalo de espera.

Exemplo de resposta

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

Como obter acesso

O recurso incorporado não precisa de chave; habilite-o por receita (Profissional+). O acesso antecipado à API REST está incluído. Negócios plano: e-mail support@nutritionfactlabel.com A partir do seu e-mail de acesso à conta, as chaves serão disponibilizadas em até um dia útil.

Não encontrou o endpoint que precisa? Conte para nós. Os parceiros de acesso antecipado definem o roteiro.

Faça upgrade para a versão Business