Pular para o conteúdo
WbizTool

API v2 (beta)

Descadastros

Um descadastro é uma pessoa que não quer as mensagens do seu espaço de trabalho. Nada é enviado para um número descadastrado: uma mensagem nova para ele é recusada, e as mensagens colocadas na fila antes falham com o erro Opted out em vez de sair. Vale para todas as formas de envio: a API (v1 e v2), o painel, campanhas, mensagens de modelo, lembretes, Google Sheets e Shopify.

A lista é a mesma da aba Descadastrados de Contatos no painel.

OperaçãoEndpointPermissão
Descadastrar um númeroPOST /api/v2/opt-outscontacts
Listar descadastrosGET /api/v2/opt-outscontacts
Obter um descadastroGET /api/v2/opt-outs/{phone}contacts
Recadastrar um númeroDELETE /api/v2/opt-outs/{phone}contacts

Respostas STOP são adicionadas automaticamente#

Quando alguém responde a um dos seus números da caixa de entrada com uma mensagem que é só uma palavra de descadastro, a pessoa é descadastrada automaticamente, com source reply e a mensagem dela como keyword. Uma mensagem que é só START (ou Subscribe) a recadastra.

  • As palavras, em maiúsculas ou minúsculas e com ou sem pontuação: STOP, Stop all, Unsubscribe, Opt out, Baja, Parar, Sair, Stopp, Abmelden, Arrêt, Désabonner, Basta, Disiscrivi, Стоп, Отписаться, Berhenti, Dur, توقف, إلغاء الاشتراك, עצור, הסר.
  • Só conta uma mensagem que seja apenas a palavra: "por favor, pare de me mandar a tabela de preços" não descadastra ninguém.
  • É preciso ter a caixa de entrada no número para o qual a pessoa responde, porque só os números da caixa de entrada leem as mensagens recebidas. Respostas com mais de 7 dias, como as lidas quando um número da caixa de entrada é adicionado, não contam.
  • Nada é enviado de volta para a pessoa, e nenhuma resposta automática responde ao STOP.

Descadastrar um número#

POSThttps://wbiztool.com/api/v2/opt-outs

Corpo: JSON (application/json)

Corpo

phonestringobrigatório

O número em formato internacional com + (+919876543210). Espaços, hifens e parênteses são ignorados. Um @username do Telegram também funciona.

notestringopcional

O motivo, para a sua equipe, com até 200 caracteres. Aparece na aba Descadastrados.

curl -X POST https://wbiztool.com/api/v2/opt-outs \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phone": "+919876543210", "note": "Asked by email"}'

Resposta: 201 com o descadastro. Um número que já estava descadastrado responde 200 com a entrada existente, sem alterações.

{
  "recipient": "+919876543210",
  "source": "api",
  "keyword": null,
  "note": "Asked by email",
  "created_at": "2026-10-26T09:12:03.120Z"
}

Erros#

HTTPCódigoQuando
400validation_failednote não é texto ou tem mais de 200 caracteres
422invalid_phonephone está faltando ou não é um número de telefone

Listar descadastros#

GEThttps://wbiztool.com/api/v2/opt-outs

Todos os que se descadastraram, dos mais recentes para os mais antigos, em páginas (limit de 1 a 100, padrão 25, e cursor). Adicione phone para consultar um único número.

curl "https://wbiztool.com/api/v2/opt-outs?limit=100" \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY"
{
  "data": [
    { "recipient": "+919876543210", "source": "reply", "keyword": "STOP", "note": null, "created_at": "2026-10-26T09:12:03.120Z" }
  ],
  "next_cursor": null
}

Obter um descadastro#

GEThttps://wbiztool.com/api/v2/opt-outs/{phone}

O número vai no endereço em formato internacional sem + (919876543210). Responde 404 opt_out_not_found quando o número não se descadastrou, então é uma verificação rápida antes de enviar.

curl https://wbiztool.com/api/v2/opt-outs/919876543210 \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY"

Recadastrar um número#

DELETEhttps://wbiztool.com/api/v2/opt-outs/{phone}

A partir de agora, as mensagens para o número voltam a sair. As mensagens que já falharam como Opted out continuam com falha. Faça isso só quando a pessoa pedir suas mensagens de novo.

curl -X DELETE https://wbiztool.com/api/v2/opt-outs/919876543210 \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY"
{ "recipient": "+919876543210", "deleted": true }

Um número que não estava descadastrado responde 404 opt_out_not_found.

Enviar para um número descadastrado#

  • POST /messages responde 422 recipient_opted_out, e nada entra na fila. Em um lote, o lote inteiro é recusado e o field do erro indica a entrada.
  • Uma mensagem colocada na fila antes de a pessoa se descadastrar falha com error Opted out quando chega a vez dela, e um webhook recebe message.failed.
  • A API v1 coloca a mensagem na fila e ela falha com Opted out, como você verá no status da mensagem.
  • Reenviar as com falha das campanhas ignora essas mensagens.

O objeto Opt-out#

CampoTipoDescrição
recipientstring+ e o número, ou um @username do Telegram
sourcestringreply: respondeu STOP a um número da caixa de entrada. dashboard: adicionado em Contatos. import: de um CSV em Contatos. api: esta API
keywordstring or nullA resposta que descadastrou a pessoa, como ela escreveu
notestring or nullA nota da sua equipe
created_atstringQuando a pessoa se descadastrou (ISO 8601, UTC)

Relacionados#