NueForm

वॉइस API

Voice Studio की आवाज़ों से अपने कोड से स्पीच बनाएँ: एक आवाज़ या पूरी स्क्रिप्ट, हर भाषा में हर बोले गए कैरेक्टर पर 0.4 क्रेडिट, पहले मुफ़्त अनुमान के साथ।

NueSpeak Apex से, यानी Voice Studio वाली ही आवाज़ों से, अपने कोड से स्पीच बनाएँ। रिक्वेस्ट आपके NueForm बैलेंस से क्रेडिट खर्च करती हैं: हर भाषा में हर बोले गए कैरेक्टर पर 0.4 क्रेडिट (हर 1,000 कैरेक्टर पर लगभग $0.04), हर रिक्वेस्ट पर एक बार पूरे क्रेडिट तक ऊपर राउंड किया जाता है। अनुमान मुफ़्त हैं।

सभी request और response bodies में snake_case field names होते हैं। आवाज़ों की पहचान nv_… IDs से और generations की gen_… IDs से होती है।

Voice keys हर प्लान पर काम करती हैं, जैसे ही आपका अकाउंट पहली बार क्रेडिट खरीद ले (या पेड प्लान पर हो) और अपना ईमेल वेरिफ़ाई कर ले। देखें वॉइस API keys।

स्पीच बनाएँ

POST/api/v1/voice

