Ir para o conteúdo

Destaque

Conversas

A equipe toda no mesmo número, com etiqueta e funil.

Ver as conversas

Destaque

Agentes de IA

Atendem, qualificam e movem o lead no funil. Passam pro humano quando precisa.

Ver como funciona

Destaque

Rede de grupos

Um link só: o grupo enche e o próximo nasce sozinho.

Ver a rede

Destaque

Extensão do navegador

Achou no Mercado Livre ou na Shopee, mandou pra fila em 1 clique.

Ver a extensão
Testar grátis Já tenho conta

API para o seu sistema

Ligue o painel aos seus sistemas via API

O seu sistema manda a mensagem, cria a campanha e lê o funil sem ninguém abrir o painel. E o painel avisa de volta na hora em que chega mensagem, muda o status da entrega ou o número cai.

Em resumo

A API do Drope CRM, CRM para WhatsApp e Instagram, deixa o seu sistema enviar mensagem, criar campanha, etiquetar contato e mover o lead no funil sem abrir o painel. Esta página é a referência: endereços por recurso, permissões, avisos de saída e códigos de erro. A partir do plano Starter, por R$ 29,90 por mês.

  • 3 dias grátis
  • Resposta sempre em JSON
  • Um acesso por sistema, com prazo
  • Botão de testar dentro da conta

Funciona com

Os mesmos canais que você usa no painel, comandados pelo seu sistema.

Antes da primeira chamada

Primeiros passos na API de WhatsApp: seis coisas antes da primeira chamada.

O endereço base, o acesso, o número da chamada, o formato da resposta e o limite. Tudo isso já existe dentro da sua conta.

Endereço base

https://dropecrm.com/api

Toda chamada sai daqui. O que vem depois diz o recurso: /messages/text, /devices, /kanban/stages.

Autenticação

Authorization: Bearer SEU_ACESSO

Vai em toda chamada. Existe o acesso da conta inteira, que faz tudo, e o acesso por sistema, criado na área de API: você marca as permissões e até quando vale, ele começa com dcrm_ e aparece uma única vez. Revogar um não derruba os outros.

O número da chamada

X-Device-Token: ACESSO_DO_NUMERO

As chamadas que agem sobre um número levam também este cabeçalho. Em mensagens, funil, campanhas e grupos dá para usar o parâmetro device_id na URL no lugar dele, com uma exceção: POST /api/contacts/{id}/kanban, que está no funil mas só aceita o cabeçalho. Carrosséis, Instagram e as chamadas de número valem para a conta inteira e não pedem este cabeçalho, com uma única ressalva: GET /api/devices/me pede, porque é justamente a chamada que descobre a qual número o acesso pertence. Os avisos de saída não pedem: eles agem sobre um número, mas quem diz qual é o {id} do próprio endereço.

Resposta

{"success":true,"data":{}}

Sempre o mesmo envelope. No erro vem success false, o código e uma mensagem em português, como {"success":false,"error":"INSUFFICIENT_SCOPE"}.

Limite por minuto

X-RateLimit-Remaining: 118

A conta tem um teto de chamadas por minuto. Assim que o acesso é aceito, a resposta já traz o teto e quanto ainda sobra. Quem é barrado antes disso, com acesso inválido, revogado, vencido ou conta suspensa, não recebe essa contagem. Ao estourar vem 429 com o tempo de espera.

Teste sem escrever código

Dentro da conta, na área de API, as chamadas mais usadas já vêm com o exemplo montado e um botão de testar, com o acesso da sua conta. As de carrossel e de Instagram ainda não estão lá: essas você monta no seu código, a partir desta página. A lista se ajusta ao número que você escolher no alto da tela.

Referência

Referência da API: cada chamada, recurso por recurso.

Cada linha é uma chamada de verdade, com o método e o endereço que você vai escrever no seu código.

Só no número por QR code Não sai em todo número por QR code Só no número oficial Só no número por QR code, e não em todos

Conexão e descoberta

devices:read Só o teste de conexão passa com qualquer acesso válido, sem permissão nenhuma marcada. A descoberta pede devices:read como qualquer outra chamada.

  • GET /api/ping Confere o acesso e devolve o id, o nome e o e-mail da conta autenticada.
  • GET /api/capabilities Numa chamada só: os números da conta, o que cada um libera, as permissões do acesso em uso, o plano e os limites.

