Agendar webhook com cron
Faça uma URL sua ser chamada em um horário cron, para um relatório noturno, uma checagem de renovações ou o aquecimento de um cache, sem manter servidor ou contêiner ligado só para vigiar o relógio. Você paga por uso, sem assinatura.
Serve para quem precisa disparar rotinas — fechar caixa, gerar relatório, sincronizar estoque — em sistemas que só reagem quando alguém os chama.
Uma tarefa recorrente sem servidor próprio
Rodar algo em horário fixo costumava exigir um processo vivo em algum lugar só para olhar o relógio: um cron numa máquina virtual, um contêiner agendado ou uma função sem servidor com a própria configuração de horários. Cada um precisa de monitoramento, tem de sobreviver a reinícios e depende de alguém perceber quando para de disparar em silêncio. Para uma única tarefa recorrente, é estrutura demais. Aqui você registra uma URL com uma expressão cron e o conteúdo a enviar. O agendamento fica guardado e sua URL é chamada automaticamente em cada horário que coincide, a partir da nossa infraestrutura, sem consultas periódicas nem conexão permanente do seu lado.
A sintaxe cron de sempre e onde ela se encaixa
O formato cron nasceu com o utilitário cron original do Unix nos anos 1970, para que administradores listassem tarefas recorrentes como simples linhas de texto. Décadas depois, a mesma sintaxe compacta continua sendo a linguagem comum dos agendamentos em quase todo lugar, então as expressões que você já tem, e o costume de escrevê-las, servem do mesmo jeito. Em vez de um processo em segundo plano cujo único trabalho é acordar, ver a hora e disparar uma chamada, essa lógica passa para o agendamento registrado. Serve para relatório noturno, checagem de renovação de assinatura ou aquecimento de cache, em equipes pequenas ou projetos paralelos.
Adeus, servidor ligado só para o crontab
Muita gente mantém uma VPS inteira apenas para rodar meia dúzia de tarefas agendadas. Funciona com qualquer linguagem e qualquer stack, porque do seu lado só precisa existir uma URL acessível que saiba o que fazer quando for chamada.
O que agendar primeiro
Os clássicos: gerar relatório diário antes de o expediente começar, sincronizar estoque com o e-commerce de meia em meia hora, disparar cobranças pendentes toda segunda-feira de manhã, limpar registros temporários de madrugada. A regra prática é simples — toda rotina que hoje depende de alguém lembrar de apertar um botão é candidata a virar uma expressão cron. Comece pela tarefa que mais dói quando é esquecida.
Deixe seu endereço pronto para receber as chamadas
Antes de agendar, teste a URL manualmente e confirme que ela responde rápido e faz o trabalho todo sozinha. Vale também torná-la idempotente — ou seja, capaz de ser chamada duas vezes sem duplicar efeitos — e proteger o endereço com um token na própria URL ou no cabeçalho, para que só o agendador consiga acioná-la. São dez minutos de preparo que evitam sustos em produção.
Perguntas frequentes
Preciso manter algum servidor ligado do meu lado?
Não — essa é a graça. Só precisa existir uma URL acessível pela internet no momento da chamada. O relógio e o disparo ficam por conta do serviço.
Que formato de expressão cron é aceito?
O formato clássico de cinco campos (minuto, hora, dia do mês, mês, dia da semana), o mesmo do crontab do Linux. Se você nunca escreveu uma, comece por exemplos prontos como “0 8 * * 1-5” — dias úteis às 8h.
E se a minha URL estiver fora do ar no horário?
Antes de confiar tarefas críticas ao agendamento, acompanhe as primeiras execuções de ponta a ponta.
Como eu pago? Tem Pix?
O pagamento é por uso, em dólar (US$), via PayPal — ainda não aceitamos Pix, e preferimos dizer isso com todas as letras a fingir o contrário. Sem cadastro e sem assinatura: você paga pelo que executar.
O que eu preciso enviar para agendar?
Três coisas: uma expressão cron que diz quando, a URL que deve ser chamada e o conteúdo enviado a cada execução. Depois do registro, o agendamento fica guardado e você recebe a confirmação de que está ativo.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Um POST autenticado cria a tarefa; o resultado chega por webhook ou por um link assinado. Esta capacidade está disponível pela API, não como ferramenta web interativa.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/cron-webhook \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/hook","cron":"0 9 * * 1"}'const res = await fetch("https://api.kit.forhosting.com/dev/cron-webhook", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://example.com/hook",
"cron": "0 9 * * 1"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/cron-webhook",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://example.com/hook",
"cron": "0 9 * * 1"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/cron-webhook", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://example.com/hook","cron":"0 9 * * 1"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://example.com/hook","cron":"0 9 * * 1"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/cron-webhook", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"url": "https://example.com/hook",
"cron": "0 9 * * 1"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.cron_webhook",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
O agendador de webhook recebe uma expressão cron e uma URL e chama esse endereço nos horários definidos, sem você manter servidor nem crontab rodando.
Como funciona o agendamento
Você cadastra uma expressão cron — o formato clássico de cinco campos que define minuto, hora, dia, mês e dia da semana — e a URL que deve ser chamada. A partir daí, o serviço dispara uma requisição HTTP para esse endereço em cada horário previsto, sem que nada precise rodar do seu lado. Cada disparo é uma execução, e é por execução que você paga: US$ 0,002, sem mensalidade e sem plano mínimo.
Adeus, servidor ligado só para o crontab
Com o webhook agendado, essa máquina se aposenta: a lógica continua no seu sistema — que pode estar em hospedagem compartilhada, em função serverless ou atrás de um endpoint qualquer — e o relógio fica por conta do serviço.
Casos de integração
Relatório diário no e-mail do gestor
A TecnoSul Soluções Digitais ME agendou um webhook para as 6h45, de segunda a sexta: o endpoint gera o resumo de chamados do dia anterior e envia para a diretoria antes de o expediente começar em São Paulo.
Sincronização de estoque da loja virtual
A Distribuidora Horizonte Verde S.A. dispara a cada 30 minutos um webhook que compara o estoque do ERP com o do e-commerce. Produto que zerou sai do ar sozinho, sem ninguém vigiar planilha.
Cobrança recorrente sem depender da memória
Rafael Almeida Costa, dev freelancer em Recife, mantém para um cliente um webhook que roda todo dia 1º às 8h e gera os boletos do mês no sistema de cobrança — tarefa que antes dependia da memória do financeiro.
Perguntas técnicas
Quanto custa cada execução?
US$ 0,002 por execução realizada. Não existe mensalidade, plano nem valor mínimo: um agendamento que roda uma vez por dia custa cerca de US$ 0,06 por mês.
Vocês guardam os dados que passam pelo webhook?
Guardamos o necessário para prestar o serviço: a expressão cron e a URL de destino que você cadastrou. O conteúdo da sua rotina roda no seu sistema, não no nosso.