remix_mode | Meaning | instruct | language |
|---|---|---|---|
normal (default) | Remix the reference audio's timbre per the description | required (1 ~ 2048 characters) | optional, not validated |
translate | Keep the timbre; translate the reference audio and dub it into the target language | ignored | required, and must not be auto |
language in translate mode is strictly validated: it must be one of the 9 values in auto / zh / en-us / ja / ko / fr-fr / pt / de / es / yueauto, otherwise VALIDATION_BAD_PARAMS.en → en-us, fr → fr-fr, modules/validationConstants.js:103-112), so both spellings pass.voiceId (+ optional promptIdx) and source_audio_url must be provided; providing neither returns VALIDATION_BAD_PARAMS.source_audio_url only accepts a data: URL or an http(s) address whose domain has been allowlisted by ops; anything else is always VALIDATION_BAD_PARAMS.VOICE_NOT_FOUND is passed through as-is;MARKET_VOICE_NOT_FOUND) and lack of access (internal AUTH_FORBIDDEN)modules/routeHelpers.js:1008) and both end up downgraded to 500 SYSTEM_INTERNAL_ERROR./api/tts/voice/... compatibility alias.{ status, code, message, requestId? }. code is always the parent code — sub codes only change message and never appear in the body. requestId is present only on reportable-tier errors, so use the X-Vocu-App-Request-Id response header when troubleshooting (it is written unconditionally on every response). See the "Errors" document for the full code reference.