API · Atualizado em 12/10/2026

Compatibilidade com a Blip: comandos e envelopes

Use comandos, mensagens e notificações no formato da Blip na API do Pipe, com Authorization Key, e veja o que é igual, o que muda e o que não existe.

Se você já tem uma integração com a Blip, boa parte dela funciona no Pipe trocando o endereço e a chave. A API aceita o envelope de comando da Blip e entende os caminhos mais usados de tickets, contatos, contexto, agendamentos e relatórios.

Quando usar

  • Para migrar uma integração que hoje chama POST https://{contrato}.http.msging.net/commands.
  • Para manter um cliente HTTP ou SDK que já fala o formato de comandos da Blip.

Pré-requisitos

  • Uma chave de fluxo criada com Compatível com a Blip. Ela traz os escopos padrão mais comandos:executar, contexto:escrever, relatorios:ler e atendentes:escrever. Veja Autenticação e chaves de API.
  • Cada comando exige, além de comandos:executar, o escopo da rota que ele usa.

Rotas

MétodoRotaEscopoO que faz
POST/commandscomandos:executarExecuta um comando no formato da Blip, com resposta completa no envelope
POST/v1/commandscomandos:executarOs mesmos comandos, com erros em HTTP padrão do Pipe
POST/messagesmensagens:escreverEnvia uma mensagem de atendente a um ticket ativo, ou um modelo
POST/notificationsmensagens:lerRegistra uma notificação sobre uma mensagem

