{"catalog_version":"ad096ee4e7c5f0a6","endpoints":[{"slug":"audio-design","name":"Audio Design","description":"Stub. Renders text in a voice invented from a natural-language description.","endpoint_key":"voice.audio-design","method":"POST","path":"/api/v1/voice/audio-design","scope":"generate:voice","schema_version":"7d68f796560ff902","schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["inputs"],"properties":{"inputs":{"type":"object","properties":{"text":{"type":"string","description":"The text to synthesize into speech."},"language":{"type":"string","description":"Language of the text; \"auto\" detects it.","default":"auto","enum":["auto","Chinese","English","Japanese","Korean","French","German","Italian","Spanish","Portuguese","Russian"]},"styleInstruction":{"type":"string","description":"Optional delivery instruction, e.g. \"speak slowly and calmly\"."},"voiceDescription":{"type":"string","description":"Natural-language description of the voice to invent, e.g. \"a warm, friendly female voice with a slight British accent\"."}},"required":["text","voiceDescription"],"additionalProperties":false},"webhook_url":{"type":"string","format":"uri"}},"components":{"schemas":{"PhantomMedia":{"type":"object","description":"A generated artifact. `media_id` is the durable handle to store and pass into later calls; `url` is presigned and stops working at `url_expires_at`. A deleted or expired artifact keeps its id and reports why under `status`, with `url` null. A stubbed endpoint answers with an external link: `media_id` null, `status` ready, `url` served as pasted with no expiry, and `size_bytes` null.","required":["media_id","status","kind","url"],"properties":{"media_id":{"type":["string","null"],"format":"uuid"},"status":{"type":"string","enum":["ready","deleted","expired"]},"kind":{"type":"string","enum":["image","video","audio"]},"model":{"type":["string","null"],"description":"The model that generated the artifact, as the id a template call selects it by (`phantom/<slug>` for a GPU workflow, otherwise the upstream model id). Null for an upload."},"content_type":{"type":["string","null"]},"size_bytes":{"type":["integer","null"]},"duration_seconds":{"type":["number","null"],"minimum":0,"description":"Playback duration in seconds; null when unknown or not applicable."},"filename":{"type":["string","null"]},"job_id":{"type":["string","null"],"format":"uuid"},"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":["string","null"],"format":"date-time"},"url":{"type":["string","null"],"format":"uri"},"url_expires_at":{"type":["string","null"],"format":"date-time"}},"if":{"properties":{"status":{"const":"ready"}}},"then":{"required":["model"]}}}},"x-outputs":{"audio":{"$ref":"#/components/schemas/PhantomMedia","x-media-type":"audio"}}},"response_fields":["created_at","completed_at","moderation"],"voices":[]},{"slug":"audio-generation","name":"Audio Generation","description":"Stub. Renders text in a voice cloned from a reference clip supplied per request.","endpoint_key":"voice.audio-generation","method":"POST","path":"/api/v1/voice/audio-generation","scope":"generate:voice","schema_version":"9684503ab32ec43f","schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["inputs"],"properties":{"inputs":{"type":"object","properties":{"text":{"type":"string","description":"The text to synthesize into speech."},"language":{"type":"string","description":"Language of the text; \"auto\" detects it.","default":"auto","enum":["auto","Chinese","English","Japanese","Korean","French","German","Italian","Spanish","Portuguese","Russian"]},"referenceText":{"type":"string","description":"Transcript of the reference clip. Recommended when cloning — it measurably improves the result."},"referenceAudio":{"type":"string","format":"uuid","x-media-type":"audio","x-media-ref":"media_id","description":"The media_id of an audio clip of the voice to clone. A URL or an id from your own system is not accepted."}},"required":["text","referenceAudio"],"additionalProperties":false},"webhook_url":{"type":"string","format":"uri"}},"components":{"schemas":{"PhantomMedia":{"type":"object","description":"A generated artifact. `media_id` is the durable handle to store and pass into later calls; `url` is presigned and stops working at `url_expires_at`. A deleted or expired artifact keeps its id and reports why under `status`, with `url` null. A stubbed endpoint answers with an external link: `media_id` null, `status` ready, `url` served as pasted with no expiry, and `size_bytes` null.","required":["media_id","status","kind","url"],"properties":{"media_id":{"type":["string","null"],"format":"uuid"},"status":{"type":"string","enum":["ready","deleted","expired"]},"kind":{"type":"string","enum":["image","video","audio"]},"model":{"type":["string","null"],"description":"The model that generated the artifact, as the id a template call selects it by (`phantom/<slug>` for a GPU workflow, otherwise the upstream model id). Null for an upload."},"content_type":{"type":["string","null"]},"size_bytes":{"type":["integer","null"]},"duration_seconds":{"type":["number","null"],"minimum":0,"description":"Playback duration in seconds; null when unknown or not applicable."},"filename":{"type":["string","null"]},"job_id":{"type":["string","null"],"format":"uuid"},"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":["string","null"],"format":"date-time"},"url":{"type":["string","null"],"format":"uri"},"url_expires_at":{"type":["string","null"],"format":"date-time"}},"if":{"properties":{"status":{"const":"ready"}}},"then":{"required":["model"]}}}},"x-outputs":{"audio":{"$ref":"#/components/schemas/PhantomMedia","x-media-type":"audio"}}},"response_fields":["created_at","completed_at","moderation"],"voices":[]},{"slug":"qwen3-tts","name":"Voice","description":null,"endpoint_key":"voice.qwen3-tts","method":"POST","path":"/api/v1/voice/qwen3-tts","scope":"generate:voice","schema_version":"230323e6ca8a82cb","schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["inputs"],"properties":{"inputs":{"type":"object","properties":{"text":{"type":"string","description":"The text to synthesize into speech."},"voice":{"type":"string","description":"A voice slug from this endpoint’s voices listing."},"language":{"type":"string","description":"Language of the text; \"auto\" detects it.","default":"auto","enum":["auto","Chinese","English","Japanese","Korean","French","German","Italian","Spanish","Portuguese","Russian"]},"style_instruction":{"type":"string","description":"Optional style or emotion instruction, e.g. \"speak slowly and calmly\"."}},"required":["text","voice"],"additionalProperties":false},"webhook_url":{"type":"string","format":"uri"}},"components":{"schemas":{"PhantomMedia":{"type":"object","description":"A generated artifact. `media_id` is the durable handle to store and pass into later calls; `url` is presigned and stops working at `url_expires_at`. A deleted or expired artifact keeps its id and reports why under `status`, with `url` null. A stubbed endpoint answers with an external link: `media_id` null, `status` ready, `url` served as pasted with no expiry, and `size_bytes` null.","required":["media_id","status","kind","url"],"properties":{"media_id":{"type":["string","null"],"format":"uuid"},"status":{"type":"string","enum":["ready","deleted","expired"]},"kind":{"type":"string","enum":["image","video","audio"]},"model":{"type":["string","null"],"description":"The model that generated the artifact, as the id a template call selects it by (`phantom/<slug>` for a GPU workflow, otherwise the upstream model id). Null for an upload."},"content_type":{"type":["string","null"]},"size_bytes":{"type":["integer","null"]},"duration_seconds":{"type":["number","null"],"minimum":0,"description":"Playback duration in seconds; null when unknown or not applicable."},"filename":{"type":["string","null"]},"job_id":{"type":["string","null"],"format":"uuid"},"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":["string","null"],"format":"date-time"},"url":{"type":["string","null"],"format":"uri"},"url_expires_at":{"type":["string","null"],"format":"date-time"}},"if":{"properties":{"status":{"const":"ready"}}},"then":{"required":["model"]}}}},"x-outputs":{"audio":{"$ref":"#/components/schemas/PhantomMedia","x-media-type":"audio"}}},"response_fields":["created_at","completed_at","moderation"],"voices":[{"slug":"blitz","name":"Blitz","description":"dsfsdfsdf","kind":"reference"},{"slug":"ryan","name":"Ryan","description":"sdfsdf","kind":"preset"}],"voice_input":"voice"}]}