Números

devices:read devices:write Os GET pedem a de ler; criar, conectar e remover pedem a de gerenciar.

  • GET /api/devices Lista os números da conta com id, nome, tipo, status, conexão e dados do perfil.
  • POST /api/devices Cria um número novo, ou traz um que já existe, dispara a conexão e devolve o QR code ou o código de pareamento. Cria só número por QR code: o número oficial não nasce por aqui, ele é ligado dentro do painel.
  • GET /api/devices/me Diz a qual número pertence o cabeçalho enviado. Serve para descobrir o id a partir do acesso do número.
  • GET /api/devices/{id} Detalhe do número, com o status consultado na hora e, quando ele está pareando, o QR code e o código de pareamento.
  • POST /api/devices/{id}/connect Dispara a conexão e devolve QR code e código de pareamento. O QR vale cerca de 40 segundos: chame de novo se ninguém escanear. Só no número por QR code
  • DELETE /api/devices/{id} Remove o número da conta. Durante o período de teste a exclusão é recusada.

Avisos de saída

webhooks:manage O aviso é sempre por número, um por número. Os eventos e a assinatura estão logo abaixo da referência.

  • GET /api/devices/{id}/webhook Mostra o endereço cadastrado, os eventos, se está ativo e o último sucesso, a última falha e o último erro. O segredo nunca volta aqui.
  • PUT /api/devices/{id}/webhook Cadastra ou atualiza o endereço e os eventos. O segredo da assinatura nasce na primeira vez e volta só nesta resposta.
  • POST /api/devices/{id}/webhook Mesmo efeito do PUT: os dois verbos criam ou atualizam a mesma inscrição.
  • DELETE /api/devices/{id}/webhook Tira o aviso de saída do número. Para trocar o segredo, apague e cadastre de novo.

Mensagens

messages:send Todas são POST e agem sobre um número. Os campos opcionais replyid, mentions, readchat, readmessages, delay, forward, track_source, track_id e async valem em cinco envios: texto, mídia (a enquete inclusive), botões, carrossel e lista, e só quando o número é dos conectados por QR code. No número oficial a API aceita os campos e depois os ignora: não mudam nada no envio. No modelo aprovado eles são descartados, e nos sete últimos desta lista, do cartão de contato ao botão de PIX, o corpo segue como veio, sem que a API monte esses campos: não conte com eles. Só o envio de texto tem os campos de prévia de link. Antes de contar com botões ou carrossel, confira o número em GET /api/capabilities.

  • POST /api/messages/text Envia texto. É o único envio com os campos de prévia de link: título, descrição, imagem e o formato grande.
  • POST /api/messages/media Envia imagem, vídeo, áudio ou documento a partir de uma URL, com legenda e nome de arquivo.
  • POST /api/messages/media Envia uma enquete, com 2 a 12 opções e quantas o contato pode marcar. Não é outro endereço: é o mesmo /api/messages/media da linha de cima, com o campo type valendo "poll" no corpo. Só no número por QR code
  • POST /api/messages/buttons Envia de 1 a 3 botões: responder, abrir link, ligar ou copiar código. No número oficial só existe o de responder. Não sai em todo número por QR code
  • POST /api/messages/list Envia uma lista de opções, com seções, itens e o rótulo do botão que abre a lista. Só no número por QR code
  • POST /api/messages/carousel Envia um carrossel de cards, cada um com imagem, título, descrição e botões. Não sai em todo número por QR code
  • POST /api/messages/template Envia um modelo aprovado, por id ou por nome, com variáveis, cabeçalho, links dos botões e código de cupom. O texto do botão vem do modelo aprovado e não muda no envio. Só no número oficial
  • POST /api/messages/contact Envia um cartão de contato, com nome completo e telefone. Só no número por QR code, e não em todos
  • POST /api/messages/location Envia uma localização, por latitude e longitude. Só no número por QR code, e não em todos
  • POST /api/messages/presence Mostra na conversa que o número está digitando ou gravando. Só no número por QR code, e não em todos
  • POST /api/messages/status Publica um status, o stories do WhatsApp. Só no número por QR code, e não em todos
  • POST /api/messages/location-button Envia uma mensagem com botão que pede a localização do contato. Só no número por QR code, e não em todos
  • POST /api/messages/request-payment Envia um pedido de pagamento, com valor. Só no número por QR code, e não em todos
  • POST /api/messages/pix-button Envia um botão de PIX, com o tipo e a chave. Só no número por QR code, e não em todos

