Vocu Developers
🇺🇸 English
  • 🇺🇸 English
  • 🇨🇳 简体中文
Api Docs(Current)
User GuideBack To APP
Api Docs(Current)
User GuideBack To APP
🇺🇸 English
  • 🇺🇸 English
  • 🇨🇳 简体中文
🇺🇸 English
  • 🇺🇸 English
  • 🇨🇳 简体中文
  1. Async jobs
  • Overview
  • Authentication Method
  • Core
    • Voice Character
      • Manage
        • Get the list of voice characters for the current user
        • Get details of the voice character with the specified ID
        • Create a new voice character
        • Update a voice character's name and description
        • Upload avatar for the voice character with the specified ID
        • Delete Voice Character with the specified ID
      • Styles
        • Get the transcription of a style's reference audio
        • Add a style to the voice character with the specified ID
        • Correct the transcription of a style's reference audio
        • Update a style's name and description
        • Set a style as the default style
        • Reset a style and reprocess its reference audio
        • Delete Style of the specified ID for the Voice Character with the specified ID
    • Voice Generation
      • Async jobs
        • Get the list of asynchronous generation tasks for the current user
          GET
        • Get the details of an asynchronous generation task by ID
          GET
        • Create Asynchronous Voice Generation Task
          POST
        • Upload audio for voice conversion
          POST
        • Delete an asynchronous generation task by ID
          DELETE
      • Synchronous
        • List synthesis parameter presets
        • One-shot synthesis returning an MP3 stream directly
        • Synchronous real-time voice generation
  • Creative
    • Templates
      • Get User's Template List
      • Get Template Details with Specified ID
      • Create New Template
      • Update Template with Specified ID
      • Delete Template with Specified ID
  • Account
    • User
      • Get current user account information
  • Advanced
    • Splitter
      • List splitter configurations
      • Get splitter configuration details
      • Create a splitter configuration
      • Update a splitter configuration (diff mode)
      • Delete a splitter configuration
  • Schemas
    • Generation Template
    • Generation Task
    • Voice Character
    • General Generation Parameters (New)
    • ErrorResponse
  1. Async jobs

Upload audio for voice conversion

POST
https://v1.vocu.ai/api/tts/upload-audio
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.
audio must be a data-URL string beginning with data:audio/...;base64,, not a multipart file. Constraints:
100 MB after decoding → exceeded gives UPLOAD_TOO_LARGE
300 seconds (5 minutes) of duration → exceeded gives VALIDATION_TOO_LONG
Uploaded content is checked for safety; a rejection returns SAFETY_* with a traceId.
Uploaded audio is transcoded to MP3 at 320 kbps before storage, so the duration and URL in the response describe the transcoded file rather than the bytes you sent. Input that cannot be parsed returns UPLOAD_AUDIO_INVALID. See the "Audio and formats" document.
May return RATE_LIMIT_* (HTTP 429). Read Retry-After and retry with exponential backoff. See the "Errors" document.
INFO
See the Errors document for the full code reference. Always use the X-Vocu-App-Request-Id response header when troubleshooting.

Request

Authorization
Provide your bearer token in the
Authorization
header when making requests to protected resources.
Example:
Authorization: Bearer ********************
Body Params application/json

Example
{
    "audio": "data:audio/wav;base64,X2WDzbOHAPf88clAqELykihJsChXfWwV1C4Oqx9nFyZp82bzq4EOcrzuCWAIiU9AOovOJRMQRJjkslpXTJuNf5D8wfdrfCRM1JHqktqEDCeFVgZhfl2pVbcRyWDVEybArGf4KCYDIJC9DlpdxZIqXDBOPIznQ5RuyACOKx9HN0zzfVtKeAbW7ujKTiRR3DiHsTrWq7g11bLKznC5Lzjg0cEN0bPDnZdEvs0acuOzRFSQCAoweCyCrkBJv0KM9EjOyRlvsGby7Zqg4odsDqok6NmhN0wpmcoUO7cHjoVitVtnBHtjrf3SpnQ2YhRyEDnWql5i12thBqF6lpZ2j8RjxW4HYBkcdSRkJxZC1QzHdozblKfbkaRJ26Z3Rz2t2mY98pxNUmpHiJD8PWSTJbg3q0YLXu2pFFZ729XN2aGTRA3imzfsjE6vNtN4j8PM7HieHw9yHhX15W4QPJyrTtNVdVj8O3eVYmNlQmwiMNlYfdU2tpZfdxNE"
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location 'https://v1.vocu.ai/api/tts/upload-audio' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
    "audio": "data:audio/wav;base64,X2WDzbOHAPf88clAqELykihJsChXfWwV1C4Oqx9nFyZp82bzq4EOcrzuCWAIiU9AOovOJRMQRJjkslpXTJuNf5D8wfdrfCRM1JHqktqEDCeFVgZhfl2pVbcRyWDVEybArGf4KCYDIJC9DlpdxZIqXDBOPIznQ5RuyACOKx9HN0zzfVtKeAbW7ujKTiRR3DiHsTrWq7g11bLKznC5Lzjg0cEN0bPDnZdEvs0acuOzRFSQCAoweCyCrkBJv0KM9EjOyRlvsGby7Zqg4odsDqok6NmhN0wpmcoUO7cHjoVitVtnBHtjrf3SpnQ2YhRyEDnWql5i12thBqF6lpZ2j8RjxW4HYBkcdSRkJxZC1QzHdozblKfbkaRJ26Z3Rz2t2mY98pxNUmpHiJD8PWSTJbg3q0YLXu2pFFZ729XN2aGTRA3imzfsjE6vNtN4j8PM7HieHw9yHhX15W4QPJyrTtNVdVj8O3eVYmNlQmwiMNlYfdU2tpZfdxNE"
}'

Responses

🟢200Audio file uploaded
application/json
Uploaded; data.url can be used directly as input_audio, and data.duration is the transcoded length in seconds
Bodyapplication/json

Example
{
    "status": 200,
    "message": "OK",
    "data": {
        "url": "https://storage.vocustatic.com/vc-input/8ca08a3e-6ea4-4f6f-aa1a-73de8c388035/5d25c563-1387-40f7-b5bf-4897add4b6d1.mp3"
    }
}
🟠400Bad request
🟠401Unauthorized
🟠413Payload too large
🟠429Rate limited
🔴500Server error
🔴503Temporarily unavailable
Modified at 2026-08-23 09:24:46
Previous
Create Asynchronous Voice Generation Task
Next
Delete an asynchronous generation task by ID