Skip to content

Rotas da API (v1) ​

Todas ficam em https://api-waychat.waycloud.com.br/v1 e pedem Authorization: Bearer wc_.... Veja Como usar a API. O caminho antigo /api/v1 também é aceito no mesmo endereço.

Enviar mensagem ​

POST /mensagens · permissão mensagens:enviar

json
{
  "telefone": "44999998888",
  "texto": "Olá! Sua fatura #123 vence amanhã.",
  "nome": "Maria Souza",
  "modo": "aviso"
}
CampoObrigatórioO que é
telefonesimNúmero do cliente
textosimMensagem (até 4096 caracteres). *negrito* funciona no WhatsApp
nomenãoUsado se o contato for novo
modonãoaviso (padrão): manda e encerra; se o cliente responder, começa o fluxo do zero. atendimento: abre a conversa na fila de um setor
setor_idno modo atendimentoSetor que vai atender (veja GET /setores)
canal_idnãoQual WhatsApp usar, se houver mais de um (veja GET /canais)

Se o cliente já tem uma conversa aberta, a mensagem entra nela. A resposta traz mensagem, conversa e contato.

Exemplo: aviso de site fora do ar abrindo atendimento no Suporte

bash
curl -X POST https://api-waychat.waycloud.com.br/v1/mensagens \
  -H 'Authorization: Bearer wc_SUA_CHAVE' -H 'Content-Type: application/json' \
  -d '{"telefone":"44999998888","texto":"Detectamos seu site fora do ar e já estamos verificando.","modo":"atendimento","setor_id":2}'

WARNING

Contato bloqueado ou que pediu para não receber mensagens (opt-out) recebe 400 e nada é enviado.

Conversas ​

MétodoRotaPermissãoPara quê
GET/conversasconversas:lerLista. Filtros: status (ex.: fila,aberta), telefone, contato_id, setor_id, desde (data), limite (até 100), antes_id
GET/conversas/:idconversas:lerUma conversa
GET/conversas/:id/mensagensconversas:lerMensagens (sem notas internas). limite (até 200) e antes_id
POST/conversas/:id/mensagensconversas:responderResponde: { "texto": "..." }

Conversa:

json
{
  "conversa": {
    "id": 42, "protocolo": 1042, "status": "aberta",
    "canal": { "id": 1, "tipo": "evolution", "nome": "WhatsApp" },
    "setor": { "id": 2, "nome": "Suporte técnico" },
    "atendente": { "id": 3, "nome": "Wesley Diego" },
    "ultima_mensagem": "Obrigado!", "ultima_mensagem_em": "2026-10-23T14:02:11Z",
    "criado_em": "2026-10-23T13:58:40Z", "encerrada_em": null, "motivo_encerramento": null
  },
  "contato": { "id": 7, "nome": "Maria Souza", "telefone": "5544999998888", "email": null, "etiquetas": [] }
}

status: bot (no fluxo), fila, aberta, pendente, adiada, avaliacao ou encerrada.

Mensagem: { id, conversa_id, direcao: "entrada"|"saida", autor: "contato"|"usuario"|"bot"|"ia"|"sistema", autor_nome, tipo, texto, midia, status, criado_em }.

Para painéis (ex.: TV) ​

GET /atendimento/resumo · permissão conversas:ler · aceita ?data=AAAA-MM-DD (fuso America/Sao_Paulo; padrão hoje)

json
{
  "data": "2026-10-23", "fuso": "America/Sao_Paulo", "gerado_em": "2026-10-23T19:14:59.155Z",
  "agora": { "fila": 0, "aberta": 1, "pendente": 0, "bot": 1, "adiada": 0, "avaliacao": 2, "aguardando": 1 },
  "dia": { "resolvidas": 9, "novas": 11, "tempo_medio_primeira_resposta_segundos": 397, "primeiras_respostas": 6, "pico_fila": 1 }
}
  • aguardando: conversas com o cliente esperando uma pessoa (na fila, ou em atendimento com a última fala do cliente).
  • resolvidas: encerradas ou em avaliação no dia, motivo diferente de "Spam".
  • tempo_medio_primeira_resposta_segundos: média de (primeira resposta humana − criação) das primeiras respostas dadas no dia; primeiras_respostas é quantas entraram na média. Robô e IA não contam.
  • pico_fila: maior número de conversas na fila ao mesmo tempo no dia.

