Webhook planifié
Un webhook planifié appelle une adresse web à un moment programmé, tout seul. Vous indiquez l’URL à déclencher et l’horaire — une heure fixe, chaque matin, ou une expression cron — et le service se charge de l’appeler à l’instant voulu, sans machine allumée en permanence ni tâche cron à héberger.
Une tâche cron sans serveur
Déclencher une action tous les jours à la même heure suppose d’ordinaire une machine allumée et une tâche cron à configurer et à surveiller. Ce service enlève cette charge : vous décrivez quand et quelle URL appeler, il exécute l’appel à l’heure dite. Idéal pour lancer un traitement, rafraîchir un cache, envoyer un rappel ou réveiller un autre service à intervalle régulier, sans maintenir vous-même l’infrastructure qui tient l’horloge.
Décrire le bon horaire
L’horaire s’exprime simplement — chaque jour à une heure donnée — ou avec une expression cron pour les cas plus fins : tous les lundis, le premier du mois, toutes les quinze minutes. Pensez au fuseau horaire : un rappel prévu pour le matin à Paris doit être calé sur le bon décalage. À l’heure venue, le service émet une requête vers votre URL, que votre application traite comme n’importe quel appel entrant.
Facturé à l’exécution
Le service tourne sur notre infrastructure et se facture à l’usage : $0.002 par exécution, en dollars US, sans abonnement ni compte. Vous ne payez que les déclenchements réellement effectués. La planification se met en place depuis cette page comme par API et, à terme, par d’autres canaux. Nous ne gardons pas le contenu de vos appels au-delà de ce qu’il faut pour les déclencher et vous en rendre compte.
Cas d’usage
Rapport quotidien
Studio Lumen SAS déclenche chaque matin l’URL qui compile son rapport d’activité, sans serveur dédié.
Rappel hebdomadaire
Une association appelle tous les lundis un webhook qui envoie un pense-bête à ses bénévoles.
Rafraîchissement de cache
Un développeur programme un appel horaire pour régénérer les données mises en cache de son site.
Synchronisation planifiée
Atelier Garnier SARL lance chaque nuit une synchronisation de son stock via un appel programmé.
Questions fréquentes
Ai-je besoin de mon propre serveur ?
Non. Le service tient l’horloge à votre place et appelle votre URL à l’heure prévue. Vous n’avez ni machine à laisser allumée ni tâche cron à héberger de votre côté.
Comment définir la fréquence ?
Par un horaire simple — chaque jour à telle heure — ou par une expression cron pour des cas précis : chaque lundi, toutes les quinze minutes, le premier du mois.
Le fuseau horaire est-il pris en compte ?
Oui, et il faut le préciser. Un déclenchement se cale sur le fuseau que vous indiquez, pour éviter tout décalage à l’exécution d’une région à l’autre.
Combien coûte ce service ?
$0.002 par exécution, en dollars US, sans abonnement. Vous ne payez que les déclenchements réellement effectués, sans compte.
Que se passe-t-il si mon URL ne répond pas ?
Le service note l’échec de l’appel. Selon le besoin, une nouvelle tentative peut être prévue ; précisez-le à la mise en place pour définir le comportement attendu.
Conservez-vous le contenu de mes appels ?
Non, au-delà de ce qu’il faut pour déclencher l’appel et vous en rendre compte. Les échanges passent par un canal chiffré et ne sont pas exploités à d’autres fins.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"input": "…"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.cron_webhook",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |