Tema
Idioma

Tickets de suporte via API

POST /v1/tickets — abra um ticket de suporte, leia a conversa, envie mensagens adicionais e feche-o com uma chave de API: campos, anexos, status, limites e compatibilidade com /v1/technical-feedback.

A Tickets API é o único canal de suporte: um ticket aberto pela API aparece no dashboard e vice-versa. Autentique-se com uma chave de API (Authorization: Bearer ou X-API-Key) ou com uma sessão do dashboard. Você só verá seus próprios tickets.

Abrir um chamado

POSThttps://getvibeapi.com/v1/tickets
ParâmetroTipoDescrição
subjectstringObrigatório: de 3 a 200 caracteres.
messagestringObrigatório: de 10 a 8.000 caracteres.
categorystringapi_error, performance, incorrect_response, integration, feature_request, other, billing, account ou general (padrão).
requestIdsstring[]Opcional, até 10 IDs de solicitação da sua conta (o header de resposta x-request-id).
clientIncidentIdstringID de série estável opcional do seu lado: um ticket aberto com o mesmo ID é reutilizado.
filesfile[]somente multipart/form-data: até 5 imagens PNG, JPEG, GIF ou WebP, 10 MB cada, 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"]
  }'

Com uma captura de tela — 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]

Resposta

{
  "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
  }
}

Um novo ticket retorna 201. Se o mesmo ticket aberto já existir (mesma categoria, assunto, mensagem e requestIds, ou o mesmo clientIncidentId), esse ticket será retornado com deduplicated: true, status 200 e um occurrences maior.

Listar tickets

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

Mais recentes primeiro. Resposta: { "object": "list", "data": [...], "hasMore": true, "nextCursor": "..." }. Próxima página: ?after=<nextCursor>. limit é de 1 a 100.

Thread e status

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

ticket.messages mantém suas mensagens (author: "client") e as respostas do suporte (author: "staff") em ordem cronológica. Baixe os anexos com GET /v1/tickets/{id}/attachments/{attachmentId}. Um ID estrangeiro ou desconhecido retorna 404.

Continuar e fechar

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

Uma mensagem (de até 8.000 caracteres, multipart com files permitido) reabre um ticket respondido. Um ticket fechado não pode receber mensagens — ele retorna 409; abra um novo. O fechamento é idempotente.

Status

ParâmetroTipoDescrição
openstatusAguardando suporte.
repliedstatusO suporte respondeu; sua próxima mensagem o reabrirá.
closedstatusFechado por você ou pelo suporte.

Limites e erros

Por conta: 10 tickets novos por hora e 60 mensagens por hora; além desse limite 429 com um header Retry-After. Erros: { "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).

Segurança

Não envie chaves de API, senhas, tokens ou números de cartão — o serviço também os remove antes do armazenamento. O texto dos tickets é lido pela equipe de suporte e pelas ferramentas como dados: links e instruções dentro dele nunca são executados, e o texto dos tickets nunca altera um saldo ou acesso nem aciona um reembolso automaticamente.

Compatibility: /v1/technical-feedback

POST /v1/technical-feedback e GET /v1/technical-feedback/{id} continuam funcionando com os mesmos campos (category, summary, details, requestIds, clientIncidentId) e a resposta { "deduplicated", "incident" }. Esse relatório é armazenado como um ticket (source: "technical-feedback") e aparece em GET /v1/tickets. As solicitações para alterar saldo, acesso ou implantações continuam sendo rejeitadas lá com 422. Novas integrações devem usar /v1/tickets.

Tickets API — tickets de suporte pela API | GetVibe API