NueForm

واجهة API للصوت

أنشئ كلامًا من شيفرتك الخاصة بأصوات Voice Studio: صوت واحد أو نص كامل، بسعر 0.4 رصيد لكل حرف منطوق بأي لغة، مع تقدير مجاني مسبق.

أنشئ كلامًا من شيفرتك الخاصة باستخدام NueSpeak Apex، وهي الأصوات نفسها الموجودة في Voice Studio. تستهلك الطلبات رصيدًا من حسابك في NueForm: 0.4 رصيد لكل حرف منطوق (نحو $0.04 لكل 1,000 حرف) بأي لغة، ويُقرَّب إلى رصيد كامل للأعلى مرة واحدة لكل طلب. التقديرات مجانية.

تستخدم جميع نصوص الطلبات والاستجابات أسماء حقول بصيغة snake_case. تُعرَّف الأصوات بمعرّفات nv_… وعمليات الإنشاء بمعرّفات gen_….

تعمل مفاتيح Voice في جميع الخطط بمجرد أن يجري حسابك أول عملية شراء للرصيد (أو يكون على خطة مدفوعة) ويتحقق من بريده الإلكتروني. راجع مفاتيح واجهة API للصوت.

إنشاء كلام

POST/api/v1/voice

ينشئ الصوت ويرد عندما يصبح جاهزًا (بشكل متزامن، بحد أقصى 5,000 حرف منطوق لكل طلب). أرسل Accept: audio/mpeg (أو audio/wav أو audio/ogg أو audio/basic أو audio/*) لتحصل على الصوت نفسه؛ وإلا تكون الاستجابة JSON مع audio.url يتطلب المصادقة.

يُخصم الرصيد عند بدء الطلب. تُعاد قيمة الأسطر التي تفشل تلقائيًا، ولا يُحتسب أي شيء ينتهي بخطأ. الطلب الذي خُصم رصيده لا ينتهي بخطأ أبدًا: إذا لم يكن صوته جاهزًا في الوقت المناسب، يرد بـ 202 مع الترويسة Location. احصل على الصوت من هناك بدلًا من إرسال الطلب مرة أخرى.

نص الطلب

modestring

"speak" (صوت واحد يقرأ text) أو "script" (عدة أصوات) أو "estimate" (راجع تقدير التكلفة)

textstring

speak: الكلمات المراد قراءتها

voicestring

صوت nv_… من عرض الأصوات. مطلوب في speak؛ وفي script هو صوت الأسطر التي لا تحمل وسم متحدث

linesarray

script: أسطر منظمة، كل سطر {"speaker", "voice", "text"} أو توقف {"pause_ms": 800} (حتى 10,000)

scriptstring

script: تنسيق الأصوات المتعددة، سطر لكل متحدث: [Maya] Did you hear that?

castarray

script: صوت لكل متحدث موسوم، [{"speaker": "Maya", "voice": "nv_…"}]

auto_convertboolean

تحويل سيناريو أو محادثة ملصوقة (MAYA: Hi) أولًا إلى تنسيق الأصوات المتعددة. مجاني، ضمن حد يومي

auto_castboolean

اختيار صوت لكل متحدث ليس له صوت. مجاني، ضمن حد يومي. أرسل language لنص ليس باللغة الإنجليزية

languagestring

اسم لغة أو رمزها ("es" أو "Spanish"). الافتراضي: لغة الصوت نفسه

qualitystring

"standard" (الافتراضي) أو "studio" أو "phone". السعر نفسه

speednumber

من 0.85 إلى 1.15 (الافتراضي 1)

formatstring

"mp3" (الافتراضي) أو "wav" أو "ogg_opus" أو "mulaw_8k"

max_creditsinteger

رفض الطلب (409، دون أي خصم) إذا كانت تكلفته أعلى

reuseboolean

الافتراضي true: يُرد على أي طلب مطابق أُجري خلال آخر 30 يومًا بالصوت نفسه مقابل 0 رصيد

saveboolean

true يحتفظ بالصوت حتى تحذفه. الافتراضي: يُحذف بعد 30 يومًا

retake_ofstring

إعادة إنشاء عملية إنشاء سابقة (راجع إعادة التسجيل)

titlestring

عنوانها في Library الخاصة بك

حقول الاستجابة

idstring

عملية الإنشاء (gen_…)

statusstring

"ready" أو "rendering" (202: ما زال قيد الإنشاء) أو "partial" (فشلت بعض الأسطر ولا تكلف شيئًا) أو "failed"

audioobject or null

url (أرسل مفتاح API الخاص بك) وformat وsample_rate وduration_seconds وretained_until

creditsobject

estimated وcharged (ما خصمه هذا الطلب) وremaining

linesarray

في script فقط: speaker وvoice وtext وstatus وstart_ms وend_ms وcredits لكل سطر

retakes_remaininginteger

عدد مرات إعادة التسجيل المجانية المتبقية لهذا المقطع

reusedboolean

صوت طلب سابق مطابق، مقابل 0 رصيد

أمثلة على الشيفرة

bash
curl -X POST https://nueform.io/api/v1/voice \
  -H "Authorization: Bearer $NUEFORM_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: audio/mpeg" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "mode": "speak",
    "voice": "nv_7QmS2xK9aLpe3vT8a",
    "text": "Fresh bread every morning at seven. Croissants too. See you on Main Street."
  }' \
  --output speech.mp3 --dump-header -

يحتوي هذا النص على 75 حرفًا منطوقًا، لذا تكلفته 30 رصيدًا (75 × 0.4).

ترويسات الاستجابة

text
HTTP/1.1 200 OK
Content-Type: audio/mpeg
NueForm-Generation-Id: gen_2cH4kXyQ9vLmNp3Rs
NueForm-Credits-Estimated: 30
NueForm-Credits-Charged: 30
NueForm-Credits-Remaining: 48730
NueForm-Rate-Card: 1
NueForm-Retakes-Remaining: 2
NueForm-Audio-Duration: 4.8
Idempotent-Replayed: false
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 2026-11-04T18:13:00.000Z

استجابة JSON

json
{
  "data": {
    "id": "gen_2cH4kXyQ9vLmNp3Rs",
    "object": "voice.generation",
    "status": "ready",
    "mode": "speak",
    "source": "api",
    "voice": { "id": "nv_7QmS2xK9aLpe3vT8a", "name": "Amara" },
    "language": "English",
    "characters": 75,
    "audio": {
      "url": "https://nueform.io/api/v1/voice/generations/gen_2cH4kXyQ9vLmNp3Rs/audio?format=mp3",
      "format": "mp3",
      "sample_rate": 24000,
      "duration_seconds": 4.8,
      "retained_until": "2026-12-04T18:12:00.000Z"
    },
    "credits": { "estimated": 30, "charged": 30, "remaining": 48730 },
    "retakes_remaining": 2,
    "reused": false,
    "created_at": "2026-11-04T18:12:00.000Z"
  },
  "meta": { "rate_card": "1" }
}

النصوص متعددة الأصوات

ينطق النص متعدد الأصوات عدة أصوات في ملف صوتي واحد. أرسل lines منظمة (دون أي تحليل) أو script بتنسيق الأصوات المتعددة مع cast الخاص به. التوقفات ({"pause_ms": 800} أو (pause 2s) داخل النص) لا تكلف شيئًا؛ تُحتسب الحروف المنطوقة فقط.

تضيف الاستجابة lines: أين يبدأ كل سطر وينتهي في الصوت، وحالته، وما تعادله حروفه (credits، رقم عشري). يُحتسب الطلب مرة واحدة ويُقرَّب للأعلى. السطر الذي يفشل يظهر بقيمة "credits": 0 ولا يكلف شيئًا.

مع auto_convert يُحوَّل أولًا السيناريو أو المحادثة الملصوقة؛ ومع auto_cast يحصل كل متحدث بلا صوت على صوت.

مثال على طلب

json
{
  "mode": "script",
  "lines": [
    { "speaker": "Maya", "voice": "nv_7QmS2xK9aLpe3vT8a", "text": "Did you hear that?" },
    { "speaker": "Leo", "voice": "nv_P3vT8aLeQ2mwX4kZ9", "text": "Hear what?" },
    { "pause_ms": 800 },
    { "speaker": "Maya", "voice": "nv_7QmS2xK9aLpe3vT8a", "text": "Exactly. Nothing." }
  ],
  "format": "wav"
}

أو تنسيق الأصوات المتعددة

json
{
  "mode": "script",
  "script": "[Maya] Did you hear that?\n[Leo] Hear what?\n(pause 1s)\n[Maya] Exactly. Nothing.",
  "auto_cast": true
}

تقدير التكلفة

POST/api/v1/voice

يقبل "mode": "estimate" نص الطلب نفسه الذي يقبله speak أو script ويرد بالتكلفة الدقيقة دون إنشاء أي شيء. التقدير مجاني ولا يُحتسب ضمن حدود الإنشاء (حتى 300 في الدقيقة لكل مفتاح).

حقول الاستجابة

charactersinteger

الحروف المنطوقة: ما يُحتسب

creditsinteger

ما سيخصمه الطلب بالضبط

seconds_estimatednumber

المدة التقريبية للصوت

balanceinteger

رصيدك الحالي

enoughboolean

رصيدك (والحد الشهري للمفتاح إن وُجد) يغطي التكلفة

مثال

bash
curl -X POST https://nueform.io/api/v1/voice \
  -H "Authorization: Bearer $NUEFORM_API_KEY" \
  -d '{"mode": "estimate", "voice": "nv_7QmS2xK9aLpe3vT8a", "text": "Fresh bread every morning at seven. Croissants too. See you on Main Street."}'
json
{
  "data": {
    "object": "voice.estimate",
    "characters": 75,
    "credits": 30,
    "seconds_estimated": 4.8,
    "balance": 48760,
    "enough": true
  },
  "meta": { "rate_card": "1" }
}

بث الكلام

POST/api/v1/voice/stream

يرسل الصوت أثناء إنشائه، فيبدأ تطبيقك بالتشغيل خلال ثانية تقريبًا بدلًا من انتظار المقطع كاملًا: وكيل ذكي، أو روبوت صوتي، أو قارئ. يقرأ صوت واحد text. عندما يكون محرك الصوت جاهزًا، يصل أول صوت عادةً خلال 1–2 ثانية مهما كان طول النص.

السعر هو سعر إنشاء كلام: 0.4 رصيد لكل حرف منطوق، يُقرَّب للأعلى مرة واحدة لكل طلب ويُخصم عند بدء البث. يقبل البث الواحد حتى نحو 200 ثانية من الكلام: نحو 3,100 حرف بالإنجليزية، وأقل في اللغات التي تُنطق ببطء أكبر (النص الأطول يعطي 413 TEXT_TOO_LONG مع max_characters). للنصوص الأطول، أرسل عدة عمليات بث أو استخدم POST /api/v1/voice.

قبل البايت الأول، أي فشل هو خطأ عادي ولا يكلّف شيئًا: إذا فشل محرك الصوت قبل أي صوت، تُعاد قيمة الخصم (500، أو 503 WARMING_UP مع Retry-After أثناء بدء تشغيل المحرك). بعد البايت الأول لا يمكن أن تتغير الحالة، لذا فإن البث الذي يفشل في منتصفه يتوقف قبل نهايته: يُبلغ عميل HTTP لديك عن نص استجابة غير مكتمل. استخدم NueForm-Generation-Id مع جلب عملية إنشاء لترى النسخة المحفوظة وتكلفتها. إذا أغلقت الاتصال، يكتمل البث ويُحفظ على أي حال، ولا تُعاد قيمته.

يُحفظ كل بث أيضًا كعملية إنشاء: يظهر في Library الخاصة بك ويقدّمه تنزيل الصوت، بمستوى صوت مضبوط مثل كل مقطع.

البث أم /voice؟ استخدم البث عندما ينتظر أحدٌ سماعه (الوكلاء، والروبوتات الصوتية، والقراءة بصوت عالٍ). استخدم POST /api/v1/voice للملفات، والنصوص متعددة الأصوات، وspeed، وإعادة التسجيل، والتقديرات. أدوات MCP لا تبث: إنها تنشئ الصوت بطريقة /voice.

نص الطلب

voicestring

صوت nv_… من عرض الأصوات

textstring

الكلمات التي ستُقرأ

formatstring

"mp3" (الافتراضي، للمتصفحات)، أو "pcm_24k" (PCM خام أحادي القناة 16 بت little-endian بتردد 24,000 هرتز، للوكلاء)، أو "mulaw_8k" (G.711 μ-law بتردد 8 كيلوهرتز، للهاتف؛ و"ulaw_8000" يعمل أيضًا)

languagestring

اسم لغة أو رمزها. الافتراضي: لغة الصوت نفسه

qualitystring

"standard" (الافتراضي؛ "phone" مع mulaw_8k)، أو "studio"، أو "phone". السعر نفسه

max_creditsinteger

رفض الطلب (409، دون أي خصم) إذا كانت تكلفته أعلى

saveboolean

true يحتفظ بالنسخة المحفوظة حتى تحذفها. الافتراضي: تُحذف بعد 30 يومًا

titlestring

عنوانها في Library الخاصة بك

لا تتوفر speed والنصوص متعددة الأصوات وretake_of وreuse في البث (400، reason: "not_on_stream").

أمثلة على الشيفرة

bash
curl -N -X POST https://nueform.io/api/v1/voice/stream \
  -H "Authorization: Bearer $NUEFORM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"voice": "nv_7QmS2xK9aLpe3vT8a", "text": "Fresh bread every morning at seven.", "format": "mp3"}' \
  --output stream.mp3

يحتوي هذا النص على 35 حرفًا منطوقًا، لذا تكلفته 14 رصيدًا (35 × 0.4).

ترويسات الاستجابة

text
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Transfer-Encoding: chunked
NueForm-Generation-Id: gen_2cH4kXyQ9vLmNp3Rs
NueForm-Credits-Estimated: 14
NueForm-Credits-Charged: 14
NueForm-Credits-Remaining: 48716
NueForm-Rate-Card: 1
NueForm-Audio-Format: pcm_24k
NueForm-Audio-Encoding: pcm_s16le
NueForm-Audio-Sample-Rate: 24000
NueForm-Audio-Channels: 1
X-Accel-Buffering: no

إعادة التسجيل

أرسل {"mode": "speak", "retake_of": "gen_…"} لإعادة إنشاء عملية إنشاء بالكلمات والأصوات واللغة والجودة والسرعة نفسها. لا يُرسل مع retake_of إلا mode وformat وmax_credits وsave.

  • مجانًا مرتين خلال 24 ساعة من عملية الإنشاء، ما دامت حروف إعادة التسجيل المجانية للمفتاح هذا الشهر لا تتجاوز ربع الحروف التي احتُسبت عليه هذا الشهر. تحتفظ إعادة التسجيل المجانية بالمعرّف gen_… نفسه.
  • وإلا فهي عملية إنشاء جديدة تُحتسب مثل أي طلب (0.4 رصيد لكل حرف)، ويشير retake_of إلى عملية الإنشاء التي أُعيد تسجيلها.

أرسل "mode": "estimate" مع retake_of لتعرف مسبقًا: تقول الاستجابة "free": true أو كم ستكلف.

عدم التكرار (Idempotency)

أرسل الترويسة Idempotency-Key (من 1 إلى 255 حرفًا، مثل UUID) مع طلبات speak وscript، فلا يمكن لأي إعادة محاولة أن تخصم مرتين:

  • المفتاح نفسه مع نص الطلب نفسه يرد مجددًا بما أنشأه الطلب الأول دون خصم (Idempotent-Replayed: true وNueForm-Credits-Charged: 0)؛
  • المفتاح نفسه مع نص طلب مختلف يعطي 409 CONFLICT مع reason: "idempotency_conflict"؛
  • أثناء تنفيذ الطلب الأول، 409 CONFLICT مع reason: "request_in_progress" وRetry-After.

تُحفظ المفاتيح لمدة 24 ساعة، لكل مفتاح API.

في البث، يرد المفتاح نفسه مع النص نفسه بـ JSON: عملية الإنشاء التي أجراها الطلب الأول (لا يُبث مرة أخرى).

ترويسات الاستجابة

تذكر كل استجابة ما كلفته:

الترويسةالمعنى
NueForm-Generation-Idعملية الإنشاء (gen_…)
NueForm-Credits-Estimatedالسعر المقدَّر للطلب
NueForm-Credits-Chargedما خصمه هذا الطلب بعد أي إعادة تلقائية للرصيد (0 للتقدير والمقطع المعاد استخدامه وإعادة التسجيل المجانية والإعادة وأي خطأ)
NueForm-Credits-Remainingرصيدك بعد ذلك
NueForm-Rate-Cardإصدار جدول الأسعار الذي احتُسب الطلب وفقه
NueForm-Retakes-Remainingمرات إعادة التسجيل المجانية المتبقية لهذا المقطع
NueForm-Audio-Durationمدة الصوت بالثواني
Idempotent-Replayedمع Idempotency-Key: هل هذه استجابة لطلب سابق
NueForm-Audio-Format, NueForm-Audio-Encoding, NueForm-Audio-Sample-Rate, NueForm-Audio-Channelsصوت البث: تنسيقه وترميزه ومعدل أخذ العينات وعدد القنوات
X-RateLimit-Limit وX-RateLimit-Remaining وX-RateLimit-Resetطلبات هذا المفتاح في هذه الدقيقة (راجع حدود الطلبات)

عرض الأصوات

GET/api/v1/voice/voices

الأصوات الجاهزة من NueForm، ثم أصواتك وأصوات فرقك، ولكل صوت معرّف nv_… ولغته ومعاينة مجانية وسرعة نطقه. مجاني.

معاملات الاستعلام

sourcestring

"all" (الافتراضي) أو "stock" أو "mine"

languagestring

اسم لغة أو رمزها

genderstring

مثل "female"

qstring

البحث في الأسماء والأساليب والتسميات

featuredboolean

true: الأصوات الجاهزة المميزة فقط

الاستجابة

json
{
  "data": [
    {
      "id": "nv_7QmS2xK9aLpe3vT8a",
      "object": "voice",
      "name": "Amara",
      "source": "stock",
      "type": "clone",
      "language": "English",
      "language_label": "English (US)",
      "gender": "female",
      "age": null,
      "style": "Warm",
      "featured": true,
      "preview_url": "https://nueform.io/voice-previews/amara.mp3",
      "team_id": null,
      "can_delete": false,
      "chars_per_second": 15.5,
      "created_at": null
    }
  ],
  "meta": { "count": 1 }
}

حذف صوت

DELETE/api/v1/voice/voices/:id

يحذف أحد أصواتك نهائيًا: عينته وموجّهاته ومعاينته، ثم الصوت نفسه. لا يُسترد الرصيد. ما دامت نماذج أو أرقام هواتف تستخدم الصوت، تكون الاستجابة 409 CONFLICT مع reason: "voice_in_use" وعددها؛ أرسل ?replacement=nv_… لتحويلها أولًا إلى صوت آخر.

الاستجابة

json
{
  "data": {
    "id": "nv_9LmQ2xT4aPe7vK3sW",
    "object": "voice",
    "deleted": true,
    "switched": { "forms": 2, "numbers": 1 },
    "forms_to_republish": 1
  }
}

عرض عمليات الإنشاء

GET/api/v1/voice/generations

عمليات الإنشاء الخاصة بك، من الأحدث إلى الأقدم. انتقل إلى الصفحة التالية باستخدام meta.next_cursor.

معاملات الاستعلام

limitinteger

من 1 إلى 100 (الافتراضي 20)

cursorstring

next_cursor من الصفحة السابقة

sourcestring

فقط ما أُنشئ عبر "api" أو "studio" أو "mcp" أو "app"

الاستجابة

json
{
  "data": [
    { "id": "gen_2cH4kXyQ9vLmNp3Rs", "object": "voice.generation", "status": "ready", "credits": { "charged": 30 } }
  ],
  "meta": { "next_cursor": null, "has_more": false }
}

جلب عملية إنشاء

GET/api/v1/voice/generations/:id

عملية إنشاء واحدة، مع lines الخاصة بها إن كانت نصًا متعدد الأصوات. هنا يمثل credits.charged ما كلفته إجمالًا بعد أي إعادة تلقائية للرصيد.

تنزيل الصوت

GET/api/v1/voice/generations/:id/audio

الصوت نفسه، يُبث باستخدام مفتاح API الخاص بك (مع دعم نطاقات البايت). قيمة ?format= هي mp3 (الافتراضي) أو wav أو ogg_opus أو mulaw_8k. يُنشأ Ogg/Opus وμ-law بتردد 8 كيلوهرتز عند أول طلب: الاستجابة 202 تعني "اطلب مجددًا بعد Retry-After ثانية". مجاني.

حذف عملية إنشاء

DELETE/api/v1/voice/generations/:id

يحذف عملية الإنشاء وصوتها نهائيًا. لا يُسترد الرصيد. ترد عملية الإنشاء التي ما زالت قيد التنفيذ بـ 409 CONFLICT مع reason: "still_rendering".


التحقق من رصيدك

GET/api/v1/credits

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

حقول الاستجابة

balanceinteger

الرصيد الذي يمكنك صرفه الآن (10,000 رصيد = $1)

approxstring

الرصيد بالدولار

keyobject

monthly_credit_limit لهذا المفتاح (null = بلا حد) وspent_this_month وpaused وresets_at (اليوم الأول من الشهر، UTC)

voice_apiobject

credits_per_character (0.4) وطريقة التقريب، وأن التقديرات مجانية

rate_cardobject

جميع الأسعار حسب الإجراء

الاستجابة

json
{
  "data": {
    "object": "credits",
    "balance": 48730,
    "approx": "≈ $4.87",
    "currency": "usd",
    "frozen": false,
    "key": {
      "id_prefix": "nf_a1b2c3d4",
      "monthly_credit_limit": 100000,
      "spent_this_month": 1240,
      "paused": false,
      "resets_at": "2026-12-01T00:00:00.000Z"
    },
    "voice_api": { "credits_per_character": 0.4, "rounding": "up_per_request", "estimate_free": true }
  },
  "meta": { "rate_card": "1" }
}

الأسعار

البندالرصيدبالدولار
الكلام عبر واجهة API للصوت0.4 لكل حرف منطوق، بأي لغةنحو $0.04 لكل 1,000 حرف
التقدير0مجاني
مقطع معاد استخدامه (reuse)0مجاني
إعادة التسجيل0 مرتين خلال 24 ساعة (الاستخدام العادل)، ثم 0.4 لكل حرف

يأتي الرصيد في حزم (بدءًا من $5 مقابل 50,000 رصيد) ولا تنتهي صلاحيته أبدًا. يمكن أن يكون للمفتاح حد شهري للرصيد: بمجرد أن يصرف هذا المقدار، تتلقى طلبات إنشاء الكلام والحذف منه 403 FORBIDDEN مع reason: "key_limit_reached" حتى اليوم الأول من الشهر التالي (ويظل بإمكانه عرض ما أنشأه وتنزيله)، وتستمر مفاتيحك الأخرى في العمل. تُدفع الطلبات من الأرصدة التي اختارها مالك المفتاح في الدفع لـ Voice Studio من في المحفظة: أرصدته الخاصة، ما لم يختر فريقًا. ولا يُستبدل الفريق العاجز عن الدفع بأرصدة المالك الخاصة أبدًا: يتلقى الطلب 403 FORBIDDEN مع reason: "team_payer_unavailable"، أو reason: "member_cap_reached" عند بلوغ حده الشهري كعضو، ولا يُحتسب أي شيء.

الأخطاء

تستخدم جميع الأخطاء تنسيق الأخطاء القياسي، ولا يُحتسب أي شيء ينتهي بخطأ. الأكثر شيوعًا:

الحالةcodeمتى
402INSUFFICIENT_CREDITSرصيدك لا يغطي الطلب (credits_required وcredits_available وtop_up_url؛ وpayer: "team" حين يكون الفريق الذي يدفع منه مالك المفتاح هو الذي لا يكفي رصيده، وعندها يفتح top_up_url المحفظة حيث يمكن تحويل الدفع لـ Voice Studio من إلى رصيده الخاص)
403FORBIDDENreason: key_limit_reached أو account_gate أو scope_not_allowed أو cooldown أو voice_studio_suspended أو wallet_frozen أو member_cap_reached أو team_payer_unavailable
409CONFLICTreason: quote_exceeds_max_credits أو idempotency_conflict أو request_in_progress أو unit_rendering
413TEXT_TOO_LONGأكثر من 5,000 حرف منطوق (max_characters)
422CONTENT_BLOCKED وVOICE_UNAVAILABLE وLANGUAGE_NOT_SUPPORTED_BY_VOICE وINVALID_SCRIPTلا يمكن نطق النص أو الأصوات كما أُرسلت
429RATE_LIMITED وCONCURRENCY_LIMITطلبات كثيرة جدًا (راجع حدود الطلبات)
503CAPACITY وWARMING_UP وMODERATION_UNAVAILABLE وAI_UNAVAILABLEأعد المحاولة بعد Retry-After ثانية
آخر تحديث: 20 أكتوبر 2026