Référence de l'API · Sessions et messages
API des sessions de chat et des messages
Créer, lister, renommer, épingler, marquer comme favori et supprimer des sessions de chat, et gérer les messages individuels qu'elles contiennent — y compris l'historique des modifications suivi et l'annulation.
Points de terminaison de session
POST /api/v1/sessionsGET /api/v1/sessionsGET /api/v1/sessions/{session_id}/messagesPATCH /api/v1/sessions/{session_id}DELETE /api/v1/sessions/{session_id}Points de terminaison de messages
GET /api/v1/messages/{message_id}PATCH /api/v1/messages/{message_id}GET /api/v1/messages/{message_id}/historyPOST /api/v1/messages/{message_id}/undoDELETE /api/v1/messages/{message_id}Créer une session — Corps de la requête
{
"title": "Untitled Chat",
"kind": "chat",
"folder_id": null,
"agent_id": null,
"metadata": {}
}workspace_id n'est pas accepté depuis le client dans le runtime personnel, et doit correspondre au contexte d'exécution actif de l'espace de travail sinon — il n'est jamais pris comme une substitution arbitraire fournie par le client.
Lister — Paramètres de requête et réponse
{
"items": [ { "id": "...", "title": "...", "pinned": false, "...": "..." } ],
"total": 12,
"limit": 50,
"offset": 0
}Mettre à jour la session (PATCH)
Au moins un champ doit être présent dans le corps de la requête — un PATCH vide est rejeté.
{
"pinned": true,
"starred": false
}Comportements de session
- Une session appartient exactement à un seul propriétaire (un utilisateur, éventuellement associé à un espace de travail) — déterminé par le contexte de la requête authentifiée, et non par les données fournies par le client.
- La suppression d'une session est une suppression logique (deleted_at est défini) ; la session et ses messages restent dans la base de données mais sont exclus de toutes les requêtes standard.
- GET /sessions/{session_id}/messages renvoie un décompte de messages calculé en temps réel à partir des messages eux-mêmes, et non un compteur mis en cache.
- Les paramètres de chemin session_id et message_id sont validés en tant qu'UUID — un ID malformé renvoie une erreur de validation claire, et non une erreur serveur.
- Les sessions de démonstration du site marketing sont limitées à 3 par utilisateur et renvoient 403 une fois cette limite atteinte.
Historique des modifications des messages et annulation
Chaque modification du contenu ou de la charge utile d'un message est enregistrée avant l'application du changement, préservant la version précédente.
[
{
"id": "8f14e...",
"old_content": "Original message text",
"old_payload": null,
"edited_at": "2026-07-30T16:40:00Z"
}
]- Un message ne peut être modifié ou supprimé que par le propriétaire de la session à laquelle il appartient.
- Undo restaure la version enregistrée la plus récente et supprime cette entrée d'historique — cela ne revient pas au-delà de la dernière modification.
- La modification ou la suppression d'un message n'ajuste pas actuellement le champ de décompte mis en cache de la session ; il reflète toujours le décompte en direct.
Modèles d'erreur
400
Requête invalide — notamment un corps PATCH vide ou l'absence de modifications détectées.
401
Authentification manquante ou invalide.
404
Session ou message introuvable (ou n'appartenant pas à l'appelant).
Exemples
Créer une session
curl -X POST "/api/v1/sessions" \
-H "Authorization: Bearer [token]" \
-H "Content-Type: application/json" \
-d '{"title": "New Chat", "kind": "chat"}'Épingler une session
curl -X PATCH "/api/v1/sessions/[session_id]" \
-H "Authorization: Bearer [token]" \
-H "Content-Type: application/json" \
-d '{"pinned": true}'Modifier un message
curl -X PATCH "/api/v1/messages/[message_id]" \
-H "Authorization: Bearer [token]" \
-H "Content-Type: application/json" \
-d '{"content": "Corrected message text"}'Annuler la dernière modification
curl -X POST "/api/v1/messages/[message_id]/undo" \
-H "Authorization: Bearer [token]"