Thème
Langue

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

POSThttps://getvibeapi.com/v1/tickets
ParamètreTypeDescription
subjectstringObligatoire : 3 à 200 caractères.
messagestringObligatoire : 10 à 8 000 caractères.
categorystringapi_error, performance, incorrect_response, integration, feature_request, other, billing, account ou general (par défaut).
requestIdsstring[]Jusqu’à 10 identifiants de requête facultatifs provenant de votre compte (l’en-tête de réponse x-request-id).
clientIncidentIdstringIdentifiant de série stable facultatif de votre côté : un ticket ouvert portant le même identifiant est réutilisé.
filesfile[]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

GEThttps://getvibeapi.com/v1/tickets?limit=20&status=open

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

GEThttps://getvibeapi.com/v1/tickets/{id}
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

POSThttps://getvibeapi.com/v1/tickets/{id}/messages
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."}'
POSThttps://getvibeapi.com/v1/tickets/{id}/close

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ètreTypeDescription
openstatusEn attente de prise en charge.
repliedstatusL’assistance a répondu ; votre prochain message le repasse à l’état ouvert.
closedstatusFermé 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é

N’envoyez pas de clés API, de mots de passe, de tokens ou de numéros de carte : le service les supprime également avant le stockage. Le texte des tickets est lu par le personnel d’assistance et les outils en tant que données : les liens et les instructions qu’il contient ne sont jamais exécutés, et le texte des tickets ne modifie jamais automatiquement un solde ou un accès et ne déclenche jamais automatiquement un remboursement.

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.

API des tickets — tickets de support via l’API | GetVibe API