{"openapi":"3.1.0","info":{"title":"VoiceAct API","description":"\nText to speech in 10 languages, with the voices, timing marks and speech\ncheck of the VoiceAct Studio. Authenticate with `Authorization: Bearer va_…`\n(create keys at https://voiceact.ai/dashboard/api). Guide and examples:\nhttps://voiceact.ai/docs/api\n","version":"1.0.0"},"servers":[{"url":"/v1"},{"url":"https://api.voiceact.ai/v1"}],"paths":{"/speech":{"post":{"tags":["Speech"],"summary":"Create speech","description":"Queue a text for speech. Returns the job at once (202), or the\nfinished job (200) when `wait` was long enough. Poll `GET /v1/speech/{id}`\nor open the live stream right away.","operationId":"create_speech_speech_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Speech"}}}},"200":{"description":"Finished within `wait` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Speech"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Speech"],"summary":"List your speech jobs","operationId":"list_speech_speech_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"source","in":"query","required":false,"schema":{"enum":["all","api","studio"],"type":"string","description":"Only jobs made through the API, or in the Studio.","default":"all","title":"Source"},"description":"Only jobs made through the API, or in the Studio."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/speech/{speech_id}/regenerate":{"post":{"tags":["Speech"],"summary":"Free retake of a flagged job","description":"When the speech check flagged a job (`free_retake_available`), make it\nagain once for free: same text, language and voice. Returns the new job.","operationId":"regenerate_speech_speech__speech_id__regenerate_post","parameters":[{"name":"speech_id","in":"path","required":true,"schema":{"type":"string","title":"Speech Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Speech"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/speech/{speech_id}":{"get":{"tags":["Speech"],"summary":"Get a speech job","operationId":"get_speech_speech__speech_id__get","parameters":[{"name":"speech_id","in":"path","required":true,"schema":{"type":"string","title":"Speech Id"}},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`words` adds the word timings once they're ready.","title":"Include"},"description":"`words` adds the word timings once they're ready."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Speech"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Speech"],"summary":"Delete a speech job and its files","operationId":"delete_speech_speech__speech_id__delete","parameters":[{"name":"speech_id","in":"path","required":true,"schema":{"type":"string","title":"Speech Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/speech/{speech_id}/audio":{"get":{"tags":["Speech"],"summary":"Download the audio","operationId":"get_audio_speech__speech_id__audio_get","parameters":[{"name":"speech_id","in":"path","required":true,"schema":{"type":"string","title":"Speech Id"}},{"name":"format","in":"query","required":false,"schema":{"anyOf":[{"enum":["mp3","wav","wav_16000","wav_8000","ulaw_8000","alaw_8000"],"type":"string"},{"type":"null"}],"description":"Default: the job's `format`.","title":"Format"},"description":"Default: the job's `format`."}],"responses":{"200":{"description":"The audio file.","content":{"audio/mpeg":{},"audio/wav":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/speech/{speech_id}/subtitles":{"get":{"tags":["Speech"],"summary":"Download subtitles","operationId":"get_subtitles_speech__speech_id__subtitles_get","parameters":[{"name":"speech_id","in":"path","required":true,"schema":{"type":"string","title":"Speech Id"}},{"name":"format","in":"query","required":false,"schema":{"enum":["srt","vtt"],"type":"string","default":"srt","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}},"application/x-subrip":{},"text/vtt":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/speech/{speech_id}/stream":{"get":{"tags":["Speech"],"summary":"Live audio","operationId":"stream_speech_speech__speech_id__stream_get","parameters":[{"name":"speech_id","in":"path","required":true,"schema":{"type":"string","title":"Speech Id"}},{"name":"format","in":"query","required":false,"schema":{"enum":["pcm_24000","pcm_16000","pcm_8000","ulaw_8000","alaw_8000"],"type":"string","description":"Sample format and rate.","default":"pcm_24000","title":"Format"},"description":"Sample format and rate."},{"name":"transport","in":"query","required":false,"schema":{"enum":["raw","sse"],"type":"string","description":"Raw samples, or Server-Sent Events with base64 audio.","default":"raw","title":"Transport"},"description":"Raw samples, or Server-Sent Events with base64 audio."}],"responses":{"200":{"description":"Raw samples (see X-Audio-Format), or Server-Sent Events.","content":{"application/octet-stream":{},"audio/basic":{},"text/event-stream":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/voices":{"get":{"tags":["Voices and account"],"summary":"List voices","operationId":"list_voices_voices_get","parameters":[{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only voices native to this language (name or code).","title":"Language"},"description":"Only voices native to this language (name or code)."},{"name":"type","in":"query","required":false,"schema":{"enum":["all","preset","saved"],"type":"string","default":"all","title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/account":{"get":{"tags":["Voices and account"],"summary":"Your plan, characters and limits","operationId":"get_account_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}}}}}},"/voices/design":{"post":{"tags":["Voices and account"],"summary":"Design a voice: three takes","description":"Make three short takes of a described voice (a flat 100 characters,\nrefunded if every take fails). Listen, then keep the one you like with\n`POST /v1/voices/design/{id}/save`: that gives a voice id that sounds the\nsame every time. Designs are kept for 24 hours.","operationId":"design_voice_voices_design_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesignRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceDesign"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/voices/design/{design_id}":{"get":{"tags":["Voices and account"],"summary":"A voice design and its takes","operationId":"get_design_voices_design__design_id__get","parameters":[{"name":"design_id","in":"path","required":true,"schema":{"type":"string","title":"Design Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceDesign"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/voices/design/{design_id}/save":{"post":{"tags":["Voices and account"],"summary":"Keep a take as a saved voice","operationId":"save_design_voices_design__design_id__save_post","parameters":[{"name":"design_id","in":"path","required":true,"schema":{"type":"string","title":"Design Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveDesignRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Voice"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/voices/clone/consent":{"get":{"tags":["Voices and account"],"summary":"The cloning consent statement","operationId":"clone_consent_voices_clone_consent_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneConsent"}}}}}}},"/voices/clone":{"post":{"tags":["Voices and account"],"summary":"Clone a voice from a recording","description":"Clone a voice and save it. Needs a paid plan or any purchase, and for\nevery recording your confirmation of the consent statement in its current\nversion. The recording is checked first (noise, echo, more than one\nvoice); the voice is ready when this returns.","operationId":"clone_voice_voices_clone_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_clone_voice_voices_clone_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Voice"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/voices/{voice_id}":{"get":{"tags":["Voices and account"],"summary":"One voice","operationId":"get_voice_voices__voice_id__get","parameters":[{"name":"voice_id","in":"path","required":true,"schema":{"type":"string","title":"Voice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Voice"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Voices and account"],"summary":"Rename a saved voice","operationId":"rename_voice_voices__voice_id__patch","parameters":[{"name":"voice_id","in":"path","required":true,"schema":{"type":"string","title":"Voice Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Voice"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Voices and account"],"summary":"Delete a saved voice","description":"Deletes the voice and, for a clone, its recording. Jobs made with it\nkeep their audio.","operationId":"delete_saved_voice_voices__voice_id__delete","parameters":[{"name":"voice_id","in":"path","required":true,"schema":{"type":"string","title":"Voice Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audio/speech":{"post":{"tags":["OpenAI-compatible"],"summary":"OpenAI-compatible speech","operationId":"openai_speech_audio_speech_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenAISpeechRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"audio/mpeg":{},"audio/wav":{},"application/octet-stream":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Account":{"properties":{"object":{"type":"string","const":"account","title":"Object","default":"account"},"plan":{"type":"string","title":"Plan"},"characters_available":{"type":"integer","title":"Characters Available"},"max_characters_per_request":{"type":"integer","title":"Max Characters Per Request"},"generations_per_minute":{"type":"integer","title":"Generations Per Minute"},"requests_per_minute":{"type":"integer","title":"Requests Per Minute"},"concurrent_jobs":{"type":"integer","title":"Concurrent Jobs","description":"Jobs that run at once; more wait in your queue."},"voice_cloning":{"type":"boolean","title":"Voice Cloning","description":"Whether your saved cloned voices can be used."},"free_monthly_characters":{"type":"integer","title":"Free Monthly Characters","description":"Free plans: the monthly allowance (refills on the 1st).","default":0}},"type":"object","required":["plan","characters_available","max_characters_per_request","generations_per_minute","requests_per_minute","concurrent_jobs","voice_cloning"],"title":"Account"},"Body_clone_voice_voices_clone_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"The speaker, 10-60 s (3 s minimum): WAV, MP3, FLAC, OGG, M4A, max 10 MB."},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"consent":{"type":"boolean","title":"Consent","description":"You confirm the consent statement for this recording."},"consent_version":{"type":"string","maxLength":50,"title":"Consent Version","description":"The version from GET /v1/voices/clone/consent."},"transcript":{"type":"string","maxLength":4000,"title":"Transcript","description":"What is said in the recording (improves the clone; transcribed for you if empty).","default":""},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"Language of the recording (name or code). Default: detected from the transcript, else English."},"description":{"type":"string","maxLength":500,"title":"Description","default":""}},"type":"object","required":["file","name","consent","consent_version"],"title":"Body_clone_voice_voices_clone_post"},"CloneConsent":{"properties":{"version":{"type":"string","title":"Version","description":"Send this as consent_version when cloning."},"text":{"type":"string","title":"Text","description":"What you confirm for every recording you clone."}},"type":"object","required":["version","text"],"title":"CloneConsent"},"DesignRequest":{"properties":{"description":{"type":"string","maxLength":500,"minLength":3,"title":"Description","description":"The voice you want, e.g. 'warm, low female voice, calm and unhurried'."},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"The language the takes speak (name or code). Default English."},"text":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Text","description":"Your script: its opening sentence is used for the takes if it's short enough."},"wait":{"type":"integer","maximum":60.0,"minimum":0.0,"title":"Wait","description":"Wait up to this many seconds for the takes.","default":0}},"additionalProperties":false,"type":"object","required":["description"],"title":"DesignRequest"},"DesignTake":{"properties":{"index":{"type":"integer","title":"Index"},"status":{"type":"string","enum":["ready","failed"],"title":"Status"},"audio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Url","description":"A short preview (link valid for an hour)."},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score","description":"How well the take matches the description (0-1, measured)."},"checks":{"additionalProperties":{"type":"string"},"type":"object","title":"Checks","description":"Measured gender, adult, pitch and pace against the description: yes, close or no.","default":{}},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["index","status"],"title":"DesignTake"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"OpenAISpeechRequest":{"properties":{"model":{"type":"string","title":"Model","description":"Accepted and ignored.","default":"voiceact-1"},"input":{"type":"string","maxLength":99999,"minLength":1,"title":"Input","description":"The text."},"voice":{"type":"string","maxLength":100,"title":"Voice","description":"An OpenAI voice name (alloy, nova, onyx…) or any VoiceAct voice id."},"response_format":{"type":"string","enum":["mp3","wav","pcm","opus","aac","flac"],"title":"Response Format","default":"mp3"},"speed":{"type":"number","maximum":4.0,"minimum":0.25,"title":"Speed","description":"Not supported; ignored.","default":1.0},"instructions":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Instructions","description":"Not supported; ignored."},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"VoiceAct extension: name or code; default detected from the text."},"stream_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Format"}},"additionalProperties":true,"type":"object","required":["input","voice"],"title":"OpenAISpeechRequest"},"SaveDesignRequest":{"properties":{"take":{"type":"integer","maximum":2.0,"minimum":0.0,"title":"Take","description":"Index of the take to keep."},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"}},"additionalProperties":false,"type":"object","required":["take","name"],"title":"SaveDesignRequest"},"Speech":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"speech","title":"Object","default":"speech"},"status":{"type":"string","enum":["queued","processing","completed","failed"],"title":"Status"},"created_at":{"type":"string","title":"Created At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"},"language":{"type":"string","title":"Language"},"voice":{"$ref":"#/components/schemas/SpeechVoice"},"text_length":{"type":"integer","title":"Text Length","description":"Characters in the text you sent."},"characters":{"type":"integer","title":"Characters","description":"Characters billed (estimate until completed; CJK count 3x, timing marks don't count)."},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds"},"queue_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Queue Position","description":"While queued: how many of your own jobs run or wait before this one."},"audio":{"anyOf":[{"$ref":"#/components/schemas/SpeechAudio"},{"type":"null"}]},"words":{"anyOf":[{"items":{"$ref":"#/components/schemas/SpeechWord"},"type":"array"},{"type":"null"}],"title":"Words","description":"Word timings (with ?include=words), once available, a few seconds after completion."},"words_ready":{"type":"boolean","title":"Words Ready","default":false},"speech_check":{"anyOf":[{"type":"string","enum":["passed","flagged"]},{"type":"null"}],"title":"Speech Check","description":"Our speech check listens to the result; 'flagged' means it may contain a misread word."},"free_retake_available":{"type":"boolean","title":"Free Retake Available","description":"A flagged job can be made again once for free: POST /v1/speech/{id}/regenerate.","default":false},"retake_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retake Of","description":"For a free retake: the flagged job it replaces."},"error":{"anyOf":[{"$ref":"#/components/schemas/SpeechErrorInfo"},{"type":"null"}]},"source":{"type":"string","enum":["api","studio"],"title":"Source","default":"api"}},"type":"object","required":["id","status","created_at","language","voice","text_length","characters"],"title":"Speech"},"SpeechAudio":{"properties":{"format":{"type":"string","title":"Format"},"url":{"type":"string","title":"Url","description":"Download with your API key (any format: change ?format=)."}},"type":"object","required":["format","url"],"title":"SpeechAudio"},"SpeechErrorInfo":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"}},"type":"object","required":["code","message"],"title":"SpeechErrorInfo"},"SpeechList":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Speech"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["data","has_more"],"title":"SpeechList"},"SpeechRequest":{"properties":{"text":{"type":"string","maxLength":99999,"minLength":1,"title":"Text","description":"What to say. Timing marks work as in the Studio: `[pause 1.5s]`, `[at 0:12.5]`. The per-request limit depends on your plan (see GET /v1/account)."},"voice":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Voice","description":"A voice id from GET /v1/voices: a preset (e.g. `en_grace_soft_narrator`) or one of your saved voices."},"voice_description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Voice Description","description":"Voice Design: describe a voice instead of picking one. Each request gets a new voice; for the same voice every time, save it in the Studio and use its id."},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"Language of the text: a name (`German`), a code (`de`) or `auto` (detected from the text). Default: the voice's language, else English."},"format":{"type":"string","enum":["mp3","wav","wav_16000","wav_8000","ulaw_8000","alaw_8000"],"title":"Format","description":"Format the job's audio link points to. Any format can be downloaded later.","default":"mp3"},"wait":{"type":"integer","maximum":60.0,"minimum":0.0,"title":"Wait","description":"Wait up to this many seconds for the audio. Finished in time: 200 with the finished job; else 202.","default":0}},"additionalProperties":false,"type":"object","required":["text"],"title":"SpeechRequest"},"SpeechVoice":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Preset key or saved-voice id; null for voice_description."},"type":{"type":"string","enum":["preset","saved","description","clone"],"title":"Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"The voice_description, if one was used."}},"type":"object","required":["type"],"title":"SpeechVoice"},"SpeechWord":{"properties":{"text":{"type":"string","title":"Text"},"start":{"type":"number","title":"Start"},"end":{"type":"number","title":"End"}},"type":"object","required":["text","start","end"],"title":"SpeechWord"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"Voice":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","enum":["preset","saved"],"title":"Type"},"kind":{"anyOf":[{"type":"string","enum":["designed","cloned"]},{"type":"null"}],"title":"Kind","description":"Saved voices: how they were made."},"language":{"type":"string","title":"Language","description":"The voice's native language (every voice can speak all 10)."},"gender":{"anyOf":[{"type":"string","enum":["female","male"]},{"type":"null"}],"title":"Gender"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"roles":{"items":{"type":"string"},"type":"array","title":"Roles","default":[]},"ready":{"type":"boolean","title":"Ready","description":"False while a saved voice is still being prepared.","default":true}},"type":"object","required":["id","name","type","language"],"title":"Voice"},"VoiceDesign":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"voice_design","title":"Object","default":"voice_design"},"status":{"type":"string","enum":["queued","running","completed","failed"],"title":"Status"},"description":{"type":"string","title":"Description"},"language":{"type":"string","title":"Language"},"text":{"type":"string","title":"Text","description":"What the takes say."},"takes":{"items":{"$ref":"#/components/schemas/DesignTake"},"type":"array","title":"Takes"},"takes_planned":{"type":"integer","title":"Takes Planned"},"best":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best","description":"Index of the take that matches best."},"characters":{"type":"integer","title":"Characters","description":"Characters charged for the takes (a flat price, refunded if all fail).","default":0}},"type":"object","required":["id","status","description","language","text","takes","takes_planned"],"title":"VoiceDesign"},"VoiceList":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Voice"},"type":"array","title":"Data"},"languages":{"items":{"type":"string"},"type":"array","title":"Languages","description":"Languages every voice can speak."}},"type":"object","required":["data","languages"],"title":"VoiceList"},"VoicePatch":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"}},"additionalProperties":false,"type":"object","required":["name"],"title":"VoicePatch"}}}}