Tema
Idioma

Tickets de soporte mediante API

POST /v1/tickets — abre un ticket de soporte, lee el hilo, envía mensajes de seguimiento y ciérralo con una clave de API: campos, archivos adjuntos, estados, límites y compatibilidad con /v1/technical-feedback.

Tickets API es el único canal de soporte: un ticket abierto mediante la API aparece en el panel y viceversa. Autentícate con una clave de API (Authorization: Bearer o X-API-Key) o con una sesión del panel. Solo puedes ver tus propios tickets.

Abrir un ticket

POSThttps://getvibeapi.com/v1/tickets
ParámetroTipoDescripción
subjectstringObligatorio: de 3 a 200 caracteres.
messagestringObligatorio: de 10 a 8,000 caracteres.
categorystringapi_error, performance, incorrect_response, integration, feature_request, other, billing, account o general (predeterminado).
requestIdsstring[]Opcional, hasta 10 IDs de solicitud de tu cuenta (el encabezado de respuesta x-request-id).
clientIncidentIdstringID de serie estable opcional de tu lado: se reutiliza un ticket abierto con el mismo ID.
filesfile[]solo multipart/form-data: hasta 5 imágenes PNG, JPEG, GIF o WebP, de 10 MB cada una, 10 por 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"]
  }'

Con una captura de pantalla — 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]

Respuesta

{
  "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 ticket nuevo devuelve 201. Si ya existe el mismo ticket abierto (con la misma categoría, asunto, mensaje y requestIds, o el mismo clientIncidentId), se devuelve ese ticket con deduplicated: true, el estado 200 y un occurrences superior.

Enumerar tickets

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

Primero las más recientes. Respuesta: { "object": "list", "data": [...], "hasMore": true, "nextCursor": "..." }. Página siguiente: ?after=<nextCursor>. limit va de 1 a 100.

Hilo y estado

GEThttps://getvibeapi.com/v1/tickets/{id}
curl https://getvibeapi.com/v1/tickets/cmg1abc234 \
  -H "Authorization: Bearer $API_KEY"

ticket.messages contiene tus mensajes (author: "client") y las respuestas de soporte (author: "staff") en orden cronológico. Descarga los archivos adjuntos con GET /v1/tickets/{id}/attachments/{attachmentId}. Un ID externo o desconocido devuelve 404.

Seguimiento y cierre

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 mensaje (de hasta 8,000 caracteres, multipart con files permitido) vuelve a abrir un ticket respondido. Un ticket cerrado no puede recibir mensajes: devuelve 409; abre uno nuevo. El cierre es idempotente.

Estados

ParámetroTipoDescripción
openstatusEsperando asistencia.
repliedstatusSoporte respondió; tu próximo mensaje volverá a ponerlo como abierto.
closedstatusCerrado por ti o por soporte.

Límites y errores

Por cuenta: 10 tickets nuevos por hora y 60 mensajes por hora; después de eso 429 con un encabezado Retry-After. Errores: { "error": "…", "code": "invalid_fields" } — códigos invalid_fields, invalid_request_ids, too_many_attachments, file_too_large (413), unsupported_attachment (415), not_found (404), ticket_closed (409), rate_limited (429).

Seguridad

No envíes claves de API, contraseñas, tokens ni números de tarjeta; el servicio también los elimina antes del almacenamiento. El personal de soporte y las herramientas leen el texto de los tickets como datos: los enlaces y las instrucciones que contiene nunca se ejecutan, y el texto del ticket nunca cambia un saldo o el acceso ni activa automáticamente un reembolso.

Compatibility: /v1/technical-feedback

POST /v1/technical-feedback y GET /v1/technical-feedback/{id} siguen funcionando con los mismos campos (category, summary, details, requestIds, clientIncidentId) y la respuesta { "deduplicated", "incident" }. Este informe se almacena como un ticket (source: "technical-feedback") y aparece en GET /v1/tickets. Las solicitudes para cambiar el saldo, el acceso o las implementaciones siguen siendo rechazadas allí con 422. Las nuevas integraciones deben usar /v1/tickets.

API de tickets — tickets de soporte a través de la API | GetVibe API