Chaque requête a un id que vous pouvez citer

· Hyperouter · 3 min de lecture

Quand une requête fait autre chose que ce que vous attendiez, le plus rapide pour en parler est son id. Chaque requête qu’Hyperouter accepte en a un, il revient dans la réponse, et c’est la clé de l’enregistrement de cette requête.

Où se trouve l’id

L’id est un UUID, et la documentation l’appelle l’id de requête. Il se trouve dans le corps de la réponse, sous un nom différent selon l’endpoint :

RequêteOù se trouve l’id
POST /v1/chat/completionsid de la chat completion.
POST /v1/images/generations, POST /v1/images/editsid de la réponse image. Avec Prefer: respond-async, id du 202.
POST /v1/videos et les autres appels vidéoid de l’objet Video.
Une erreur concernant une tâche qui continue, comme le 503 timeout d’une imageerror.generation_id.
Une chat completion répétée sous une Idempotency-Keyerror.generation_id du 409 idempotency_key_replayed : l’id de la première requête.

La documentation ne nomme aucun en-tête de réponse pour l’id de requête : lisez donc l’id dans le corps. Consignez l’id à côté de l’appel dans votre propre code :

res = client.chat.completions.create(
    model="x-ai/grok-4.7",
    messages=[{"role": "user", "content": "Hello"}],
)
log.info("hyperouter request %s cost=%s", res.id, res.usage.cost)

Le champ usage.cost est un ajout d’Hyperouter à l’objet usage : un SDK typé peut donc ne pas le déclarer, mais la valeur est dans le JSON.

La retrouver

GET /v1/generations/{id} renvoie l’enregistrement de l’une de vos requêtes, de n’importe quel type :

curl https://api.hyperouter.app/v1/generations/0194f2c4-7a1e-7b3c-9d02-5f6a1c0e8b21 \
  -H "Authorization: Bearer $HYPEROUTER_API_KEY"

L’enregistrement contient le kind (chat, image ou video), le model, le status (queued, submitting, running, done ou failed), created_at et finished_at, le usage et son cost, ttft_ms et latency_ms, ainsi qu’un error avec un code et un message lorsque la requête a échoué. Pour une requête de chat terminée, provider_name indique quel fournisseur l’a servie. Pour les images et les vidéos, outputs contient des liens signés, valables 24 heures, pendant 30 jours après la requête.

usage_estimated vaut true lorsque le fournisseur n’a envoyé aucun compte de tokens et qu’Hyperouter les a comptés.

Le texte des prompts et des complétions ne figure jamais dans l’enregistrement. Hyperouter ne le renvoie par aucune API ni aucune page du tableau de bord.

Un id qui n’est pas un UUID, qui n’existe pas ou qui appartient à un autre compte répond 404 not_found. Vous ne pouvez lire que vos propres requêtes.

La citer dans un ticket

Ouvrez un ticket dans le tableau de bord pour la facturation, les recharges et les questions sur l’API, et notre équipe répond dans le même fil. Veuillez indiquer l’id de la réponse lorsque vous signalez une requête précise.

Un bon signalement contient trois choses : l’id, ce que vous attendiez et ce que vous avez obtenu. Collez le statut et l’error de GET /v1/generations/{id} si vous les avez. L’id permet à l’équipe de retrouver la requête elle-même au lieu de vous demander de la décrire.

Si une réponse d’erreur ne porte aucun id, citez plutôt son statut, son code et l’heure de la requête.

Rapprocher les dépenses

Le même id répond à la question de ce qu’a coûté une requête. usage.cost est le montant débité en USD, sous forme de nombre JSON. Si vous stockez l’id avec chaque tâche dans votre propre base de données, vous pouvez faire correspondre vos enregistrements à ceux d’Hyperouter un à un. Le chat, l’image et la vidéo fonctionnent tous de la même façon.

Et ensuite