Обращения в поддержку через API
POST /v1/tickets — открытие тикета в поддержку, чтение переписки, ответ и закрытие с помощью API-ключа: поля, вложения, статусы, лимиты и совместимость с /v1/technical-feedback.
Tickets API — единственный канал поддержки: обращение, открытое через API, появляется в панели управления, и наоборот. Аутентификация по API-ключу (Authorization: Bearer или X-API-Key) или по сессии панели управления. Вы видите только свои обращения.
Создать обращение
| Параметр | Тип | Описание |
|---|---|---|
subject | string | Обязательно: от 3 до 200 символов. |
message | string | Обязательно: от 10 до 8 000 символов. |
category | string | api_error, performance, incorrect_response, integration, feature_request, other, billing, account или general (по умолчанию). |
requestIds | string[] | Необязательно, до 10 request ID из вашего аккаунта (заголовок ответа x-request-id). |
clientIncidentId | string | Необязательный стабильный ID серии на вашей стороне: открытый тикет с тем же ID переиспользуется. |
files | file[] | только multipart/form-data: до 5 изображений PNG, JPEG, GIF или WebP, по 10 МБ каждое, 10 на тикет. |
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"]
}'Со скриншотом — 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]Ответ
{
"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
}
}Новый тикет возвращает 201. Если такой же открытый тикет уже существует (та же категория, тема, сообщение и requestIds, или тот же clientIncidentId), возвращается этот тикет с deduplicated: true, статусом 200 и более высоким occurrences.
Список тикетов
Сначала новые. Ответ: { "object": "list", "data": [...], "hasMore": true, "nextCursor": "..." }. Следующая страница: ?after=<nextCursor>. limit — от 1 до 100.
Ветка и статус
curl https://getvibeapi.com/v1/tickets/cmg1abc234 \
-H "Authorization: Bearer $API_KEY"ticket.messages хранит ваши сообщения (author: "client") и ответы поддержки (author: "staff") в хронологическом порядке. Скачивайте вложения с помощью GET /v1/tickets/{id}/attachments/{attachmentId}. Чужой или неизвестный ID возвращает 404.
Довести до конца и закрыть
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."}'Сообщение (до 8 000 символов, допускается multipart с files) заново открывает тикет, на который был ответ. Закрытый тикет не принимает сообщения — он возвращает 409; создайте новый. Закрытие идемпотентно.
Статусы
| Параметр | Тип | Описание |
|---|---|---|
open | status | Ожидание ответа поддержки. |
replied | status | Поддержка ответила; ваше следующее сообщение снова переводит его в статус открытого. |
closed | status | Закрыт вами или службой поддержки. |
Лимиты и ошибки
На аккаунт: 10 новых тикетов в час и 60 сообщений в час; сверх этого 429 с заголовком Retry-After. Ошибки: { "error": "…", "code": "invalid_fields" } — коды invalid_fields, invalid_request_ids, too_many_attachments, file_too_large (413), unsupported_attachment (415), not_found (404), ticket_closed (409), rate_limited (429).
Безопасность
Compatibility: /v1/technical-feedback
POST /v1/technical-feedback и GET /v1/technical-feedback/{id} продолжают работать с теми же полями (category, summary, details, requestIds, clientIncidentId) и ответом { "deduplicated", "incident" }. Такой отчёт сохраняется как тикет (source: "technical-feedback") и появляется в GET /v1/tickets. Запросы на изменение баланса, доступа или деплойментов по-прежнему отклоняются там с 422. Новым интеграциям следует использовать /v1/tickets.