aethexDocs

URLs signées

URLs signées à courte durée de vie pour la lecture audio intégrable de conversations.

Quand en utiliser une

Les clés API sont conçues pour une utilisation serveur à serveur. Quand vous devez intégrer l'audio d'une conversation dans une interface orientée client sans proxifier les octets via votre serveur, générez une URL signée à courte durée de vie à la demande et transmettez-la au navigateur. L'URL signée est limitée à une conversation, expire rapidement et ne porte aucune autre autorisation. La perdre ne compromet pas votre clé API.Pour des conversations WebRTC en temps réel depuis un navigateur, utilisez le handshake WebRTC (POST /conversation/connect → POST /conversation/:session_id/offer ; trickle ICE via PATCH /conversation/:session_id/ice uniquement si nécessaire). Il n'existe pas de transport URL-signée pour le trafic WebRTC en direct.

Remarque
Les URLs signées ici sont liées à une conversation, pas des jetons API génériques. Elles authentifient la lecture audio d'une conversation terminée, pas des appels API arbitraires.

Lecture audio de conversation

Appelez GET /api/v1/conversations/{conversation_id}/audio depuis votre serveur (portée : conversations:read) pour obtenir une URL signée à courte durée de vie pour l'audio d'une conversation terminée. Transmettez l'URL au navigateur pour une lecture directe. Aucun octet audio ne transite par votre serveur.

Astuce
L'URL est signée avec un TTL court. Générez-la à la demande quand l'utilisateur clique sur Lecture, pas au moment du chargement de la liste des conversations.
bash
curl https://api.aethexai.com/api/v1/conversations/{conversation_id}/audio \
  -H "X-API-Key: ae_live_..."

Quand une URL signée échoue

Si le jeton a expiré ou a été altéré, la requête audio est rejetée avec 401. Générez une nouvelle URL signée et réessayez. Il n'y a intentionnellement pas de flux de rafraîchissement ; le TTL est court.

401Non autorisé : jeton invalide ou expiré

Le TTL court s'est écoulé, ou le jeton a été altéré en transit. Les deux produisent le même 401.

Générez des URLs signées au moment où le client est sur le point de récupérer l'audio, pas à l'avance. Ne les mettez pas en cache.

json
{
  "detail": "Invalid or expired audio token"
}
401Non autorisé : jeton et clé API manquants

L'URL audio est dépourvue de son paramètre token et aucune clé API n'a été fournie.

Demandez toujours l'URL audio depuis votre serveur — il générera un nouveau jeton à la demande. Ne modifiez pas la chaîne de requête.

json
{
  "detail": "Missing audio token or API key"
}