Calculateur de fin de timebox avec marge
Une timebox n’est efficace que si sa fin ne prête pas à confusion. Ce calculateur ajoute un nombre fixe de minutes à une heure de début au format 24 heures et renvoie l’heure limite exacte, même lorsqu’elle tombe un autre jour.
Lancer gratuitement
Vous pouvez aussi réserver une marge protégée après la timebox afin que le bloc suivant ne commence pas immédiatement. Le résultat distingue travail et transition, ce qui convient aux réunions, séances de concentration, ateliers, entretiens et plannings opérationnels.
Fixez une heure limite visible de tous
Saisissez le début au format 24 heures strict HH:MM et indiquez la durée fixe sous forme d’un nombre entier de minutes. Le calculateur effectue une arithmétique d’horloge au lieu d’estimer à partir de l’heure actuelle : les mêmes valeurs donnent donc toujours la même réponse. L’heure limite correspond à l’instant où l’activité chronométrée s’achève ; la marge facultative n’en fait pas partie. Cette distinction est concrètement importante. Une discussion de cinquante minutes commencée à 09:35 se termine à 10:25, que vous protégiez ou non dix minutes supplémentaires pour les notes, un changement de salle ou une courte pause. En séparant ces quantités, vous évitez qu’un créneau annoncé de cinquante minutes devienne discrètement un engagement de soixante minutes. La réponse rappelle le début et la durée normalisés, affiche l’heure limite et fournit un décalage en jours. Zéro désigne le même jour civil, un le lendemain, et les valeurs supérieures couvrent les longues timeboxes sans imposer de date ni de fuseau horaire.
Réservez une transition sans modifier la timebox
Utilisez buffer_minutes lorsque le prochain bloc planifié ne doit pas commencer à l’heure limite. Le calculateur ajoute cette marge après la durée et renvoie next_block_time comme première heure protégée pour la suite. Par exemple, un atelier peut finir à 16:40 et le rendez-vous suivant commencer au plus tôt à 16:55, ce qui laisse quinze minutes pour les questions, le rangement, le déplacement ou la préparation. L’heure limite initiale reste 16:40 : la personne qui anime l’atelier peut ainsi respecter la durée promise. Avec une marge nulle, l’heure du bloc suivant est identique à l’heure limite. La marge doit être un nombre entier de minutes compris entre zéro et 1,440 ; vous pouvez donc ne prévoir aucune transition ou protéger une journée entière. Le résultat contient aussi next_block_day_offset, car une séance tardive et sa marge peuvent franchir minuit même si la timebox elle-même ne le fait pas. Ce changement explicite évite les horaires ambigus comme 00:10, qui n’indiqueraient pas autrement que l’heure affichée appartient au lendemain.
Comprenez le passage à minuit et la validation
Les heures se répètent toutes les vingt-quatre heures, contrairement au temps écoulé. Chaque heure calculée possède donc un champ de décalage en jours. Imaginons un bloc qui commence à 23:30 et dure quatre-vingt-dix minutes. Sa limite est 01:00 avec un décalage de un, et non 01:00 plus tôt le même jour. Si une marge de trente minutes suit, le prochain bloc peut commencer à 01:30 avec le même décalage. Les longues durées peuvent produire des valeurs supérieures à un, jusqu’au maximum pris en charge de 10,080 minutes, soit sept jours. Les entrées sont volontairement strictes afin que les intégrations API restent prévisibles : start_time doit contenir deux chiffres pour l’heure, un deux-points et deux chiffres pour les minutes ; les heures vont de 00 à 23 et les minutes de 00 à 59. Durées et marges doivent être des nombres entiers finis compris dans les limites déclarées. Une valeur incorrecte renvoie une erreur de saisie sans arrondi, supposition ni interprétation régionale. Ni date, ni heure d’été, ni horloge actuelle, ni réseau, ni fuseau caché n’influence le calcul.
Cas d’usage
Construisez l’ordre du jour d’une réunion
Donnez à chaque point une limite visible et préservez une transition avant l’intervention ou la séance suivante.
Planifiez une séance de concentration
Déterminez quand le travail soutenu doit finir et gardez une courte marge pour enregistrer, noter et récupérer.
Programmez entretiens et ateliers
Distinguez le temps promis aux participants des changements de salle, évaluations, rangements ou préparatifs.
Questions fréquentes
Que signifie l’heure limite ?
Il s’agit de l’heure de début augmentée de la durée fixe de la timebox. L’activité doit alors s’arrêter.
La marge est-elle comprise dans la durée ?
Non. Elle commence après la limite et repousse la première heure à laquelle le bloc suivant devrait débuter.
Que se passe-t-il si le résultat franchit minuit ?
L’horloge passe au lendemain et le champ de décalage concerné augmente afin de signaler clairement ce changement.
Puis-je saisir des secondes ou des minutes décimales ?
Non. Le calculateur accepte un début HH:MM et des nombres entiers de minutes pour la durée et la marge.
Le calculateur utilise-t-il mon fuseau horaire ?
Non. Il effectue uniquement un calcul déterministe, sans date, heure actuelle, heure d’été ni fuseau.
Combien coûte une requête API ?
Chaque requête API coûte $0.002. Le même calcul déterministe peut aussi s’exécuter dans le navigateur.
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/biz/timebox-end \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start_time":"09:35","duration_minutes":50}'const res = await fetch("https://api.kit.forhosting.com/biz/timebox-end", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start_time": "09:35",
"duration_minutes": 50
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/biz/timebox-end",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start_time": "09:35",
"duration_minutes": 50
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/biz/timebox-end", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start_time":"09:35","duration_minutes":50}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start_time":"09:35","duration_minutes":50}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/biz/timebox-end", 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
{
"start_time": "09:35",
"duration_minutes": 50
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.timebox_end",
"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. |