Etiquetas e contatos

contacts:read contacts:write Criar contato não existe: o contato nasce da conversa. O que a API faz com ele é etiquetar, mover no funil e conferir o número.

  • GET /api/tags Lista as etiquetas do número, com id, nome e cor.
  • POST /api/tags Cria uma etiqueta, com nome e cor.
  • PUT /api/tags/{id} Muda o nome ou a cor de uma etiqueta do próprio número.
  • DELETE /api/tags/{id} Apaga uma etiqueta do próprio número.
  • POST /api/contacts/{id}/tags Troca as etiquetas do contato pela lista enviada. Substitui todas, não soma.
  • POST /api/number/check Diz quais números têm WhatsApp. Aceita um só ou uma lista. Só no número por QR code

Funil

kanban:read kanban:write Ler as etapas e os leads pede a de ler; criar, editar e mover pedem a de gerenciar.

  • GET /api/kanban/stages Lista as etapas do funil.
  • POST /api/kanban/stages Cria uma etapa, com nome, cor e posição.
  • PUT /api/kanban/stages/{id} Muda o nome, a cor ou a posição de uma etapa.
  • DELETE /api/kanban/stages/{id} Apaga uma etapa vazia. Com cards dentro, responde 409 e diz quantos existem.
  • GET /api/kanban/leads?stage_ids=1,2 Devolve os contatos com telefone das etapas pedidas, já sem repetição e com paginação.
  • POST /api/contacts/{id}/kanban Move o contato para a etapa informada, criando o card se ele ainda não existir. É a única chamada do funil que não aceita device_id na URL: aqui o cabeçalho do número é obrigatório.

Campanhas

campaigns:read campaigns:write Acompanhar pede a de ler; criar, pausar, retomar e excluir pedem a de gerenciar.

  • POST /api/campaigns/dispatch Cria e começa uma campanha, com a lista de contatos, os blocos da mensagem, o intervalo entre envios e, se quiser, a hora do agendamento.
  • POST /api/campaigns/from-kanban A mesma campanha, só que a lista de contatos vem das etapas do funil.
  • GET /api/campaigns Lista as campanhas do número, com filtro opcional por status.
  • GET /api/campaigns/{id}/messages Mostra o status de cada envio da campanha, com até 500 por página.
  • POST /api/campaigns/{id}/action Pausa, retoma ou exclui a campanha.

Grupos Só no número por QR code

groups:read groups:write Listar, sincronizar e consultar informação e convite pedem a de ler; o resto pede a de gerenciar.

  • GET /api/groups Lista os grupos do número a partir do cache, ou ao vivo com ?source=live.
  • GET /api/groups/{jid} Detalhe de um grupo do cache: nome, foto, dono, quantidade de participantes e se você é administrador. Enquanto o cache nunca tiver sido sincronizado, responde 404: chame POST /api/groups/sync antes.
  • POST /api/groups/sync Força a sincronização da lista de grupos e atualiza o cache.
  • POST /api/groups/create Cria um grupo, com nome e a lista inicial de participantes.
  • POST /api/groups/info Consulta os dados de um grupo e, se você pedir, devolve o link de convite.
  • POST /api/groups/invite-info Consulta um grupo a partir do código de convite, antes de entrar nele.
  • POST /api/groups/join Entra em um grupo pelo código de convite.
  • POST /api/groups/leave Sai de um grupo.
  • POST /api/groups/reset-invite Invalida o link de convite atual e gera um novo.
  • POST /api/groups/update-name Muda o nome do grupo.
  • POST /api/groups/update-description Muda a descrição do grupo.
  • POST /api/groups/update-image Troca a foto do grupo, por URL ou base64, ou remove a que está lá.
  • POST /api/groups/update-announce Liga ou desliga o modo em que só administrador manda mensagem.
  • POST /api/groups/update-locked Liga ou desliga o bloqueio de edição dos dados do grupo por quem não é administrador.
  • POST /api/groups/update-join-approval Exige, ou dispensa, aprovação de administrador para entrar no grupo.
  • POST /api/groups/update-member-add-mode Define quem pode adicionar gente: só administrador ou qualquer participante.
  • POST /api/groups/ephemeral Define o tempo das mensagens temporárias do grupo.
  • POST /api/groups/participants Adiciona, remove, promove, rebaixa, aprova ou rejeita participantes.