As três rotas da raiz ficam no mesmo endereço da API pública (https://http.pipebr.app). Só valem chaves de fluxo ou de roteador, com Bearer ou Key.

Passo a passo: primeiro comando

  1. Monte o cabeçalho Key com o identificador do fluxo e a chave:
KEY=$(printf %s "meu-fluxo:$PIPE_CHAVE" | base64 -w0)
  1. Envie um comando de consulta:
curl -s -X POST https://http.pipebr.app/commands \
  -H "Authorization: Key $KEY" \
  -H "Content-Type: application/json" \
  -d '{"id": "1", "to": "postmaster@desk.msging.net", "method": "get", "uri": "/teams"}'
  1. A resposta traz o envelope completo, com status: "success" e o resource:
{
  "id": "1",
  "from": "postmaster@desk.msging.net",
  "to": "meu-fluxo@msging.net",
  "method": "get",
  "status": "success",
  "type": "application/vnd.lime.collection+json",
  "resource": { "total": 1, "items": [ { "...": "dados da equipe" } ] },
  "metadata": { "#command.uri": "lime://meu-fluxo@msging.net/teams" }
}

O conteúdo de resource segue o formato dos recursos da Blip. Quando falha, a resposta traz status: "failure" e reason com code e description, e o detalhe em português fica em metadata["#pipe.error"].

Códigos de falha

CódigoSignificado
1Comando que existe na tabela do motor mas não é executado por HTTP (no perfil /v1/commands, também URI desconhecida)
62URI que nenhuma rota atende (só em /commands)
63URI atendida, mas com um método que ela não aceita (só em /commands)
64Argumento inválido, como campo desconhecido num filtro
66Não permitido: escopo ausente, conta em somente leitura ou id de envelope repetido com outro conteúdo
67Não encontrado, inclusive tudo que está fora do fluxo da chave

Diferenças entre /commands e /v1/commands

SituaçãoPOST /commands (estilo Blip)POST /v1/commands
Escopo ausenteHTTP 200, failure 66HTTP 403 without_scope
Envelope sem id, method ou uriHTTP 400 sem corpoHTTP 200 com failure 64
Chave da organização401, em Bearer e em KeyVale com Bearer
Chave de roteador e o DeskNão vê os tickets dos serviçosVê o Desk de todos os serviços
Repetição pelo id do envelopeSim, por 24 horasNão

Mensagens e notificações

POST /messages envia texto para o ticket ativo do contato, como mensagem do sistema, ou um modelo aprovado:

curl -s -X POST https://http.pipebr.app/messages \
  -H "Authorization: Key $KEY" \
  -H "Content-Type: application/json" \
  -d '{"id": "msg-1", "to": "5511955550101%40wa.gw.msging.net@desk.msging.net", "type": "text/plain", "content": "Seu pedido saiu para entrega."}'
SituaçãoResposta
AceitaHTTP 202, sem corpo
Recusada por regra (sem ticket ativo, janela fechada, texto acima de 4096, sem escopo, modelo não aprovado)HTTP 200 com notificação failed e reason.code. Nada é enviado
Envelope malformadoHTTP 400
Sem chave ou chave inválidaHTTP 401
Limite excedido (10 por segundo em /messages, 20 em /notifications)HTTP 429 com Retry-After
Bot falando com o cliente fora de ticketHTTP 501

Modelos no formato application/json com type: "template" seguem a mesma regra de mensagens ativas. Mídia por link (media-link) é recusada com 64: use POST /v1/attachments. O id do envelope repetido com o mesmo conteúdo em 24 horas devolve a resposta guardada, sem enviar de novo.

POST /notifications aceita os eventos accepted, dispatched, received, consumed e failed. Ele não altera estado de mensagem no Pipe: o evento de uma mensagem do seu fluxo é aceito (202) e fica só nos registros.

Comandos suportados

Todos exigem comandos:executar, mais o escopo da coluna.

MétodoDestino e URIEscopo
getdesk /tickets, /tickets/{id}conversas:ler
getdesk /tickets/{id}/messages, core /threads/{identity}mensagens:ler
getdesk /tickets/history/metadata, /monitoring/*, /analytics/reports/*relatorios:ler
setdesk /tickets (abrir), /tickets/change-status, /tickets/{id}/close, /tickets/{id}/transfer, /tickets/{id}/change-tagsconversas:escrever
getdesk /teams, /attendance-queues, /rules, /priority-rulesfilas:ler
getdesk /attendantsatendentes:ler
setdesk /attendants/change-statusatendentes:escrever
getdesk /tags, /tags/activeconversas:ler
getdesk /repliesmensagens:ler
get, set, mergecrm ou core /contactscontatos:ler ou contatos:escrever
get, set, deletebuilder ou core /contexts/{identity}/{variável}contatos:ler ou contexto:escrever
get, set, deletescheduler /schedulesmensagens:ler ou mensagens:escrever
getwa.gw /message-templatesmensagens:ler

Escritas em cadastros (/tags, /replies, /attendance-queues, /attendants, /rules, /priority-rules) são recusadas com failure 62 e nada é gravado.

O que não existe como comando

Campanhas da Blip (activecampaign), listas de transmissão (broadcast), event-track, /buckets, /resources, túneis, rastreador de cliques, chaves da conta e os relatórios attendancetime e tags respondem failure 62 ou 1. No Pipe, campanhas têm rota própria: veja Mensagens ativas e campanhas.

Resultado esperado

Sua integração antiga chama o Pipe com o mesmo envelope e recebe respostas no mesmo formato, e você sabe quais comandos precisam ser trocados por rotas /v1.

Problemas comuns

  • 401 na raiz: a chave é da organização, ou o identificador não é o do fluxo dono da chave.
  • HTTP 200 com failure 66: falta comandos:executar ou o escopo da rota, ou a conta está em somente leitura. Crie uma chave com Compatível com a Blip.
  • failure 67 para um ticket que existe: ele é de outro fluxo, ou a chave é de roteador e pediu o Desk de um serviço.
  • failure 62: a URI não é atendida por nenhuma rota. Confira a tabela acima.

Boas práticas

  • Use um id de envelope novo e estável por operação: ele protege contra repetição.
  • Migre aos poucos para /v1 as chamadas que mais usa. Os erros ficam mais claros.
  • Leia as notas de versão ao atualizar.

Próximos passos

Perguntas frequentes

Posso reaproveitar minha integração da Blip?

Em boa parte, sim. A rota POST /commands na raiz do endereço aceita o envelope de comando da Blip com Authorization: Key, e POST /messages e POST /notifications aceitam envelopes de mensagem e notificação. Troque o endereço e a chave.

Que chave devo usar?

Uma chave de fluxo criada com a opção Compatível com a Blip. A chave da organização não vale na raiz, nem no formato Key.

Por que um comando recusado volta com HTTP 200?

Na raiz, o Pipe imita a Blip: recusas por escopo e por conta em somente leitura voltam com HTTP 200 e status failure com reason.code 66. Em /v1/commands, o escopo ausente é um 403 normal.

Tudo da Blip existe no Pipe?

Não. Campanhas da Blip, listas de transmissão, buckets, resources e túneis, entre outros, não existem como comando. Esses caminhos respondem failure 62 ou 1.