Campos extras em cada conversa (GET /conversas e GET /conversas/:id): aguardando_desde (desde quando o cliente espera uma pessoa; null em pendente, quando a última fala é da equipe ou sem espera), primeira_resposta_em (primeira mensagem de uma pessoa da equipe), primeira_resposta_segundos. encerrada_em também vem preenchido em avaliacao.

Filtros extras em GET /conversas: encerrada_desde=<ISO> (encerradas ou em avaliação depois desse horário) e atualizada_desde=<ISO> (com qualquer atividade depois desse horário).

Contatos ​

MétodoRotaPermissãoPara quê
GET/contatoscontatos:lerLista. Filtros: telefone, email, busca, etiqueta, limite, antes_id
GET/contatos/:idcontatos:lerUm contato
POST/contatoscontatos:escreverCria { nome, telefone?, email?, etiquetas?, campos? }. Se o telefone já existe, atualiza esse contato
PATCH/contatos/:idcontatos:escreverMuda nome, telefone, e-mail, etiquetas (lista inteira) e campos (somados aos que já existem)

Ligações (só leitura) ​

Precisa do recurso Ligações do WhatsApp no plano (sem ele, 403 modulo_desligado).

MétodoRotaPermissãoPara quê
GET/ligacoesconversas:lerMais recentes primeiro. Filtros: contato_id, status (tocando, em_andamento, encerrada, perdida, recusada, atendida, falhou), desde (data ISO), limite (até 100)

Cada item: id, conversa_id, contato_id, canal_id, provedor (cloud ou evolution), direcao (entrada ou saida), status, motivo, iniciada_em, atendida_em, encerrada_em, duracao_s, atendente, contato_nome, contato_telefone, tem_transcricao. Webhook de saída: evento ligacao.encerrada quando a ligação termina, com { id, status, direcao, duracao_s }.

Métricas (Ao vivo e Desempenho) ​

Os mesmos números das telas do painel. Permissão metricas:ler.

MétodoRotaPara quê
GET/resumoNúmeros prontos (o mais fácil para painéis e BI): agora (na fila, em atendimento, no robô, maior espera, atendentes online e em pausa, conversas em risco de SLA), hoje (novas, TME), ultimas_24h (SLA de 1ª resposta %, média e % de satisfeitos do CSAT), filas por setor e atendentes_online
GET/avaliacoesNotas de avaliação uma a uma (nota, comentário, atendente, setor, contato, protocolo). Filtros: inicio, fim, atendente_id, setor_id, nota_max (ex.: 2 para só as ruins), limite, antes_id
GET/ao-vivoAgora: filas por setor (aguardando, em atendimento, no robô, maior espera, online), hoje (novas, na fila, TME), csat e sla das últimas 24h, equipe (presença, conversas ativas, TMA) e risco (conversas perto de estourar o SLA). Filtro opcional setor_id
GET/desempenhoPeríodo (inicio e fim em data, padrão últimos 7 dias; setor_id opcional): resumo (conversas, encerradas, TME mediana/média/p90, primeira resposta, TMA, resolução, resolvidas pelo robô, abandono), csat, qualidade, porDia, porHora, porSetor, porAtendente, motivos
GET/desempenho/qualidadeAuditoria de qualidade da IA no período: piores conversas e média por critério

Tempos vêm em segundos (_s).

bash
curl 'https://api-waychat.waycloud.com.br/v1/desempenho?inicio=2026-10-01&fim=2026-10-23' \
  -H 'Authorization: Bearer wc_SUA_CHAVE'

Apoio ​

MétodoRotaPermissãoPara quê
GET/statusqualquerTesta a chave
GET/setoresconversas:lerSetores (id, nome)
GET/canaisconversas:lerCanais (id, tipo, nome)