Pular para o conteúdo
Wbiztool

API de lembretes

API para criar lembretes

Crie uma mensagem de WhatsApp recorrente que é enviada automaticamente de acordo com um agendamento. Use-a para lembretes de pagamento, check-ins semanais, follow-ups diários e outras mensagens que se repetem.

POSThttps://wbiztool.com/api/v1/reminder/create/

Corpo: JSON ou campos de formulário

Você descreve o agendamento com uma expressão cron e um fuso horário. Sempre que o agendamento corresponder, o Wbiztool coloca na fila uma mensagem para o número de telefone ou grupo, igual a uma mensagem enviada com Enviar mensagem. Os lembretes criados aqui também aparecem na página Lembretes do seu painel, onde você pode pausá-los ou editá-los.

Exemplo rápido#

curl -X POST https://wbiztool.com/api/v1/reminder/create/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "reminder_name": "Monthly rent reminder",
    "phone": "919876543210",
    "message": "Hi Aman, a reminder that your rent is due on {current_date_formatted}.",
    "cron_expression": "0 10 1 * *",
    "timezone": "Asia/Kolkata"
  }'

Este lembrete é enviado às 10:00, horário da Índia, no dia 1º de cada mês. Substitua 12345, YOUR_API_KEY e 678 pelos seus próprios valores. Veja em Autenticação onde encontrá-los.

Parâmetros da requisição#

Envie os parâmetros como corpo JSON ou como campos de formulário. Em JSON, envie todos os valores de texto (api_key, reminder_name, phone, message, cron_expression, timezone, img_url, file_name) como string.

Autenticação

client_idintegerobrigatório

Seu ID do Cliente da API, em Configurações → Chaves API.

api_keystringobrigatório

Sua chave de API, na mesma página.

Remetente

whatsapp_clientintegeropcional

ID do número de WhatsApp a partir do qual enviar, nas configurações do WhatsApp. Se você não enviar, ou se o ID não estiver no seu espaço de trabalho, cada lembrete é enviado do primeiro número conectado do seu espaço de trabalho no momento da execução.

Lembrete

reminder_namestringobrigatório

Um nome para o lembrete, exibido na página Lembretes e disponível na mensagem como {reminder_name}.

phonestringobrigatório

O número de WhatsApp do destinatário com o código do país, por exemplo 919876543210. Não há um parâmetro country_code separado. Espaços, +, -, . e parênteses são removidos, assim como um 0 inicial (até dois zeros iniciais em um corpo JSON). Um valor que não seja composto só de dígitos é tratado como nome de grupo de WhatsApp.

messagestringobrigatório

O texto da mensagem. Pode incluir variáveis de modelo, que são preenchidas a cada execução do lembrete. A formatação do WhatsApp funciona: *bold*, _italic_, ~strikethrough~.

cron_expressionstringobrigatório

Quando enviar, como uma expressão cron de cinco campos, por exemplo 0 9 * * 1-5. Veja Expressões cron.

timezonestringopcional

O fuso horário em que a expressão cron é executada, como nome de fuso horário IANA, por exemplo Asia/Kolkata, America/New_York ou Europe/London. Se você não enviar, é usado UTC. Uma string vazia retorna Invalid timezone. Veja a lista completa na Referência de fusos horários.

Imagens e arquivos

msg_typeintegeropcional

0 texto (padrão), 1 imagem ou 2 arquivo, com message como legenda. Qualquer outro valor é tratado como 0.

img_urlstringObrigatório quando msg_type é 1 ou 2

URL pública http ou https da imagem, ou do arquivo para msg_type 2, com até 1.000 caracteres. Ela é baixada a cada execução do lembrete, então mantenha o link funcionando. Você pode hospedar arquivos com a API de upload de mídia.

file_namestringObrigatório quando msg_type é 2

Para msg_type 2, o nome do arquivo com a extensão, com até 100 caracteres, por exemplo invoice.pdf. Ignorado nos outros tipos de mensagem.

Expressões cron#

Uma expressão cron tem cinco valores separados por espaços. O lembrete é executado sempre que o horário atual em timezone corresponde aos cinco:

┌───────── minute        (0-59)
│ ┌─────── hour          (0-23)
│ │ ┌───── day of month  (1-31)
│ │ │ ┌─── month         (1-12)
│ │ │ │ ┌─ day of week   (0-7, where 0 and 7 are Sunday)
│ │ │ │ │
0 9 * * 1-5
SímboloSignificadoExemplo
*Todos os valores* no campo de hora significa a cada hora.
,Uma lista de valores9,18 no campo de hora significa 9:00 e 18:00.
-Um intervalo1-5 no campo de dia da semana significa de segunda a sexta.
/Um passo*/6 no campo de hora significa a cada 6 horas.

Exemplos comuns#

ExpressãoExecuta
0 9 * * *Todos os dias às 9:00
0 9 * * 1-5De segunda a sexta às 9:00
0 9 * * 1Toda segunda-feira às 9:00
30 18 * * 0Todo domingo às 18:30
0 9,18 * * *Todos os dias às 9:00 e às 18:00
0 */6 * * *A cada 6 horas, em hora cheia
*/30 9-17 * * 1-5A cada 30 minutos, das 9:00 às 17:30, de segunda a sexta
0 9 1 * *Dia 1º de cada mês às 9:00
0 10 15 * *Dia 15 de cada mês às 10:00
0 8 1 1 *Todo 1º de janeiro às 8:00