Comunidades Só no número por QR code, e não em todos

groups:write

  • POST /api/community/create Cria uma comunidade com o nome informado.
  • POST /api/community/editgroups Adiciona ou remove grupos de uma comunidade.

Canais Só no número por QR code, e não em todos

groups:read groups:write Cada canal é identificado por id ou pelo endereço completo dele. Listar, consultar, pesquisar, ler mensagens e buscar atualizações pedem a de ler; o resto pede a de gerenciar.

  • POST /api/newsletter/create Cria um canal.
  • GET /api/newsletter/list Lista os canais do número.
  • POST /api/newsletter/info Consulta os dados de um canal.
  • POST /api/newsletter/link Resolve o canal a partir da chave do link público.
  • POST /api/newsletter/subscribe Inscreve o número nas atualizações do canal.
  • POST /api/newsletter/messages Lista as mensagens publicadas no canal.
  • POST /api/newsletter/messages/edit Edita o texto de uma mensagem já publicada.
  • POST /api/newsletter/messages/delete Apaga uma mensagem do canal.
  • POST /api/newsletter/updates Busca as atualizações recentes do canal.
  • POST /api/newsletter/viewed Marca mensagens do canal como vistas.
  • POST /api/newsletter/reaction Reage a uma mensagem do canal.
  • POST /api/newsletter/follow Passa a seguir o canal.
  • POST /api/newsletter/unfollow Deixa de seguir o canal.
  • POST /api/newsletter/mute Silencia o canal.
  • POST /api/newsletter/unmute Tira o silêncio do canal.
  • POST /api/newsletter/delete Apaga o canal.
  • POST /api/newsletter/picture Troca a foto do canal.
  • POST /api/newsletter/name Muda o nome do canal.
  • POST /api/newsletter/description Muda a descrição do canal.
  • POST /api/newsletter/settings Define as reações permitidas no canal.
  • POST /api/newsletter/search Procura canais.
  • POST /api/newsletter/admin/invite Convida um número para administrar o canal.
  • POST /api/newsletter/admin/accept Aceita o convite de administração.
  • POST /api/newsletter/admin/remove Remove um administrador do canal.
  • POST /api/newsletter/admin/revoke Revoga um convite de administração ainda não aceito.
  • POST /api/newsletter/owner/transfer Transfere a posse do canal para outro número.

Carrosséis

carousels:read carousels:write instagram:publish Valem para a conta inteira e não pedem número de WhatsApp. Publicar o carrossel pede a permissão de publicar no Instagram, não a de carrossel. As chamadas de IA respondem com um andamento e consomem créditos.

  • GET /api/carousels Lista os carrosséis da conta, com limite e deslocamento.
  • POST /api/carousels Cria um carrossel: a IA escreve o roteiro e desenha a capa. A resposta já volta com o andamento.
  • GET /api/carousels/catalog Devolve modelos, formatos, fontes, ícones, preços em créditos, saldo, modos e estilos salvos.
  • GET /api/carousels/credits Devolve o saldo de créditos e a tabela de preços.
  • POST /api/carousels/quote Diz quanto custaria uma configuração, sem criar nada.
  • GET /api/carousels/jobs/{chave} Acompanha uma geração. Com ?wait=20 a resposta espera até 20 segundos antes de voltar.
  • GET /api/carousels/styles Lista os estilos salvos da conta.
  • POST /api/carousels/styles Salva um estilo a partir de um carrossel existente ou de um documento.
  • POST /api/carousels/styles/default Define qual estilo é o padrão da conta.
  • DELETE /api/carousels/styles/{id} Apaga um estilo salvo.
  • GET /api/carousels/{id} Devolve o documento completo do carrossel e as gerações em andamento.
  • POST /api/carousels/{id} Edita título, legenda, estilo, cores, fontes e formato, ou substitui o documento inteiro. O mesmo endereço aceita POST, PATCH ou PUT, com o mesmo efeito.
  • DELETE /api/carousels/{id} Apaga o carrossel e as imagens dele.
  • POST /api/carousels/{id}/duplicate Duplica o carrossel em um novo.
  • POST /api/carousels/{id}/caption Gera a legenda do post por IA.
  • GET /api/carousels/{id}/download Diz se a conta pode baixar e por onde baixar. As artes são desenhadas no navegador, no editor.
  • POST /api/carousels/{id}/publish Transforma o carrossel em publicação do Instagram, agora ou agendada.
  • POST /api/carousels/{id}/slides Adiciona um slide, em uma posição opcional.
  • POST /api/carousels/{id}/slides/{i} Edita os campos do slide. O índice começa em 0, que é a capa. Também aceita PATCH ou PUT.
  • DELETE /api/carousels/{id}/slides/{i} Remove um slide. A capa não pode ser removida.
  • POST /api/carousels/{id}/slides/{i}/move Move o slide para outra posição.
  • POST /api/carousels/{id}/slides/{i}/image Gera a imagem do slide por IA, no modo rápido ou no caprichado.
  • POST /api/carousels/{id}/slides/{i}/scene Transforma uma cena descrita em português no pedido da imagem.
  • POST /api/carousels/{id}/slides/{i}/rewrite Reescreve o texto do slide seguindo uma instrução sua.
  • POST /api/carousels/{id}/slides/{i}/photo Usa uma foto sua no slide, a partir de uma URL, com ponto de foco.

