API Reference / Endpoints / Speech
Dubbing
/v1/speech/dubbingCreate a dubbing job from uploaded media or a source URL.
POST
/v1/speech/dubbingAuth: API keyBilling: Consumes 1 API callBehavior: AsyncScopes: audio:generate
POSTAsyncmultipartaudio:generate
When to use it
Use this when you need cross-language voice output and transcript-aware dubbing rather than simple TTS.
Behavior on success
Returns 202 Accepted with a request_id. Poll the status endpoint or use webhooks.
Integration shape
Authorization model
audio:generate
Request format
multipart
Polling pattern
Poll status if the route returns processing.
Request
| Field | Type | Required | Description |
|---|---|---|---|
file | file | Optional | Optional uploaded source file. |
source_url | string | Optional | Alternative to file upload. |
target_lang | string | Yes | Requested target language. |
Example request
POST /v1/speech/dubbing
const form = new FormData();
form.append('file', fileInput.files[0]);
form.append('target_lang', 'es');
const response = await fetch('https://prod-backup-backend.wubble.ai/v1/speech/dubbing', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.WUBBLE_API_KEY}`,
},
body: form,
});
const payload = await response.json();
console.log(payload);Example response
Response shapejson
{
"success": true,
"data": {
"request_id": "<uuid>",
"status": "processing",
"estimated_seconds": 30
}
}Production guidance
Pair this route with idempotency on POST requests and either request polling or webhooks whenever the response is asynchronous.
Was this page helpful?