Integração

API do PedidoFácil Encartes

Se o seu sistema já tem os produtos e os preços, ele manda a lista para cá por HTTP e recebe de volta a etiqueta, o encarte ou o cardápio prontos, com um link de impressão. Ninguém digita nada duas vezes.

Endereço base: https://encarte.pedidofacil.cloud/api/v1
Formato: JSON na ida e na volta, sempre UTF-8.
Só por HTTPS. Chamadas em HTTP não são atendidas.

1. Token de integração

Toda chamada precisa de um token. Você cria em Integrações, dentro da sua conta, escolhendo quais módulos ele pode usar. O token aparece uma única vez: guardamos apenas um resumo criptográfico dele, então não há como recuperá-lo depois — se perder, revogue e crie outro.

Mande-o no cabeçalho Authorization de toda requisição:

Authorization: Bearer pfk_0123456789abcdef...

Para conferir se está funcionando:

curl -H "Authorization: Bearer SEU_TOKEN" \
     https://encarte.pedidofacil.cloud/api/v1/conta

2. Criar um lote de etiquetas

É o caminho mais usado: você manda os produtos e recebe o lote criado, já com o link de impressão que pode ser aberto direto pelo seu sistema, sem login.

POST https://encarte.pedidofacil.cloud/api/v1/etiquetas
Authorization: Bearer SEU_TOKEN
Content-Type: application/json

{
  "titulo": "Ofertas da semana",
  "tamanho": "media",
  "estilo": "oferta",
  "termica": true,
  "itens": [
    { "nome": "Arroz Tio João 5kg", "preco": "24,90", "preco_de": "29,90", "qtd": 2 },
    { "nome": "Feijão Carioca 1kg", "preco": "7,49", "unidade": "kg" },
    {
      "nome": "Creme Gelado 1L",
      "preco": "7,00",
      "codigo": "7891000315507",
      "fabricacao": "30/09/2026",
      "validade": "30/10/2026",
      "opcoes_titulo": "Sabor",
      "opcoes": ["Morango", "Uva", "Limão"],
      "textos": ["Conservar refrigerado"]
    }
  ]
}

Resposta (201 Created):

{
  "dados": {
    "id": 128,
    "titulo": "Ofertas da semana",
    "tamanho": "media",
    "url_impressao": "https://encarte.pedidofacil.cloud/i/5f1c...",
    "url_editor": "https://encarte.pedidofacil.cloud/etiquetas/128/editar",
    "total_etiquetas": 4,
    "por_pagina": 12,
    "documento": { ... }
  }
}
Sobre o arquivo impresso. A arte é montada no navegador, então a API devolve o link de impressão, e não um PDF pronto. Abra url_impressao numa aba (ou num iframe) e mande imprimir: a página já sai no tamanho exato da etiqueta e tem o botão de salvar em PDF.

3. Campos de cada item

CampoTipoPara que serve
nometexto (60)Nome do produto. Obrigatório na prática.
detalhetexto (30)Complemento, como "pacote 500 g".
precotexto ou númeroAceita "24,90", "24.90" ou 24.9.
preco_detexto ou númeroPreço antigo, sai riscado.
unidadetexto (8)Ex.: kg, 100g, un.
qtdnúmero 1–100Quantas cópias dessa etiqueta imprimir.
fabricacao, validadetexto (12)Datas em dd/mm/aaaa.
lotetexto (16)Número do lote.
codigotexto (24)Código de barras. 13 números = EAN-13, 8 = EAN-8, com letras = Code 128.
textoslista (2)Linhas livres, ex.: "Conservar refrigerado".
opcoeslista (12)Lista com quadradinho para marcar à caneta (sabores, tamanhos).
opcoes_titulotexto (16)Nome da lista, ex.: "Sabor".

Campos fora dessa lista são ignorados, e valores fora do permitido são cortados para o limite — a API nunca grava um documento que a tela não saiba desenhar.

4. Endpoints

