Tickets d’assistance via l’API
POST /v1/tickets — ouvrez un ticket d’assistance, consultez le fil de discussion, envoyez des messages de suivi et clôturez-le avec une clé API : champs, pièces jointes, statuts, limites et compatibilité avec /v1/technical-feedback.
L’API Tickets est l’unique canal d’assistance : un ticket ouvert via l’API apparaît dans le tableau de bord, et inversement. Authentifiez-vous avec une clé API (Authorization: Bearer ou X-API-Key) ou une session de tableau de bord. Vous ne voyez jamais que vos propres tickets.
Ouvrir un ticket
| Paramètre | Type | Description |
|---|---|---|
subject | string | Obligatoire : 3 à 200 caractères. |
message | string | Obligatoire : 10 à 8 000 caractères. |
category | string | api_error, performance, incorrect_response, integration, feature_request, other, billing, account ou general (par défaut). |
requestIds | string[] | Jusqu’à 10 identifiants de requête facultatifs provenant de votre compte (l’en-tête de réponse x-request-id). |
clientIncidentId | string | Identifiant de série stable facultatif de votre côté : un ticket ouvert portant le même identifiant est réutilisé. |
files | file[] | multipart/form-data uniquement : jusqu’à 5 images PNG, JPEG, GIF ou WebP, 10 MB chacune, 10 par ticket. |
curl https://getvibeapi.com/v1/tickets \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": "Stream stops after 30 seconds",
"message": "stream=true on /v1/chat/completions stops after about 30 seconds; retrying does not help.",
"category": "api_error",
"requestIds": ["req_123"]
}'Avec une capture d’écran — multipart :
curl https://getvibeapi.com/v1/tickets \
-H "Authorization: Bearer $API_KEY" \
-F subject="Wrong response" \
-F message="The model returns an empty answer, screenshot attached." \
-F category=incorrect_response \
-F [email protected]Réponse
{
"deduplicated": false,
"ticket": {
"id": "cmg1abc234",
"object": "ticket",
"subject": "Stream stops after 30 seconds",
"category": "api_error",
"source": "api",
"status": "open",
"requestIds": ["req_123"],
"clientIncidentId": null,
"occurrences": 1,
"createdAt": "2026-09-27T09:14:00.000Z",
"updatedAt": "2026-09-27T09:14:00.000Z",
"repliedAt": null
}
}Un nouveau ticket renvoie 201. Si le même ticket ouvert existe déjà (même catégorie, sujet, message et requestIds, ou même clientIncidentId), ce ticket est renvoyé avec deduplicated: true, le statut 200 et un occurrences supérieur.
Lister les tickets
Du plus récent au plus ancien. Réponse : { "object": "list", "data": [...], "hasMore": true, "nextCursor": "..." }. Page suivante : ?after=<nextCursor>. limit est compris entre 1 et 100.
Fil et état
curl https://getvibeapi.com/v1/tickets/cmg1abc234 \
-H "Authorization: Bearer $API_KEY"ticket.messages contient vos messages (author: "client") et les réponses du support (author: "staff") dans l’ordre chronologique. Téléchargez les pièces jointes avec GET /v1/tickets/{id}/attachments/{attachmentId}. Un ID étranger ou inconnu renvoie 404.
Effectuer le suivi et fermer
curl https://getvibeapi.com/v1/tickets/cmg1abc234/messages \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "It happened again today at 10:05 UTC, request id req_456."}'Un message (jusqu’à 8,000 caractères, multipart avec files autorisé) rouvre un ticket auquel une réponse a été apportée. Un ticket fermé ne peut pas recevoir de messages : il renvoie 409 ; ouvrez-en un nouveau. La fermeture est idempotente.
États
| Paramètre | Type | Description |
|---|---|---|
open | status | En attente de prise en charge. |
replied | status | L’assistance a répondu ; votre prochain message le repasse à l’état ouvert. |
closed | status | Fermé par vous ou par le support. |
Limites et erreurs
Par compte : 10 nouveaux tickets par heure et 60 messages par heure ; au-delà, 429 avec un en-tête Retry-After. Erreurs : { "error": "…", "code": "invalid_fields" } — codes invalid_fields, invalid_request_ids, too_many_attachments, file_too_large (413), unsupported_attachment (415), not_found (404), ticket_closed (409), rate_limited (429).
Sécurité
Compatibility: /v1/technical-feedback
POST /v1/technical-feedback et GET /v1/technical-feedback/{id} continuent de fonctionner avec les mêmes champs (category, summary, details, requestIds, clientIncidentId) et la réponse { "deduplicated", "incident" }. Un tel rapport est enregistré comme ticket (source: "technical-feedback") et apparaît dans GET /v1/tickets. Les demandes de modification du solde, de l’accès ou des déploiements y sont toujours rejetées avec 422. Les nouvelles intégrations doivent utiliser /v1/tickets.