ऑडियो बनाता है और तैयार होने पर जवाब देता है (synchronous, हर रिक्वेस्ट में ज़्यादा से ज़्यादा 5,000 बोले गए कैरेक्टर)। ऑडियो ही पाने के लिए Accept: audio/mpeg (या audio/wav, audio/ogg, audio/basic, audio/*) भेजें; वरना जवाब JSON होता है जिसमें authenticated audio.url होता है।

क्रेडिट रिक्वेस्ट शुरू होने पर कटते हैं। जो lines फ़ेल होती हैं उनके क्रेडिट अपने-आप लौटा दिए जाते हैं, और error पर खत्म होने वाली किसी भी चीज़ का चार्ज नहीं लगता। जिस रिक्वेस्ट का चार्ज लग चुका है वह कभी error पर खत्म नहीं होती: अगर उसका ऑडियो समय पर तैयार नहीं होता, तो वह Location header के साथ 202 लौटाती है। रिक्वेस्ट दोबारा भेजने के बजाय ऑडियो वहीं से लें।

Request Body

modestring

"speak" (एक आवाज़ text पढ़ती है), "script" (कई आवाज़ें) या "estimate" (देखें लागत का अनुमान)

textstring

speak: पढ़े जाने वाले शब्द

voicestring

आवाज़ों की सूची से एक nv_… आवाज़। speak के लिए ज़रूरी; script में, बिना speaker tag वाली lines की आवाज़

linesarray

script: structured lines, हर एक {"speaker", "voice", "text"} या एक pause {"pause_ms": 800} (10,000 तक)

scriptstring

script: multi-voice format, हर speaker की एक line: [Maya] Did you hear that?

castarray

script: हर tagged speaker के लिए एक आवाज़, [{"speaker": "Maya", "voice": "nv_…"}]

auto_convertboolean

पेस्ट की गई screenplay या chat log (MAYA: Hi) को पहले multi-voice format में बदलें। मुफ़्त, रोज़ की सीमा के भीतर

auto_castboolean

जिस speaker की कोई आवाज़ नहीं है, उसके लिए आवाज़ चुनें। मुफ़्त, रोज़ की सीमा के भीतर। अंग्रेज़ी के अलावा किसी भाषा की स्क्रिप्ट के लिए 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

किसी generation को दोबारा बनाएँ (देखें Retakes)

titlestring

आपकी Library में उसका title

Response Fields

idstring

Generation (gen_…)

statusstring

"ready", "rendering" (202: अभी बन रहा है), "partial" (कुछ lines फ़ेल हुईं और उनका कोई चार्ज नहीं) या "failed"

audioobject or null

url (अपनी API key भेजें), format, sample_rate, duration_seconds, retained_until

creditsobject

estimated, charged (इस रिक्वेस्ट ने कितना चार्ज किया) और remaining

linesarray

सिर्फ़ script: हर line के speaker, voice, text, status, start_ms, end_ms और credits

retakes_remaininginteger

इस क्लिप के बचे हुए मुफ़्त retakes

reusedboolean

पहले की बिल्कुल वैसी ही रिक्वेस्ट का ऑडियो, 0 क्रेडिट में

Code Examples

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)।

Response Headers

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 Response

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" }
}

स्क्रिप्ट्स

स्क्रिप्ट एक ही ऑडियो फ़ाइल में कई आवाज़ों में बोलती है। Structured lines भेजें (कोई parsing नहीं) या multi-voice format में script उसके cast के साथ भेजें। Pauses ({"pause_ms": 800}, या स्क्रिप्ट में (pause 2s)) का कोई चार्ज नहीं; सिर्फ़ बोले गए कैरेक्टर बिल होते हैं।

जवाब में lines जुड़ती हैं: हर line ऑडियो में कहाँ शुरू और खत्म होती है, उसका status और उसके कैरेक्टर कितने के होते हैं (credits, दशमलव में)। रिक्वेस्ट एक बार चार्ज होती है, ऊपर राउंड करके। फ़ेल हुई line "credits": 0 दिखाती है और उसका कोई चार्ज नहीं होता।

auto_convert से पेस्ट की गई screenplay या chat log पहले बदली जाती है; auto_cast से बिना आवाज़ वाले हर speaker को एक आवाज़ मिलती है।

Request Example

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"
}

या multi-voice format

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" वही body लेता है जो speak या script लेते हैं, और कुछ भी बनाए बिना सटीक लागत बताता है। यह मुफ़्त है और आपकी generation सीमाओं में नहीं गिना जाता (हर key पर हर मिनट 300 तक)।

Response Fields

charactersinteger

बोले गए कैरेक्टर: जिन पर बिल बनता है

creditsinteger

रिक्वेस्ट ठीक-ठीक कितना चार्ज करेगी

seconds_estimatednumber

ऑडियो लगभग कितना लंबा होगा

balanceinteger

अभी आपका बैलेंस

enoughboolean

आपका बैलेंस (और key की मासिक सीमा, अगर है) इसे कवर करता है

Example

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

ऑडियो बनते-बनते ही भेजता है, ताकि आपका ऐप पूरी क्लिप का इंतज़ार करने के बजाय लगभग एक सेकंड में चलना शुरू कर दे: कोई agent, voice bot या reader। एक आवाज़ text पढ़ती है। Voice engine warm हो तो पहला ऑडियो आम तौर पर 1–2 सेकंड में आ जाता है, टेक्स्ट कितना भी लंबा हो।

कीमत स्पीच बनाएँ वाली ही है: हर बोले गए कैरेक्टर पर 0.4 क्रेडिट, हर रिक्वेस्ट में एक बार ऊपर की ओर पूर्णांकित, और stream शुरू होते ही कटती है। एक stream में लगभग 200 सेकंड तक की स्पीच आती है: अंग्रेज़ी के लगभग 3,100 कैरेक्टर, धीमे बोली जाने वाली भाषाओं में कम (इससे लंबा टेक्स्ट max_characters के साथ 413 TEXT_TOO_LONG देता है)। लंबे टेक्स्ट के लिए कई streams भेजें या POST /api/v1/voice इस्तेमाल करें।

पहले byte से पहले हर failure एक सामान्य error है और उसका कोई चार्ज नहीं लगता: अगर voice engine किसी भी ऑडियो से पहले फ़ेल हो जाए, तो चार्ज लौटा दिया जाता है (500, या engine शुरू होते समय Retry-After के साथ 503 WARMING_UP)। पहले byte के बाद status बदल नहीं सकता, इसलिए बीच में फ़ेल होने वाली stream अपने अंत से पहले रुक जाती है: आपका HTTP client अधूरी body बताता है। सेव की गई कॉपी और उसकी कीमत देखने के लिए NueForm-Generation-Id को एक generation पाएँ के साथ इस्तेमाल करें। अगर आप कनेक्शन छोड़ दें, तब भी stream पूरी बनकर सेव होती है, और उसके क्रेडिट नहीं लौटते।

हर stream एक generation के रूप में भी सेव होती है: वह आपकी Library में दिखती है और ऑडियो डाउनलोड करें उसे देता है, हर क्लिप की तरह normalize की हुई।

Stream या /voice? जब कोई सुनने का इंतज़ार कर रहा हो तब stream करें (agents, voice bots, पढ़कर सुनाना)। Files, कई आवाज़ों वाली scripts, speed, retakes और अनुमानों के लिए POST /api/v1/voice इस्तेमाल करें। MCP tools stream नहीं करते: वे /voice के तरीके से ऑडियो बनाते हैं।

Request Body

voicestring

आवाज़ों की सूची से कोई nv_… आवाज़

textstring

पढ़े जाने वाले शब्द

formatstring

"mp3" (डिफ़ॉल्ट, browsers के लिए), "pcm_24k" (24,000 Hz पर raw 16-bit little-endian mono PCM, agents के लिए) या "mulaw_8k" (8 kHz G.711 μ-law, टेलीफ़ोनी के लिए; "ulaw_8000" भी चलता है)

languagestring

भाषा का नाम या कोड। डिफ़ॉल्ट: आवाज़ की अपनी भाषा

qualitystring

"standard" (डिफ़ॉल्ट; mulaw_8k के लिए "phone"), "studio" या "phone"। कीमत वही

max_creditsinteger

अगर रिक्वेस्ट इससे ज़्यादा की होगी तो उसे मना करें (409, कोई चार्ज नहीं)

saveboolean

true सेव की गई कॉपी को तब तक रखता है जब तक आप उसे न हटाएँ। डिफ़ॉल्ट: 30 दिन बाद हट जाती है

titlestring

आपकी Library में उसका title

speed, scripts, retake_of और reuse stream पर उपलब्ध नहीं हैं (400, reason: "not_on_stream")।

Code Examples

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)।

Response Headers

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

Retakes

किसी generation को उन्हीं शब्दों, आवाज़ों, भाषा, quality और speed के साथ दोबारा बनाने के लिए {"mode": "speak", "retake_of": "gen_…"} भेजें। retake_of के साथ सिर्फ़ mode, format, max_credits और save जाते हैं।

  • मुफ़्त generation के 24 घंटों के भीतर दो बार, बशर्ते इस महीने key के मुफ़्त retakes उन कैरेक्टरों के एक चौथाई से ज़्यादा न हों जिनका इस महीने उस key पर बिल बना। मुफ़्त retake वही gen_… ID रखता है।
  • वरना यह एक नया generation होता है, जो किसी भी रिक्वेस्ट की तरह चार्ज होता है (हर कैरेक्टर पर 0.4 क्रेडिट), और retake_of उस generation का नाम बताता है जिसका retake हुआ।

पहले देखने के लिए retake_of के साथ "mode": "estimate" भेजें: जवाब "free": true या लागत बताता है।

Idempotency

speak और script रिक्वेस्ट के साथ Idempotency-Key header (1–255 कैरेक्टर, जैसे कोई UUID) भेजें, तो कोई retry कभी दो बार चार्ज नहीं कर सकता:

  • वही key और वही body पहली रिक्वेस्ट ने जो बनाया उसी से फिर जवाब देती है, बिना चार्ज (Idempotent-Replayed: true, NueForm-Credits-Charged: 0);
  • वही key और अलग body पर 409 CONFLICT के साथ reason: "idempotency_conflict";
  • जब तक पहली रिक्वेस्ट चल रही है, 409 CONFLICT के साथ reason: "request_in_progress" और Retry-After।

Keys हर API key के लिए 24 घंटे याद रखी जाती हैं।

Stream पर, वही key और वही body JSON में जवाब देती है: पहली रिक्वेस्ट ने जो generation बनाया (वह दोबारा stream नहीं होता)।

Response Headers

हर जवाब बताता है कि उसकी कीमत क्या रही:

Headerमतलब
NueForm-Generation-IdGeneration (gen_…)
NueForm-Credits-Estimatedरिक्वेस्ट के लिए बताई गई कीमत
NueForm-Credits-Chargedइस रिक्वेस्ट ने कितना चार्ज किया, किसी भी अपने-आप लौटाए गए क्रेडिट के बाद (अनुमान, reuse की गई क्लिप, मुफ़्त retake, replay और हर error के लिए 0)
NueForm-Credits-Remainingबाद में आपका बैलेंस
NueForm-Rate-Cardजिस rate card version पर कीमत तय हुई
NueForm-Retakes-Remainingइस क्लिप के बचे हुए मुफ़्त retakes
NueForm-Audio-Durationऑडियो की लंबाई सेकंड में
Idempotent-ReplayedIdempotency-Key के साथ: क्या यह किसी पिछली रिक्वेस्ट का जवाब है
NueForm-Audio-Format, NueForm-Audio-Encoding, NueForm-Audio-Sample-Rate, NueForm-Audio-ChannelsStream का ऑडियो: उसका format, encoding, sample rate और channels
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Resetइस मिनट में इस key की रिक्वेस्ट (देखें Rate Limits)

आवाज़ों की सूची

GET/api/v1/voice/voices

NueForm की stock आवाज़ें, फिर आपकी अपनी और आपकी टीमों की आवाज़ें, हर एक अपनी nv_… ID, भाषा, मुफ़्त preview और बोलने की रफ़्तार के साथ। मुफ़्त।

Query Parameters

sourcestring

"all" (डिफ़ॉल्ट), "stock" या "mine"

languagestring

भाषा का नाम या कोड

genderstring

जैसे "female"

qstring

नाम, style और labels में खोजें

featuredboolean

true: सिर्फ़ featured stock आवाज़ें

Response

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

आपकी किसी आवाज़ को हमेशा के लिए हटाता है: उसका sample, prompts और preview, फिर आवाज़ खुद। क्रेडिट वापस नहीं होते। जब तक forms या फ़ोन नंबर उस आवाज़ का इस्तेमाल कर रहे हैं, जवाब 409 CONFLICT होता है, reason: "voice_in_use" और उनकी गिनती के साथ; उन्हें पहले किसी दूसरी आवाज़ पर ले जाने के लिए ?replacement=nv_… भेजें।

Response

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

Generations की सूची

GET/api/v1/voice/generations

आपके generations, सबसे नए पहले। meta.next_cursor से अगला पेज लें।

Query Parameters

limitinteger

1 से 100 (डिफ़ॉल्ट 20)

cursorstring

पिछले पेज का next_cursor

sourcestring

सिर्फ़ वे जो "api", "studio", "mcp" या "app" से बने

Response

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

एक generation पाएँ

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

एक generation, स्क्रिप्ट हो तो उसकी lines के साथ। यहाँ credits.charged बताता है कि किसी भी अपने-आप लौटाए गए क्रेडिट के बाद उसकी कुल कीमत क्या रही।

ऑडियो डाउनलोड करें

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

ऑडियो खुद, आपकी API key से stream किया जाता है (byte ranges समर्थित)। ?format= में mp3 (डिफ़ॉल्ट), wav, ogg_opus या mulaw_8k। Ogg/Opus और 8 kHz μ-law पहली बार माँगने पर बनते हैं: 202 का मतलब है "Retry-After सेकंड बाद फिर माँगें"। मुफ़्त।

Generation हटाएँ

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

Generation और उसके ऑडियो को हमेशा के लिए हटाता है। क्रेडिट वापस नहीं होते। जो generation अभी बन रहा है, वह 409 CONFLICT और reason: "still_rendering" से जवाब देता है।


अपने क्रेडिट देखें

GET/api/v1/credits

वह बैलेंस जिससे आपकी key खर्च करती है, key का यह महीना और rate card। सिर्फ़ पढ़ने के लिए, Voice key या full-access key से।

Response Fields

balanceinteger

अभी खर्च किए जा सकने वाले क्रेडिट (10,000 क्रेडिट = $1)

approxstring

डॉलर में बैलेंस

keyobject

इस key की monthly_credit_limit (null = कोई सीमा नहीं), spent_this_month, paused और resets_at (महीने की 1 तारीख, UTC)

voice_apiobject

credits_per_character (0.4), राउंडिंग का तरीका, और यह कि अनुमान मुफ़्त हैं

rate_cardobject

हर action की हर कीमत

Response

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, हर भाषा मेंहर 1,000 कैरेक्टर पर लगभग $0.04
एक अनुमान0मुफ़्त
reuse की गई क्लिप (reuse)0मुफ़्त
एक retake24 घंटों में दो बार 0 (fair use), फिर हर कैरेक्टर पर 0.4

क्रेडिट packs में मिलते हैं ($5 में 50,000 क्रेडिट से शुरू) और कभी expire नहीं होते। किसी key की मासिक क्रेडिट सीमा हो सकती है: उतना खर्च होते ही, अगले महीने की 1 तारीख तक उसकी speech और delete रिक्वेस्ट को 403 FORBIDDEN और reason: "key_limit_reached" मिलता है (उसने जो बनाया उसे वह अब भी list और download कर सकती है), और आपकी बाकी keys काम करती रहती हैं। रिक्वेस्ट का भुगतान उन क्रेडिट से होता है जो key के मालिक ने वॉलेट में Voice Studio का भुगतान किससे करें में चुने हैं: उनके अपने, जब तक उन्होंने कोई टीम न चुनी हो। जो टीम भुगतान नहीं कर सकती, उसकी जगह कभी अपने क्रेडिट इस्तेमाल नहीं होते: रिक्वेस्ट को 403 FORBIDDEN और reason: "team_payer_unavailable" मिलता है, या सदस्य के रूप में मासिक सीमा पूरी होने पर reason: "member_cap_reached", और कुछ भी चार्ज नहीं होता।

Errors

हर error standard error format में होता है, और error पर खत्म होने वाली किसी भी चीज़ का चार्ज नहीं लगता। सबसे आम errors:

Statuscodeकब
402INSUFFICIENT_CREDITSआपका बैलेंस रिक्वेस्ट को कवर नहीं करता (credits_required, credits_available, top_up_url; जब key के मालिक की चुनी टीम के क्रेडिट कम हों, तब payer: "team", और तब top_up_url Wallet खोलता है, जहाँ 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_LONG5,000 से ज़्यादा बोले गए कैरेक्टर (max_characters)
422CONTENT_BLOCKED, VOICE_UNAVAILABLE, LANGUAGE_NOT_SUPPORTED_BY_VOICE, INVALID_SCRIPTटेक्स्ट या आवाज़ें जैसे भेजी गईं वैसे बोली नहीं जा सकतीं
429RATE_LIMITED, CONCURRENCY_LIMITबहुत ज़्यादा रिक्वेस्ट (देखें Rate Limits)
503CAPACITY, WARMING_UP, MODERATION_UNAVAILABLE, AI_UNAVAILABLERetry-After सेकंड बाद फिर कोशिश करें
अंतिम अपडेट: 20 अक्टूबर 2026