MétodoCaminhoEscopoO que faz
GET/api/v1/conta—Confere o token e devolve os dados da conta.
GET/api/v1/etiquetasetiquetasLista os lotes. Aceita ?pagina= e ?por_pagina=.
POST/api/v1/etiquetasetiquetasCria um lote.
GET/api/v1/etiquetas/{id}etiquetasDevolve um lote com o documento inteiro.
POST/api/v1/etiquetas/{id}etiquetasAtualiza. Só os campos enviados mudam.
DELETE/api/v1/etiquetas/{id}etiquetasApaga o lote.
Encartes — mesma lógica, a lista se chama produtos
GET/api/v1/encartesencartesLista os encartes.
POST/api/v1/encartesencartesCria. Com "publicar": true já devolve o link público.
GET/api/v1/encartes/{id}encartesDevolve um encarte.
POST/api/v1/encartes/{id}encartesAtualiza.
DELETE/api/v1/encartes/{id}encartesApaga.
Cardápios — a lista se chama secoes, cada seção tem itens
GET/api/v1/cardapioscardapiosLista os cardápios.
POST/api/v1/cardapioscardapiosCria. Com "publicar": true devolve o link do cardápio digital.
GET/api/v1/cardapios/{id}cardapiosDevolve um cardápio.
POST/api/v1/cardapios/{id}cardapiosAtualiza.
DELETE/api/v1/cardapios/{id}cardapiosApaga.
TV indoor — por enquanto só consulta
GET/api/v1/tv/telastvTelas cadastradas, com quem está online agora.
GET/api/v1/tv/slidestvO que está na fila de exibição.

4.1. Encarte e cardápio

Seguem o mesmo padrão das etiquetas; muda só o nome da lista.

POST https://encarte.pedidofacil.cloud/api/v1/encartes
{
  "titulo": "Ofertas da semana",
  "formato": "A4",
  "tema": "supermercado",
  "publicar": true,
  "produtos": [
    { "nome": "Arroz 5kg", "preco": "24,90", "preco_de": "29,90", "emoji": "\ud83c\udf5a" },
    { "nome": "Feijão 1kg", "preco": "7,49" }
  ]
}
POST https://encarte.pedidofacil.cloud/api/v1/cardapios
{
  "titulo": "Cardápio da casa",
  "publicar": true,
  "secoes": [
    {
      "nome": "Lanches",
      "itens": [ { "nome": "X-Burger", "descricao": "Pão, carne e queijo", "preco": "22,00" } ]
    }
  ]
}

Com "publicar": true, a resposta traz url_publica — o endereço que você pode mandar no WhatsApp ou colocar num QR Code. Sem isso, o campo volta null e a arte fica só na conta.

5. Erros

Todo erro vem no mesmo formato, com um código estável — trate pelo código, não pelo texto:

{ "erro": { "codigo": "sem_escopo", "mensagem": "Este token não tem permissão para o módulo \"etiquetas\"." } }
HTTPCódigoO que houve
400json_invalidoO corpo não era um JSON válido.
401sem_tokenFaltou o cabeçalho Authorization.
401token_invalidoToken errado, expirado ou revogado.
402assinatura_inativaA assinatura da conta não está ativa (só afeta gravação).
403sem_escopoO token não tem o módulo liberado.
403token_somente_leituraO token só pode consultar.
403ip_bloqueadoChamada veio de um IP fora da lista do token.
404nao_encontradoO registro não existe nessa conta.
422itens_obrigatoriosFaltou a lista itens.
429limite_excedidoPassou do limite de chamadas por minuto.

6. Limites e segurança

  • 300 chamadas por minuto por token e 600 por endereço de IP.
  • O token pode ser marcado como somente leitura e pode ser preso a uma lista de IPs.
  • Cada token vê apenas os dados da conta dele — não há como alcançar outra conta.
  • Toda chamada fica registrada com horário, IP, rota, resposta e tempo, e aparece em Integrações.
  • O token é guardado como resumo criptográfico (SHA-256); quem tiver acesso ao banco não consegue usá-lo.
  • A revogação vale na hora, sem esperar cache.

7. Exemplo em PHP

$ch = curl_init('https://encarte.pedidofacil.cloud/api/v1/etiquetas');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $token,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'titulo' => 'Ofertas de hoje',
        'termica' => true,
        'itens' => $produtos, // [['nome' => ..., 'preco' => ...], ...]
    ], JSON_UNESCAPED_UNICODE),
]);
$resposta = json_decode(curl_exec($ch), true);
$linkImpressao = $resposta['dados']['url_impressao'];

Precisa de um módulo que ainda não está aqui?

Na TV, hoje a API só consulta telas e a fila. Mandar arte para a TV depende da imagem já montada, que por ora é gerada no navegador — se isso for importante para o seu caso, fale com a gente que avaliamos o caminho.

Falar com o suporte

Nesta página

  1. Token de integração
  2. Criar um lote de etiquetas
  3. Campos de cada item
  4. Endpoints
  5. Erros
  6. Limites e segurança
  7. Exemplo em PHP

Criar meu token