الموارد · Voice API
توثيق Voice API
مرجع إنتاجي كامل لتنفيذ الصوت اللحظي، وأحداث البث، ومسار الإيقاف، والهيدرز المطلوبة، ونماذج الأخطاء.
نقاط النهاية
POST /api/v1/voice/chat/metaPOST /api/v1/voice/chatPOST /api/v1/voice/interrupt/{session_id}WS /api/v1/voice/wsالهيدرز المطلوبة
- Authorization: Bearer [token] أو مصادقة مفتاح API
- Content-Type: application/json
- X-Scope-Type: personal | workspace
- X-Workspace-ID: مطلوب إذا كان النطاق workspace
هيكل الطلب
{
"message": "Book a follow-up call tomorrow",
"session_id": "sess_123",
"stream": true,
"voice": {
"input_format": "wav",
"output_format": "wav",
"sample_rate": 16000
},
"metadata": {
"lang": "en",
"client": "web"
}
}هيكل الاستجابة
{
"success": true,
"session_id": "sess_123",
"content": "Sure — I scheduled a follow-up for tomorrow.",
"provider": "openai",
"usage": {
"input_tokens": 210,
"output_tokens": 96
},
"metadata": {
"latency_ms": 842
}
}أحداث البث
- session.started — تم بدء الجلسة الصوتية
- stt.partial — جزء تفريغ صوتي جزئي
- llm.delta — أجزاء نصية متدفقة من النموذج
- tts.chunk — مقطع صوتي مُولّد
- session.completed — النتيجة النهائية مع الاستهلاك
مسار الإيقاف
الإيقاف يوقف التوليد الصوتي الجاري لجلسة محددة مع تحرير مسار التنفيذ بأمان.
POST /api/v1/voice/interrupt/{session_id}
{
"reason": "user_barge_in"
}تنسيقات الصوت
- الصيغة الموصى بها للإدخال: WAV (PCM16, mono, 16kHz).
- المدخلات غير WAV يمكن تحويلها قبل STT.
- صيغة الإخراج تعتمد على المزود وإعدادات التشغيل.
- الأحجام الكبيرة قد تعيد 413.
هيدرز الميتاداتا
X-Trace-IDX-Session-IDX-STT-Time-MSX-LLM-Time-MSX-TTS-Time-MS
نماذج الأخطاء
400
طلب غير صالح أو حقول ناقصة.
401
مصادقة مفقودة أو غير صحيحة.
403
نطاق/صلاحية غير مسموحة.
409
الجلسة قيد المعالجة بالفعل (تعارض قفل).
413
حجم الصوت أكبر من المسموح.
415
نوع محتوى/وسائط غير مدعوم.
422
فشل التحقق في body أو headers.
429
تم تجاوز حد المعدل.
503
المزود غير متاح أو ضغط نظام.
أمثلة
curl -X POST "/api/v1/voice/chat" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-H "X-Scope-Type: personal" \
-d '{
"message":"Summarize this call",
"session_id":"sess_123",
"stream":false
}'