Instagram

instagram:read instagram:publish Valem para a conta inteira e não pedem número de WhatsApp. Quem publica é o agendador, no minuto seguinte: acompanhe pelo status da publicação.

  • GET /api/instagram/accounts Lista as contas, o que cada uma pode fazer e o motivo quando não pode. Com ?quota=1 traz a cota de 24 horas.
  • GET /api/instagram/posts Lista as publicações, com filtros por status, tipo, período e conta.
  • POST /api/instagram/posts Cria a publicação inteira numa chamada: conta, tipo, legenda, opções, os arquivos e o agendamento.
  • GET /api/instagram/posts/{id} Detalhe da publicação, com arquivos, avisos de proporção, conta e resumo das métricas.
  • POST /api/instagram/posts/{id} Edita um rascunho ou um agendamento: legenda, tipo, opções ou conta. Também aceita PATCH ou PUT.
  • DELETE /api/instagram/posts/{id} Exclui a publicação daqui. Com ?from_instagram=1 tira também do Instagram o que já foi ao ar.
  • POST /api/instagram/posts/{id}/duplicate Copia a publicação para um rascunho novo.
  • POST /api/instagram/posts/{id}/schedule Agenda a publicação ou coloca na fila para sair agora.
  • POST /api/instagram/posts/{id}/cancel Cancela o agendamento e devolve a publicação para rascunho.
  • POST /api/instagram/posts/{id}/media Adiciona um arquivo, por URL pública ou pela galeria do painel.
  • POST /api/instagram/posts/{id}/media/reorder Reordena os arquivos da publicação.
  • DELETE /api/instagram/posts/{id}/media/{mid} Remove um arquivo da publicação.
  • POST /api/instagram/posts/{id}/media/{mid}/fit Ajusta o arquivo à proporção do post: corta ou encaixa com bordas.
  • GET /api/instagram/posts/{id}/insights Devolve as métricas da publicação.
  • POST /api/instagram/posts/{id}/insights/refresh Pergunta as métricas ao Instagram na hora. Uma vez a cada 10 minutos por publicação.

Avisos de saída

Webhooks, os avisos de saída: o painel chama o seu endereço.

Cadastre um endereço por número e receba o evento na hora em que ele acontece. É o aviso de saída, que o seu programador conhece pelo nome de webhook.

Como chega

POST no seu endereço

O corpo vai em JSON, no mesmo formato para os dois tipos de número: o evento, o número, a hora, os dados já organizados e, dentro de raw, o original que o WhatsApp mandou.

Assinatura

X-Drope-Signature: sha256=...

HMAC-SHA256 do corpo BRUTO recebido, com o segredo que o cadastro devolveu. Vêm junto X-Drope-Event, com o nome do evento, X-Drope-Delivery-Id, o id da entrega que você guarda para recusar repetição, e X-Drope-Timestamp, a hora do envio.

