الموارد · Voice API

توثيق Voice API

مرجع إنتاجي كامل لتنفيذ الصوت اللحظي، وأحداث البث، ومسار الإيقاف، والهيدرز المطلوبة، ونماذج الأخطاء.

نقاط النهاية

POST /api/v1/voice/chat/meta
POST /api/v1/voice/chat
POST /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
  }'