Répartir le temps d'examen par question selon les points
Établissez un planning d'examen pratique à partir de la durée totale et des points attribués à chaque question.
Lancer gratuitement
Le calculateur répartit les minutes proportionnellement : les tâches les mieux notées reçoivent davantage de temps, les autres moins. L'arrondi préserve la durée complète et l'ordre initial, ce qui donne aux candidats un repère clair et permet aux enseignants de comparer le barème avec l'effort attendu.
Saisissez tout le barème
Indiquez la durée complète en minutes et répertoriez les questions dans l'ordre du sujet. Choisissez un libellé reconnaissable et recopiez exactement la valeur maximale. Chaque question obtient la même proportion du temps que sa part dans le total des points. Vous pouvez inclure un item à zéro point, mais au moins une valeur doit être positive ; sinon, la demande renvoie une erreur. Vérifiez les données sur le sujet officiel, car une valeur mal saisie modifie toutes les allocations.
Interprétez correctement l'arrondi
Le résultat affiche des centièmes de minute et conserve une somme exacte. Le calcul attribue d'abord les centièmes entiers de chaque part mathématique, puis distribue le reliquat selon les plus grands restes décimaux. L'ordre initial départage une égalité. Une saisie identique produit toujours le même résultat. Dans une épreuve très courte, une petite question peut afficher zéro minute ; cela signale un planning trop serré et ne vous invite pas à l'ignorer.
Transformez le planning en jalons
Servez-vous des allocations comme d'un repère adaptable. Vous pouvez cumuler les temps pour inscrire des jalons au début des parties et réserver auparavant quelques minutes à la lecture ou à la relecture. Les enseignants peuvent confronter la répartition à la difficulté réelle, aux documents et aux calculs demandés. Pour un aménagement, saisissez d'abord la durée accordée. L'outil n'évalue ni la vitesse de lecture, ni les transitions, ni les aptitudes individuelles ; adaptez donc cette base transparente si nécessaire.
Cas d’usage
Préparer un rythme d'examen
Convertissez le barème en objectifs par question et en jalons cumulés.
Contrôler l'équilibre de l'épreuve
Comparez le temps issu des points avec l'effort attendu pour chaque tâche.
Appliquer un temps supplémentaire
Recalculez les mêmes proportions avec une durée aménagée.
Questions fréquentes
Comment les durées conseillées sont-elles calculées ?
Chaque question reçoit la proportion de la durée correspondant à sa part des points totaux.
Que se passe-t-il si le total est nul ?
La demande renvoie une erreur de saisie, car aucune proportion ne peut être calculée avec une somme nulle.
Une question peut-elle valoir zéro point ?
Oui. Elle reçoit zéro minute si au moins une autre question possède une valeur positive.
Les durées arrondies donnent-elles le total exact ?
Oui. Les centièmes restants sont distribués afin de préserver la durée affichée.
Quel est le prix d'une demande API ?
Le tarif de l'API est de $0.002 par demande.
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/edu/exam-time-per-question \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"duration_minutes":120,"questions":[{"question":"Definitions","points":15},{"question":"Analysis","points":35},{"question":"Essay","points":50}]}'const res = await fetch("https://api.kit.forhosting.com/edu/exam-time-per-question", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"duration_minutes": 120,
"questions": [
{
"question": "Definitions",
"points": 15
},
{
"question": "Analysis",
"points": 35
},
{
"question": "Essay",
"points": 50
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/exam-time-per-question",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"duration_minutes": 120,
"questions": [
{
"question": "Definitions",
"points": 15
},
{
"question": "Analysis",
"points": 35
},
{
"question": "Essay",
"points": 50
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/exam-time-per-question", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"duration_minutes":120,"questions":[{"question":"Definitions","points":15},{"question":"Analysis","points":35},{"question":"Essay","points":50}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"duration_minutes":120,"questions":[{"question":"Definitions","points":15},{"question":"Analysis","points":35},{"question":"Essay","points":50}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/exam-time-per-question", 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
{
"duration_minutes": 120,
"questions": [
{
"question": "Definitions",
"points": 15
},
{
"question": "Analysis",
"points": 35
},
{
"question": "Essay",
"points": 50
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.exam_time_per_question",
"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. |