Se o seu endereço estiver fora

5s · 30s · 5min · 30min

A primeira tentativa sai na hora. Se ela falhar, vêm até quatro novas, nesses intervalos, cinco no total por entrega. Responda 2xx em até 10 segundos. Depois de 20 falhas seguidas o aviso é desligado sozinho e precisa ser religado.

Os quatro eventos

Você escolhe quais quer receber no cadastro do aviso.

  • messages.received Chegou mensagem no número: texto, mídia, resposta de botão ou resposta de lista.
  • messages.status A entrega de um envio mudou: enviada, entregue, lida, ouvida ou falhou.
  • connection O número conectou, está conectando ou caiu.
  • qr Saiu um QR code novo para parear.

Permissões

Marque só o que o seu sistema precisa.

O acesso da conta inteira passa em tudo. O acesso por sistema passa só no que você marcou, e a chamada fora disso responde 403 dizendo qual permissão falta.

As 16 permissões

São as mesmas caixas que aparecem na hora de criar o acesso, na área de API da sua conta.

  • devices:read Listar números, ver status, QR code e o que cada um faz.
  • devices:write Criar, conectar e remover números.
  • messages:send Enviar texto, mídia, botões, listas, carrossel e modelo aprovado.
  • campaigns:read Listar campanhas e acompanhar o status dos envios.
  • campaigns:write Criar campanha, inclusive a partir do funil, pausar, retomar e excluir.
  • groups:read Listar grupos, sincronizar e consultar informações e convites.
  • groups:write Criar e editar grupos, cuidar dos participantes, das comunidades e dos canais.
  • kanban:read Listar as etapas do funil e os leads de cada uma.
  • kanban:write Criar e editar etapas e mover contatos no funil.
  • contacts:read Listar etiquetas e conferir se um número tem WhatsApp.
  • contacts:write Criar e editar etiquetas e aplicá-las a contatos.
  • webhooks:manage Configurar, consultar e remover o aviso de saída de um número.
  • carousels:read Listar carrosséis, ver slides, catálogo, saldo de créditos e o andamento das gerações.
  • carousels:write Criar carrossel com IA, editar textos, cores e imagens, gerar imagem, legenda e estilo salvo.
  • instagram:read Listar as contas, as publicações e as métricas de cada uma.
  • instagram:publish Criar, editar, agendar, publicar, cancelar e excluir publicações, e enviar as fotos e os vídeos delas.

Erros

Quando dá errado, vem escrito o motivo.

O corpo traz sempre o mesmo envelope, com o código e uma mensagem em português. Alguns códigos ainda trazem o campo que resolve, como a permissão que falta ou o tempo de espera.

Acesso e permissão

  • 401 INVALID_TOKEN O acesso não veio, veio mal formado ou não existe.
  • 401 TOKEN_REVOKED O acesso foi revogado no painel.
  • 401 TOKEN_EXPIRED O acesso passou da validade que você escolheu.
  • 401 DEVICE_TOKEN_REQUIRED A chamada age sobre um número e o cabeçalho dele não veio.
  • 401 INVALID_DEVICE_TOKEN O cabeçalho do número veio, mas o acesso dentro dele não é de número nenhum.
  • 403 INVALID_DEVICE_TOKEN O acesso é de um número de verdade, só que de outra conta. Mesmo código, 403 em vez de 401.
  • 404 NOT_FOUND Pelo parâmetro device_id na URL: o número não existe ou não é desta conta. Os dois casos respondem igual, para não revelar id de ninguém.
  • 403 INSUFFICIENT_SCOPE O acesso não cobre esta chamada. O campo required diz qual permissão falta.
  • 403 ACCOUNT_INACTIVE A conta está suspensa ou inativa.
  • 403 API_NOT_AVAILABLE_FOR_PLAN O plano da conta não inclui a API.
  • 403 FEATURE_NOT_IN_PLAN O plano não inclui o recurso pedido: carrossel, publicação no Instagram, métricas do Instagram ou a conexão com IA.
  • 403 FORBIDDEN O contato, a etiqueta ou a etapa não pertence ao número da chamada.

