Vérifiez les conflits horaires de votre itinéraire
Le vérificateur de conflits horaires examine vos activités planifiées et repère chaque paire occupant le même créneau.
Lancer gratuitement
Indiquez un nom ainsi que les heures de début et de fin au format 24 heures HH:MM. Le résultat précise la présence et le nombre de conflits, les activités concernées et leur intervalle commun. Toute activité finissant avant son début est refusée afin d’éviter un diagnostic trompeur.
Saisissez un itinéraire journalier sans ambiguïté
Donnez un nom explicite à chaque activité et saisissez son début et sa fin au format 24 heures HH:MM. Toutes les lignes sont réputées appartenir au même jour : l’outil convient donc à une visite touristique, un congrès, une excursion ou une journée de transport. Choisissez des noms reconnaissables dans le résultat ; « Visite guidée du musée » sera plus utile que « Visite ». L’ordre chronologique n’est pas obligatoire. Le vérificateur compare toutes les paires et conserve l’indice initial, à partir de 0, afin qu’un logiciel puisse retrouver exactement l’enregistrement transmis. Une heure de fin égale à l’heure de début décrit une activité sans durée et ne crée aucun chevauchement. Une activité nocturne allant de 23:00 à 01:00 sort du modèle journalier, car sa fin paraît antérieure à son début. Répartissez ces activités par date avant de lancer le contrôle.
Sachez précisément ce qui constitue un conflit
Deux activités sont en conflit seulement si elles partagent une durée strictement positive. Si une visite finit à 11:00 et que le déjeuner commence à 11:00, leurs limites se touchent sans se chevaucher. Un début à 10:59 crée en revanche un conflit d’une minute. Pour chaque collision, la réponse fournit les noms et indices des deux activités, le début et la fin du créneau commun et sa durée en minutes. Le relevé reste exhaustif : lorsque trois activités occupent le même créneau, les trois paires apparaissent au lieu d’un bloc imprécis. Chaque relation peut ainsi être traitée séparément par une personne ou un programme. Les paires suivent un ordre déterministe fondé sur la saisie, sans classement par gravité. Une activité entièrement incluse dans une autre reste un conflit ; toute sa durée devient le créneau commun. Deux horaires identiques se chevauchent également sur toute leur durée.
Corrigez les plages invalides et exploitez la réponse
Chaque heure est validée avant toute comparaison. Elle doit comporter deux chiffres pour l’heure, un deux-points et deux chiffres pour les minutes, entre 00:00 et 23:59. Une fin antérieure au début provoque immédiatement une erreur de saisie. Aucun passage de nuit ni aucune correction automatique ne sont supposés, car cela pourrait masquer une réservation erronée. Avec une liste valide, consultez `has_conflicts` pour une décision simple, `conflict_count` pour résumer le planning et `conflicts` pour afficher les détails près des lignes d’origine. Un organisateur peut demander un choix pour chaque paire, tandis qu’un tableur peut signaler les indices concernés. Après modification, renvoyez la liste complète : zéro conflit confirme l’absence de chevauchement de durée positive. Le calcul est déterministe, sans réseau ni horloge actuelle. L’utilisation dans le navigateur est gratuite et chaque requête API est facturée au tarif de base publié de $0.002.
Cas d’usage
Contrôler une journée touristique
Vérifiez billets horodatés, visites, repas et transferts avant de confirmer une journée chargée.
Valider le programme d’un congrès
Repérez les séances, réunions et réceptions qui mobilisent la même personne simultanément.
Équiper un planificateur
Exploitez les indices stables et les paires complètes pour signaler les éléments à reprogrammer.
Questions fréquentes
Quel format horaire faut-il employer ?
Utilisez le format 24 heures HH:MM, de 00:00 à 23:59, par exemple 09:30 ou 18:05.
Deux activités consécutives sont-elles en conflit ?
Non. Si l’une finit exactement au début de l’autre, les intervalles se touchent seulement et aucun conflit n’est signalé.
Que se passe-t-il si la fin précède le début ?
La requête échoue avec une erreur de saisie indiquant la position. L’outil ne suppose pas que l’activité se poursuit pendant la nuit.
Plusieurs conflits peuvent-ils être signalés ?
Oui. Chaque paire qui se chevauche est renvoyée, avec toutes les combinaisons lorsque trois activités ou plus coïncident.
Puis-je contrôler des activités à des dates différentes ?
Pas directement. Le contrôle compare les heures d’un même jour. Regroupez les activités par date et vérifiez chaque journée séparément.
Combien coûte une requête API ?
Une requête API suit le tarif de base publié de $0.002. La version en ligne exécute gratuitement le même contrôle déterministe.
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/travel2/itinerary-time-conflict-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"activities":[{"name":"Museum visit","start":"09:00","end":"11:00"},{"name":"Walking tour","start":"10:30","end":"12:00"}]}'const res = await fetch("https://api.kit.forhosting.com/travel2/itinerary-time-conflict-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"activities": [
{
"name": "Museum visit",
"start": "09:00",
"end": "11:00"
},
{
"name": "Walking tour",
"start": "10:30",
"end": "12:00"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel2/itinerary-time-conflict-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"activities": [
{
"name": "Museum visit",
"start": "09:00",
"end": "11:00"
},
{
"name": "Walking tour",
"start": "10:30",
"end": "12:00"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel2/itinerary-time-conflict-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"activities":[{"name":"Museum visit","start":"09:00","end":"11:00"},{"name":"Walking tour","start":"10:30","end":"12:00"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"activities":[{"name":"Museum visit","start":"09:00","end":"11:00"},{"name":"Walking tour","start":"10:30","end":"12:00"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel2/itinerary-time-conflict-check", 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
{
"activities": [
{
"name": "Museum visit",
"start": "09:00",
"end": "11:00"
},
{
"name": "Walking tour",
"start": "10:30",
"end": "12:00"
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel2.itinerary_time_conflict_check",
"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. |