Webhook programmato con cron
Un webhook programmato è una chiamata HTTP che parte da sola, agli orari che decidi tu con una regola cron. Questo strumento del KIT la esegue al posto tuo: imposti la frequenza e l’indirizzo di destinazione, lui richiama l’endpoint puntuale, senza un server o un cron job tuo sempre attivo.
La sintassi cron, in breve
Cinque campi separati da uno spazio decidono quando: minuto, ora, giorno del mese, mese, giorno della settimana. Scrivi “0 9 * * 1-5” per dire ogni giorno feriale alle 9, oppure “*/15 * * * *” per ogni quarto d’ora. Il KIT chiama il tuo webhook esattamente a quell’orario, con il payload che hai definito tu: non devi installare nulla né tenere un processo acceso in background, e la regola resta attiva finché non la modifichi o la elimini tu stesso.
Un caso concreto: il report del lunedì
Lo Studio Commercialista Bianchi di Bologna deve rigenerare ogni lunedì mattina il riepilogo delle scadenze fiscali della settimana. Con la regola “0 7 * * 1” il KIT chiama l’endpoint che prepara il PDF alle 7 in punto e lo invia allo studio: nessuno deve ricordarsi di avviarlo a mano, e non serve un server dedicato acceso ventiquattr’ore su ventiquattro solo per un cron che scatta una volta a settimana.
Cosa vedi quando la chiamata parte
Ogni esecuzione lascia una traccia: l’orario in cui è partita, la risposta del tuo endpoint, l’esito. Se il tuo server non risponde, il tentativo risulta fallito e lo vedi nel registro, così te ne accorgi subito invece di scoprirlo giorni dopo perché un report non è mai arrivato a destinazione. Puoi consultare lo storico delle esecuzioni passate in qualsiasi momento, senza dover ricostruire a memoria quando è partita l’ultima chiamata andata a buon fine.
Un servizio del KIT, non un altro cron da gestire
La programmazione gira sull’infrastruttura del KIT, non sulla tua: configuri la regola dalla pagina web o via API e da quel momento non mantieni nessun processo sempre acceso. Ogni chiamata eseguita costa $0.002, prezzo pubblicato: paghi solo le esecuzioni che avvengono davvero, senza un canone fisso per il servizio e senza doverti preoccupare di riavviare nulla se il tuo computer resta spento.
Casi d'uso
Sincronizzare il magazzino ogni notte
Tecnoedil Verona S.n.c. sincronizza ogni notte alle 2 lo stock dei materiali con il gestionale del fornitore: la regola cron chiama il webhook che avvia l’aggiornamento, senza che nessuno debba lanciarlo a mano prima di aprire il cantiere.
Cache aggiornata ogni ora
Alessandro Ferrari, sviluppatore freelance a Torino, tiene aggiornata la cache del suo sito con una chiamata programmata ogni ora, senza pagare un server dedicato acceso solo per eseguire un cron.
Fattura ricorrente il primo del mese
Rossi & Figli S.r.l. genera in automatico la fattura mensile per i clienti con contratto ricorrente: il primo di ogni mese il webhook programmato avvia la procedura, puntuale come un orologio.
Domande frequenti
Che sintassi usa il cron?
La classica a cinque campi: minuto, ora, giorno del mese, mese, giorno della settimana, con * per “ogni valore” e liste come 1-5 per l’intervallo. È la stessa sintassi che trovi in qualunque crontab Unix.
Quanto costa ogni chiamata programmata?
$0.002 a esecuzione, prezzo pubblicato. Non c’è canone fisso: paghi solo le volte in cui il webhook viene effettivamente chiamato.
Devo creare un account per programmarlo?
No. Oggi il KIT non ha account: configuri la regola e attivi il servizio direttamente, via web o via API, senza creare nessuna utenza.
Cosa succede se il mio endpoint non risponde?
Il tentativo risulta fallito e resta nel registro delle esecuzioni con l’orario e l’esito, così puoi controllare cos’è andato storto senza dover indovinare.
Il contenuto che invio resta privato?
Il payload viaggia solo verso l’endpoint che indichi tu: il KIT lo usa esclusivamente per effettuare la chiamata programmata, non lo conserva né lo condivide con altri.
Posso cambiare l’orario dopo averlo impostato?
Sì. Puoi modificare la regola cron o l’indirizzo di destinazione in qualsiasi momento, senza dover ricreare la programmazione da zero.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev/cron-webhook \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'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({
"input": "…"
})
});
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={
"input": "…"
},
)
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" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
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)Esempio di richiesta
{
"input": "…"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.cron_webhook",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |