# Vocu Developers ## Docs - [Overview](https://dev.vocu.ai/overview-doc-7636807.md): - [Authentication Method](https://dev.vocu.ai/authentication-method-doc-7636806.md): ## API Docs - Core > Voice Character > Manage [Get the list of voice characters for the current user](https://dev.vocu.ai/get-the-list-of-voice-characters-for-the-current-user-api-373800498.md): **This endpoint is not paginated** — it returns every voice the user owns in one response, with no `limit` / `offset` / `cursor`. Purchased market voices are prepended to the **front** of the array and carry ids of the form `market:`; pass them through verbatim when generating. - Core > Voice Character > Manage [Get details of the voice character with the specified ID](https://dev.vocu.ai/get-details-of-the-voice-character-with-the-specified-id-api-373800499.md): `id` may be the UUID of a self-created voice or the id of a purchased market voice. Both spellings of the latter work — prefixed `market:` or bare `` — because the lookup falls back to purchased market voices when no owned voice matches. Market voices you have not bought always return `VOICE_NOT_FOUND`, so their existence is not disclosed. - Core > Voice Character > Manage [Create a new voice character](https://dev.vocu.ai/create-a-new-voice-character-api-373800494.md): The request body accepts two encodings: `application/json` (`prompt` / `avatar` as data URLs) or `multipart/form-data` (`prompt` / `avatar` as files, `train_params` / `extra_params` / `vcover` as JSON strings, booleans as `"true"` / `"false"`). Multipart allows at most 2 files of 100 MB each (exceeded → `UPLOAD_TOO_LARGE`); the reference audio itself is capped at 100 MB (exceeded → `VOICE_PROMPT_TOO_LARGE`) and must contain at least 3 seconds of speech. - Core > Voice Character > Manage [Update a voice character's name and description](https://dev.vocu.ai/update-a-voice-characters-name-and-description-api-505321016.md): Modify the voice character's `name` and `metadata.description`. - Core > Voice Character > Manage [Upload avatar for the voice character with the specified ID](https://dev.vocu.ai/upload-avatar-for-the-voice-character-with-the-specified-id-api-373800496.md): `avatar` must be a base64 data-URL string, not a multipart file. The string length is capped at roughly 14 MB, which corresponds to about 10 MB of original image — the limit is applied to the base64 character count (`10 MB × 1.37`). Exceeding it returns `UPLOAD_TOO_LARGE`. - Core > Voice Character > Manage [Delete Voice Character with the specified ID](https://dev.vocu.ai/delete-voice-character-with-the-specified-id-api-373800501.md): After deletion the voice is treated as non-existent by every subsequent query and generation. **This cannot be undone.** - Core > Voice Character > Styles [Get the transcription of a style's reference audio](https://dev.vocu.ai/get-the-transcription-of-a-styles-reference-audio-api-505321018.md): Read the ASR transcription of this style's reference audio (`data` is the string itself, not an object). - Core > Voice Character > Styles [Add a style to the voice character with the specified ID](https://dev.vocu.ai/add-a-style-to-the-voice-character-with-the-specified-id-api-373800495.md): Append a style (prompt) to an existing voice. The new style is assigned a UUID as its `promptId`, which you then pass when generating; omitting it uses `default`. - Core > Voice Character > Styles [Correct the transcription of a style's reference audio](https://dev.vocu.ai/correct-the-transcription-of-a-styles-reference-audio-api-505321019.md): Manually correct the transcription of this style's reference audio. After write, base speech rate (`baseSpeechRate`) is recomputed from the new text and the audio duration. - Core > Voice Character > Styles [Update a style's name and description](https://dev.vocu.ai/update-a-styles-name-and-description-api-505321021.md): Modify the specified style's `name` and `description`. - Core > Voice Character > Styles [Set a style as the default style](https://dev.vocu.ai/set-a-style-as-the-default-style-api-505321020.md): Promote the specified style to this voice character's default style. - Core > Voice Character > Styles [Reset a style and reprocess its reference audio](https://dev.vocu.ai/reset-a-style-and-reprocess-its-reference-audio-api-505321022.md): Discard every derived artifact of this style and re-run reference-audio processing with the new processing switches. **The original uploaded audio is not affected**. - Core > Voice Character > Styles [Delete Style of the specified ID for the Voice Character with the specified ID](https://dev.vocu.ai/delete-style-of-the-specified-id-for-the-voice-character-with-the-specified-id-api-373800502.md): A `promptId` of `default` is always rejected: the default style is the voice's synthesis baseline and removing it would make the voice unusable. That rejection's `code` is `VALIDATION_BAD_PARAMS`; tell it apart by `message`. To change which style is the default, use the "set as default" operation instead of deleting. - Core > Voice Generation > Async jobs [Get the list of asynchronous generation tasks for the current user](https://dev.vocu.ai/get-the-list-of-asynchronous-generation-tasks-for-the-current-user-api-373800506.md): `offset` / `limit` pagination, no cursor; detect the last page when fewer items than `limit` are returned. See the "Pagination" document. - Core > Voice Generation > Async jobs [Get the details of an asynchronous generation task by ID](https://dev.vocu.ai/get-the-details-of-an-asynchronous-generation-task-by-id-api-373800507.md): Polls a job created by `POST /api/tts/generate`. The terminal values of `status` are `generated` (success) and `failed`; `pending` (waiting) and `processing` (synthesising) are intermediate. **The audio URL is only usable once the status is `generated`.** - Core > Voice Generation > Async jobs [Create Asynchronous Voice Generation Task](https://dev.vocu.ai/create-asynchronous-voice-generation-task-api-373800504.md): How this differs from `/api/tts/simple-generate`: this endpoint **returns the job as soon as it is submitted**, supports multi-segment `contents`, mixed content types and SRT subtitles, and **requires neither an API key nor a paid plan**. simple-generate is the single-segment synchronous path with much stricter admission. - Core > Voice Generation > Async jobs [Upload audio for voice conversion](https://dev.vocu.ai/upload-audio-for-voice-conversion-api-505321029.md): The first step of voice conversion (VC). Only the URL returned here can be passed as `input_audio` to `POST /api/tts/simple-generate` or to an `audio` content block in an asynchronous job — **an arbitrary external URL is rejected** with `TTS_INPUT_AUDIO_INVALID`, because the server validates both host and reserved path. - Core > Voice Generation > Async jobs [Delete an asynchronous generation task by ID](https://dev.vocu.ai/delete-an-asynchronous-generation-task-by-id-api-373800508.md): **A job in flight cannot be deleted:** while `status` is `pending` or `processing` the call returns 403 `GENERATE_DELETE_IN_PROGRESS`, so wait until the job settles into `generated` / `failed`. There is no "cancel" semantics here, and the call will not abort a job that is already synthesising. - Core > Voice Generation > Synchronous [List synthesis parameter presets](https://dev.vocu.ai/list-synthesis-parameter-presets-api-505321039.md): Return every synthesis parameter preset. A preset is a named combination of sampling parameters (`temperature` / `top_k` / `top_p`, etc.), - Core > Voice Generation > Synchronous [One-shot synthesis returning an MP3 stream directly](https://dev.vocu.ai/one-shot-synthesis-returning-an-mp3-stream-directly-api-505321038.md): One-shot text-to-speech that **returns audio bytes directly as an `audio/mpeg` stream**, usable as `