Limite de capacidade
- Novo
503 server_busy: quando uma chave tem solicitações demais em andamento ao mesmo tempo, ou a API está no limite de capacidade, uma solicitação retorna503comRetry-After: 1. Ela não foi executada e não conta contra o seu limite de uso; tente novamente. Enviar até 100 destinatários por envio de modelo, em vez de uma chamada por destinatário, evita isso. Veja limites de uso.
Webhooks
conversation.assignedtraz mais dados: o nome e o email do colega (assignee), como foi atribuída (strategy,assigned_by,self_assigned) e umaurlpara a conversa, para que uma ferramenta sem código publique um alerta útil sem chamar a API. Veja o catálogo de eventos.
Formulários do WhatsApp
- Novo evento de webhook
whatsapp_flow.completed: dispara quando um cliente envia um formulário do WhatsApp, com as respostas e o que a Ciarem salvou no contato. Veja o catálogo de eventos.
Webhooks
A Ciarem agora pode chamar o seu servidor quando algo muda, então você não precisa mais consultar a API repetidamente. Comece pelo guia de webhooks.
- Endpoints de webhook: cadastre até 10 URLs HTTPS por organização e escolha quais eventos cada uma recebe (
/v1/webhook-endpoints: listar, criar, ler, atualizar, excluir). Também disponível para administradores no painel em Configurações → Webhooks. - Dez tipos de evento:
contact.created,contact.updated,contact.deleted,contact.merged,contact.funnel_stage.changed,contact.owner.changed,conversation.created,conversation.assigned,conversation.closedemessages.inbound. Os eventos de contato carregam o contato completo. Veja o catálogo de eventos. - Solicitações assinadas: cada solicitação carrega um cabeçalho
Ciarem-Signature, um HMAC-SHA256 feito com o segredo de assinaturawhsec_do endpoint. Veja Verificar assinaturas. - Novas tentativas e um registro de entregas: uma entrega com falha é tentada de novo por até 3 dias, e cada entrega dos últimos 30 dias pode ser lida com
GET /v1/webhook-endpoints/{id}/deliveriese enviada novamente comPOST /v1/webhook-deliveries/{id}/redeliver. Veja Entregas e novas tentativas. - Eventos de teste:
POST /v1/webhook-endpoints/{id}/testenvia um evento agora mesmo e retorna o que o seu servidor respondeu.GET /v1/webhook-event-samplesretorna o corpo de exemplo de cada tipo de evento. - Incluído nos mesmos planos da API: Growth, Scale e o teste gratuito.
Descadastro de marketing por WhatsApp
- Os contatos agora incluem
marketing_opt_out(booleano, somente leitura):truequando o contato se descadastrou do marketing por WhatsApp. Não pode ser alterado pela API. Veja Descadastro de marketing por WhatsApp. POST /v1/templates/{id}/send: um modelo de marketing não é enviado a um destinatário cujomarketing_opt_outétrue. A solicitação é aceita mesmo assim e os demais destinatários são enviados; o destinatário descadastrado não recebe o envio nem é cobrado. Os modelos de utilidade e autenticação não mudam. Leiamarketing_opt_outno contato para deixar esses destinatários de fora desde o início.
A API chega ao plano Growth
- A API agora está incluída no plano Growth, não apenas no Scale. O Growth recebe todos os endpoints com um orçamento de 10 solicitações/segundo; o Scale continua em 20 solicitações/segundo e o teste em 5 solicitações/segundo. As chaves criadas durante um teste que continuou no Growth voltam a funcionar sem nenhuma alteração.
- Mudança incompatível:
scale_plan_requiredagora éplan_upgrade_required. O detalhe do403para um plano ativo sem a API (Solo) foi renomeado, porque o Scale deixou de ser o único plano que a inclui. Se a sua integração compara com o texto antigo, atualize-a. Veja Autenticação.
Os filtros de data de contatos usam datas absolutas
GET /v1/contacts:property_filternão aceita mais datas relativas. Uma condição sobre uma propriedade DATE recebe uma dataYYYY-MM-DD, por exemplocustom_birthday:gte:2026-09-01. Um valorpreset:comopreset:1wagora retorna400cominvalid_property_filter. Elas nunca foram documentadas: são resolvidas no fuso horário de quem está vendo o painel, algo que uma integração não controla. Calcule as datas do seu lado.tzagora está documentado emGET /v1/contacts: o fuso horário IANA em quecreated_from/created_tosão lidos. Por padrão usa o fuso horário da organização e, se não houver, UTC.
Acesso no teste gratuito, limites por segundo e 403 que dizem o que fazer
- A API está aberta durante o teste gratuito. Uma organização em teste recebe todos os endpoints, com um orçamento menor, para construir e testar uma integração antes de pagar.
- Os limites de uso agora são por segundo: 20 solicitações/segundo no Scale, 5 solicitações/segundo durante o teste, compartilhadas entre as chaves da organização. Os cabeçalhos
X-RateLimit-*não mudam;Retry-Afterem um429agora é sempre1. GET /v1/meganhatrial(booleano), que étrueenquanto a organização está no teste gratuito.planagora informa o código real do plano em vez de sempre"scale".403mais claros.scale_plan_requiredagora significa apenas que a organização está em um plano ativo abaixo do Scale e precisa fazer upgrade. Dois novos detalhes cobrem o resto:trial_expired(o teste terminou sem método de pagamento) esubscription_required(cancelada, ou suspensa por falta de pagamento). Veja Autenticação.
Modelos do WhatsApp, envios e campanhas
A API já pode enviar.
- Modelos do WhatsApp: listar, ler, criar e excluir (
/v1/templates). Criar um modelo também o envia à Meta para aprovação na mesma chamada, então ele volta comoPENDING; consulte-o até a Meta mudá-lo paraAPPROVEDouREJECTED. GET /v1/templates/{id}/send-requirements: o que um modelo precisa preenchido antes de poder ser enviado. Inclui os tokens de variáveis, quais deles se resolvem sozinhos a partir do contato, slots de catálogo, botões de URL dinâmicos, superfícies de mídia, e o motivo quando um modelo nunca pode ser enviado. Leia isso antes do primeiro envio em vez de descobrir por meio de 422s.POST /v1/templates/{id}/send: até 100 destinatários em uma chamada, cada um identificado porcontact_idouphonee carregando suas própriasvariables,url_suffixes,coupon_code,lto_expiratione mídia.recipientsaceita um único objeto ou um array, então enviar para uma pessoa não precisa de embrulho. Cabeçalhos de mídia aceitam uma URL pública (header_media_url/card_media_urls), baixada no servidor. Retorna 202 e a campanha que criou.- Um
phoneque não corresponde a nenhum contato cria um, então um envio pode fazer seu CRM crescer. - Envie
Idempotency-Keye repetir é seguro: a mesma chave devolve a campanha original por 24 horas em vez de enviar de novo. - A requisição é recusada inteira (nada enfileirado, nada cobrado) se faltar uma variável, se uma chave não for usada pelo modelo, se uma URL de mídia não puder ser baixada, ou se o lote exceder o que resta do limite de mensagens de 24 horas do WhatsApp.
- Um
- Campanhas:
GET /v1/broadcastseGET /v1/broadcasts/{id}para o progresso (sent/failed/pendingsempre somamrequested),GET /v1/broadcasts/{id}/recipientspara o resultado de cada destinatário, ePOST /v1/broadcasts/{id}/cancelpara abandonar o restante não enviado. Mensagens já aceitas pelo WhatsApp não podem ser recuperadas. GET /v1/channels/whatsapp/phones: os números conectados de onde um envio pode sair, para quechannel_idseja descobrível. Opcional quando sua conta do WhatsApp tem exatamente um número; obrigatório quando tem mais.
Lançamento da v1
A primeira superfície pública da API da Ciarem:
- Contatos: CRUD completo (
/v1/contacts). - Metadados de CRM: propriedades e etapas do funil, CRUD completo (
/v1/properties,/v1/funnel-stages). - Conversas: histórico somente leitura (
/v1/conversations), cada mensagem com umsenderdecontact,agent,aiousystem. /v1/me: identidade da organização, plano, fuso horário e idioma.- Chaves de API
oak_vinculadas à organização, 60 solicitações/minuto por organização.