Número e recurso

  • 403 DEVICE_OFFLINE O número não está conectado.
  • 403 PLAN_REQUIRED Criar número sem plano ativo nem período de teste.
  • 403 DEVICE_LIMIT_REACHED O limite de números do plano foi atingido.
  • 403 TRIAL_FORBIDDEN Excluir número durante o período de teste.
  • 422 UNSUPPORTED_FEATURE O recurso não existe nesse tipo de número: modelo aprovado fora do oficial, enquete, grupos, canais ou PIX fora do QR code, e carrossel no número por QR code que não envia carrossel.
  • 422 UNSUPPORTED_DEVICE O id apontado é uma conta de Instagram, não um número de WhatsApp.
  • 422 PROVIDER_NOT_ENABLED Esse tipo de número não está habilitado na conta.

Chamada e resposta

  • 404 NOT_FOUND O endereço não existe, ou o registro não é desta conta.
  • 405 METHOD_NOT_ALLOWED O método está errado para esse endereço.
  • 409 STAGE_NOT_EMPTY A etapa tem cards dentro e não pode ser apagada.
  • 422 INVALID_PAYLOAD O corpo não é JSON válido, ou falta um campo obrigatório.
  • 429 RATE_LIMITED Passou do limite por minuto. Vem com o tempo de espera, no corpo e no cabeçalho.
  • 502 PROVIDER_ERROR O WhatsApp recusou ou falhou. No envio de modelo aprovado ele sai como 422, para a mensagem real chegar até você.
  • 502 INSTAGRAM_ERROR Erro devolvido pelo Instagram, com o campo que diz se vale tentar de novo.
  • 402 INSUFFICIENT_CREDITS Sem saldo de créditos de IA para essa geração.
  • 409 RENDER_STALE A arte do carrossel mudou, ou nunca foi gerada, e a publicação precisa dela.

Perguntas frequentes

API de WhatsApp: as dúvidas mais comuns.

Dúvida sobre permissão, sobre o tipo de número ou sobre limite? Chama a gente.

Chamar no WhatsApp

O recomendado é sim. Existe o acesso da conta inteira, que passa em tudo, e o acesso por sistema, em que você marca as permissões e a validade. Se um vazar, você revoga só ele e os outros continuam rodando.

Chame GET /api/capabilities. Ele devolve, numa resposta só, os números da conta, o que cada um libera, as permissões do acesso em uso, o plano e os limites. É o mesmo mapa que esconde na tela o que o número escolhido não faz.

Criar contato, não. O contato nasce da conversa. O que dá pra fazer com ele é aplicar etiqueta, mover de etapa no funil e conferir se um número tem WhatsApp antes de enviar.

Modelo aprovado só sai do oficial. Lista de opções, enquete e grupos só existem no número conectado por QR code, em qualquer um deles. Comunidades, canais, cartão de contato, localização e PIX também são só do QR code, e nem em todo número por QR code eles saem. Texto, mídia, etiqueta, funil, campanha e avisos de saída funcionam nos dois. Botões e carrossel também saem nos dois, só que não em todo número por QR code: confira o seu em GET /api/capabilities.

Existe, por conta e por minuto, em janela de 60 segundos. Assim que o acesso é aceito, a resposta já diz quanto ainda sobra, e ao estourar vem 429 com o tempo de espera. Algumas listas também têm teto próprio: 500 envios de campanha por página e, na leitura do funil, 2000 contatos por chamada, somando todas as etapas que você pedir de uma vez. Sem pedir nada, o funil devolve 500.

As do carrossel respondem com um andamento, e você acompanha em GET /api/carousels/jobs/{chave}, que segura a resposta por até 20 segundos. Publicar no Instagram também não sai dentro da chamada: entra na fila e o agendador publica no minuto seguinte.

A API vem junto com o plano, não é compra por fora. Em Preços você vê, plano a plano, quem já tem a linha "Conexão com seus sistemas (API)". O Servidor MCP, que liga a sua IA na conta, é uma opção separada e pode estar ligada ou não no mesmo plano.

Continue por aqui

Outros caminhos para ligar a sua conta.

Atualizado em

Crie o acesso e faça a primeira chamada.

A área de API já está dentro da sua conta, com o exemplo montado e o botão de testar nas chamadas mais usadas desta lista.

Testar grátis