API Reference / Endpoints / Speech
Speech to text
/v1/speech/speech-to-textTranscribe uploaded audio. Returns 200 for short jobs or 202 for longer work.
POST
/v1/speech/speech-to-textAuth: API keyBilling: Billable when generation startsBehavior: Sync or asyncScopes: audio:generate
POSTSync or asyncmultipartaudio:generate
When to use it
Use this for transcription when you have an audio file and want the platform to choose sync or async behavior based on duration.
Behavior on success
May return immediately for shorter work or 202 Accepted for longer jobs.
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 | Yes | Audio file to transcribe. |
Example request
POST /v1/speech/speech-to-text
const form = new FormData();
form.append('file', fileInput.files[0]);
form.append('model_id', 'scribe');
const response = await fetch('https://prod-backup-backend.wubble.ai/v1/speech/speech-to-text', {
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": {
"transcript": "Hello world",
"request_id": "<uuid>"
}
}Implementation notes
Longer files may return 202 and require polling.
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?