تذاكر الدعم عبر 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 معرفات طلبات من حسابك (ترويسة الاستجابة x-request-id). |
clientIncidentId | string | معرف سلسلة ثابت اختياري من جانبك: تُعاد استخدام التذكرة المفتوحة بالمعرف نفسه. |
files | file[] | multipart/form-data فقط: حتى 5 صور PNG أو JPEG أو GIF أو WebP، بحجم 10 MB لكل صورة، و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}. وأي معرّف غريب أو غير معروف يعيد 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.