Os horários estão no timezone do lembrete. Use somente cinco campos: não adicione um campo de segundos nem atalhos como @daily.

Variáveis de modelo#

Estes marcadores em message são substituídos a cada execução do lembrete. Datas e horários estão no timezone do lembrete.

VariávelSubstituída porExemplo
{current_date}Data2026-10-01
{current_date_formatted}Data por extenso, com o dia completado com zeroOctober 01, 2026
{current_time}Horário no formato 24 horas09:00:00
{current_time_12h}Horário no formato 12 horas09:00 AM
{current_datetime}Data e hora2026-10-01 09:00:00
{timezone}O valor de timezoneAsia/Kolkata
{timezone_short}Abreviação do fuso horárioIST
{reminder_name}O valor de reminder_nameMonthly rent reminder
{to_number}O valor salvo de phone919876543210
{client_name}Nome do proprietário do espaço de trabalho
{organisation_name}Nome do seu espaço de trabalho

Lembrete com imagem#

Lembrete semanal com imagem
curl -X POST https://wbiztool.com/api/v1/reminder/create/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "reminder_name": "Weekly class timetable",
    "phone": "919876543210",
    "msg_type": 1,
    "img_url": "https://example.com/timetable.png",
    "message": "Here is this week'\''s timetable.",
    "cron_expression": "0 8 * * 1",
    "timezone": "Asia/Kolkata"
  }'

O exemplo em PHP envia campos de formulário em vez de JSON. Os dois funcionam.

Resposta#

Uma requisição bem-sucedida retorna HTTP 200:

{
  "reminder_id": 3187,
  "message": "Reminder created successfully",
  "status": 1
}
CampoTipoDescrição
statusinteger1 se o lembrete foi criado, 0 se a requisição falhou.
messagestringReminder created successfully; caso contrário, o erro.
reminder_idintegerID do novo lembrete. Guarde-o para cancelar o lembrete depois. Presente apenas em caso de sucesso.

Novos lembretes ficam ativos imediatamente.

Erros#

Os erros retornam HTTP 400 com status igual a 0, salvo indicação em contrário:

{ "status": 0, "message": "Invalid timezone" }
MensagemComo corrigir
Invalid JSON format: …O corpo JSON não é válido, geralmente por causa de uma vírgula sobrando no final ou de uma quebra de linha sem escape em message. Use \n para novas linhas. Você também recebe esta mensagem em uma requisição de formulário sem client_id ou em qualquer requisição GET.
Invalid client id.Envie client_id como número.
Reminder name cannot be nullAdicione reminder_name.
Phone number cannot be nullAdicione phone.
Message template cannot be nullAdicione message.
Cron expression cannot be nullAdicione cron_expression.
Auth Error - Please send correct API key and Client idEnvie uma api_key não vazia.
Invalid cron expressionVerifique se a expressão tem cinco campos válidos. Veja Expressões cron.
Invalid timezoneUse um nome IANA como Asia/Kolkata, não uma abreviação como IST.
Image URL cannot be null for image messagesPara msg_type 1, envie img_url.
File URL cannot be null for file messagesPara msg_type 2, envie file_name.
Auth Error: invalid api keyA chave pertence a outro client_id.
Auth Error: please check client idA chave não está vinculada a um espaço de trabalho. Crie uma nova chave no espaço de trabalho que você quer usar.
Demo Account cannot access APIsUse uma conta normal.
Not enough creditsSeu plano não tem mais mensagens disponíveis.
Upgrade your plan to use reminders featureSeu plano não inclui lembretes. Faça upgrade do seu plano.
WhatsApp Logged Out. Please Reconnect!!O número de whatsapp_client está desconectado. Reconecte-o nas configurações do WhatsApp.
Invalid WhatsApp client idEnvie whatsapp_client como número.
Error creating reminder: … (HTTP 500)Não foi possível salvar o lembrete. Verifique os valores enviados, por exemplo se img_url tem 1.000 caracteres ou menos e file_name tem 100 ou menos.

Como os lembretes são executados#

  • O agendamento é verificado no timezone do lembrete, e a mensagem entra na fila quando o horário atual corresponde à expressão cron.
  • Cada execução cria uma mensagem normal, enviada do seu número de WhatsApp, então o número precisa continuar conectado.
  • Uma execução é ignorada se o seu espaço de trabalho não tiver mais créditos, ou se nenhum whatsapp_client foi definido e nenhum número do seu espaço de trabalho estiver conectado naquele momento.
  • Se whatsapp_client estiver definido, cada execução é colocada na fila desse número, mesmo que ele tenha sido desconectado desde então, e fica aguardando ali. Não há troca para outro número.
  • Os lembretes são verificados periodicamente, não ao segundo, e a mensagem então aguarda na fila de envio como qualquer outra. Não conte com um horário exato. Se uma verificação atrasar, a execução ainda é enviada com até 10 minutos de atraso (até 1 minuto na primeira execução de um lembrete); depois disso, ela é ignorada. A mesma execução nunca é enviada duas vezes.

Dicas#

  • Liste e organize: obtenha seus lembretes e os IDs deles com Listar lembretes, e interrompa um lembrete com Cancelar lembrete.
  • Pausar e editar não está disponível pela API. Use a página Lembretes do seu painel.
  • Muitos lembretes de uma vez: a página Lembretes também pode importar lembretes de um arquivo CSV.
  • Novas linhas em JSON: escreva-as como \n dentro de message. Uma quebra de linha literal deixa o JSON inválido.