Обращения в поддержку через 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 ID запросов вашего аккаунта (заголовок x-request-id ответа). |
clientIncidentId | string | Необязательный стабильный ID серии на вашей стороне: открытое обращение с тем же ID переиспользуется. |
files | file[] | Только в multipart/form-data: до 5 изображений PNG, JPEG, GIF или WebP, до 10 МБ каждое, до 10 на обращение. |
curl https://plusvibeapi.ru/v1/tickets \
-H "Authorization: Bearer $PLUSVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": "Поток обрывается через 30 секунд",
"message": "stream=true в /v1/chat/completions обрывается примерно через 30 секунд, повтор не помогает.",
"category": "api_error",
"requestIds": ["req_123"]
}'Со скриншотом — multipart:
curl https://plusvibeapi.ru/v1/tickets \
-H "Authorization: Bearer $PLUSVIBE_API_KEY" \
-F subject="Ошибка в ответе" \
-F message="Модель возвращает пустой ответ, скриншот приложен." \
-F category=incorrect_response \
-F files=@screenshot.pngОтвет
{
"deduplicated": false,
"ticket": {
"id": "cmg1abc234",
"object": "ticket",
"subject": "Поток обрывается через 30 секунд",
"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://plusvibeapi.ru/v1/tickets/cmg1abc234 \
-H "Authorization: Bearer $PLUSVIBE_API_KEY"В ticket.messages — ваши сообщения (author: "client") и ответы поддержки (author: "staff") по времени. Вложения скачиваются по GET /v1/tickets/{id}/attachments/{attachmentId}. Чужой или неизвестный ID — 404.
Дополнить и закрыть
curl https://plusvibeapi.ru/v1/tickets/cmg1abc234/messages \
-H "Authorization: Bearer $PLUSVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "Повторилось сегодня в 10:05 МСК, request id req_456."}'Сообщение (до 8 000 символов, можно multipart с files) снова открывает отвеченное обращение. В закрытое писать нельзя — ответ 409, создайте новое. Закрытие идемпотентно.
Статусы
| Параметр | Тип | Описание |
|---|---|---|
open | status | Ждёт ответа поддержки. |
replied | status | Поддержка ответила; ваше новое сообщение вернёт статус open. |
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).
Безопасность
Совместимость: /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.