curl --request POST \
--url https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText \
--header 'Content-Type: multipart/form-data' \
--header 'x-bot: <api-key>' \
--header 'x-user-auth: <api-key>' \
--form Record='@example-file' \
--form TargetLanguage=ar-eg \
--form ModelName=v1 \
--form SessionId=streaming-session-1234 \
--form SetDefaultSampleRate=true \
--form SourceLanguage=ar-eg \
--form TaskType=Transcript \
--form OutputFormat=Text \
--form RecordUrl=https://cdn.widebot.net/tmp/audio/sample.wav \
--form MaxRecordLengthInSeconds=180 \
--form SampleRate=16000import requests
url = "https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText"
files = { "Record": ("example-file", open("example-file", "rb")) }
payload = {
"TargetLanguage": "ar-eg",
"ModelName": "v1",
"SessionId": "streaming-session-1234",
"SetDefaultSampleRate": "true",
"SourceLanguage": "ar-eg",
"TaskType": "Transcript",
"OutputFormat": "Text",
"RecordUrl": "https://cdn.widebot.net/tmp/audio/sample.wav",
"MaxRecordLengthInSeconds": "180",
"SampleRate": "16000"
}
headers = {
"x-user-auth": "<api-key>",
"x-bot": "<api-key>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('Record', '<string>');
form.append('TargetLanguage', 'ar-eg');
form.append('ModelName', 'v1');
form.append('SessionId', 'streaming-session-1234');
form.append('SetDefaultSampleRate', 'true');
form.append('SourceLanguage', 'ar-eg');
form.append('TaskType', 'Transcript');
form.append('OutputFormat', 'Text');
form.append('RecordUrl', 'https://cdn.widebot.net/tmp/audio/sample.wav');
form.append('MaxRecordLengthInSeconds', '180');
form.append('SampleRate', '16000');
const options = {method: 'POST', headers: {'x-user-auth': '<api-key>', 'x-bot': '<api-key>'}};
options.body = form;
fetch('https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Record\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TargetLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ModelName\"\r\n\r\nv1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SessionId\"\r\n\r\nstreaming-session-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SetDefaultSampleRate\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SourceLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TaskType\"\r\n\r\nTranscript\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"OutputFormat\"\r\n\r\nText\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"RecordUrl\"\r\n\r\nhttps://cdn.widebot.net/tmp/audio/sample.wav\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"MaxRecordLengthInSeconds\"\r\n\r\n180\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SampleRate\"\r\n\r\n16000\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"x-bot: <api-key>",
"x-user-auth: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Record\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TargetLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ModelName\"\r\n\r\nv1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SessionId\"\r\n\r\nstreaming-session-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SetDefaultSampleRate\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SourceLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TaskType\"\r\n\r\nTranscript\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"OutputFormat\"\r\n\r\nText\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"RecordUrl\"\r\n\r\nhttps://cdn.widebot.net/tmp/audio/sample.wav\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"MaxRecordLengthInSeconds\"\r\n\r\n180\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SampleRate\"\r\n\r\n16000\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-user-auth", "<api-key>")
req.Header.Add("x-bot", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText")
.header("x-user-auth", "<api-key>")
.header("x-bot", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Record\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TargetLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ModelName\"\r\n\r\nv1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SessionId\"\r\n\r\nstreaming-session-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SetDefaultSampleRate\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SourceLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TaskType\"\r\n\r\nTranscript\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"OutputFormat\"\r\n\r\nText\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"RecordUrl\"\r\n\r\nhttps://cdn.widebot.net/tmp/audio/sample.wav\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"MaxRecordLengthInSeconds\"\r\n\r\n180\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SampleRate\"\r\n\r\n16000\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-user-auth"] = '<api-key>'
request["x-bot"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Record\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TargetLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ModelName\"\r\n\r\nv1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SessionId\"\r\n\r\nstreaming-session-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SetDefaultSampleRate\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SourceLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TaskType\"\r\n\r\nTranscript\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"OutputFormat\"\r\n\r\nText\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"RecordUrl\"\r\n\r\nhttps://cdn.widebot.net/tmp/audio/sample.wav\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"MaxRecordLengthInSeconds\"\r\n\r\n180\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SampleRate\"\r\n\r\n16000\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body"data: {\"partial\": \"أهلا\"}\n\ndata: {\"partial\": \"أهلا وسهلا\"}\n\ndata: {\"partial\": \"أهلا وسهلا بكم\"}\n\ndata: {\"final\": \"أهلا وسهلا بكم في تطبيقات الذكاء الاصطناعي من وايد بوت\"}\n\ndata: {\"status\": \"complete\", \"duration\": 8.5, \"consumption\": \"8/1000\"}\n"Stream Text
Real-time speech to text conversion with streaming output for live processing applications.
Key Features:
- Real-time transcription
- Progressive text output
- Live audio processing
- Streaming partial results
Use Cases:
- Live transcription services
- Real-time voice assistants
- Meeting transcription
- Voice note processing
Note: Example requests/responses shown here are illustrative. When using the live “Try it” tool, you may see two responses: an HTTP status preview and the API’s streaming output.
curl --request POST \
--url https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText \
--header 'Content-Type: multipart/form-data' \
--header 'x-bot: <api-key>' \
--header 'x-user-auth: <api-key>' \
--form Record='@example-file' \
--form TargetLanguage=ar-eg \
--form ModelName=v1 \
--form SessionId=streaming-session-1234 \
--form SetDefaultSampleRate=true \
--form SourceLanguage=ar-eg \
--form TaskType=Transcript \
--form OutputFormat=Text \
--form RecordUrl=https://cdn.widebot.net/tmp/audio/sample.wav \
--form MaxRecordLengthInSeconds=180 \
--form SampleRate=16000import requests
url = "https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText"
files = { "Record": ("example-file", open("example-file", "rb")) }
payload = {
"TargetLanguage": "ar-eg",
"ModelName": "v1",
"SessionId": "streaming-session-1234",
"SetDefaultSampleRate": "true",
"SourceLanguage": "ar-eg",
"TaskType": "Transcript",
"OutputFormat": "Text",
"RecordUrl": "https://cdn.widebot.net/tmp/audio/sample.wav",
"MaxRecordLengthInSeconds": "180",
"SampleRate": "16000"
}
headers = {
"x-user-auth": "<api-key>",
"x-bot": "<api-key>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('Record', '<string>');
form.append('TargetLanguage', 'ar-eg');
form.append('ModelName', 'v1');
form.append('SessionId', 'streaming-session-1234');
form.append('SetDefaultSampleRate', 'true');
form.append('SourceLanguage', 'ar-eg');
form.append('TaskType', 'Transcript');
form.append('OutputFormat', 'Text');
form.append('RecordUrl', 'https://cdn.widebot.net/tmp/audio/sample.wav');
form.append('MaxRecordLengthInSeconds', '180');
form.append('SampleRate', '16000');
const options = {method: 'POST', headers: {'x-user-auth': '<api-key>', 'x-bot': '<api-key>'}};
options.body = form;
fetch('https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Record\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TargetLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ModelName\"\r\n\r\nv1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SessionId\"\r\n\r\nstreaming-session-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SetDefaultSampleRate\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SourceLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TaskType\"\r\n\r\nTranscript\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"OutputFormat\"\r\n\r\nText\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"RecordUrl\"\r\n\r\nhttps://cdn.widebot.net/tmp/audio/sample.wav\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"MaxRecordLengthInSeconds\"\r\n\r\n180\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SampleRate\"\r\n\r\n16000\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"x-bot: <api-key>",
"x-user-auth: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Record\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TargetLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ModelName\"\r\n\r\nv1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SessionId\"\r\n\r\nstreaming-session-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SetDefaultSampleRate\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SourceLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TaskType\"\r\n\r\nTranscript\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"OutputFormat\"\r\n\r\nText\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"RecordUrl\"\r\n\r\nhttps://cdn.widebot.net/tmp/audio/sample.wav\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"MaxRecordLengthInSeconds\"\r\n\r\n180\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SampleRate\"\r\n\r\n16000\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-user-auth", "<api-key>")
req.Header.Add("x-bot", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText")
.header("x-user-auth", "<api-key>")
.header("x-bot", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Record\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TargetLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ModelName\"\r\n\r\nv1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SessionId\"\r\n\r\nstreaming-session-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SetDefaultSampleRate\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SourceLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TaskType\"\r\n\r\nTranscript\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"OutputFormat\"\r\n\r\nText\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"RecordUrl\"\r\n\r\nhttps://cdn.widebot.net/tmp/audio/sample.wav\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"MaxRecordLengthInSeconds\"\r\n\r\n180\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SampleRate\"\r\n\r\n16000\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://gateway.widebot.net/api/v1/AQL/Stream/SpeechToText")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-user-auth"] = '<api-key>'
request["x-bot"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Record\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TargetLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ModelName\"\r\n\r\nv1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SessionId\"\r\n\r\nstreaming-session-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SetDefaultSampleRate\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SourceLanguage\"\r\n\r\nar-eg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"TaskType\"\r\n\r\nTranscript\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"OutputFormat\"\r\n\r\nText\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"RecordUrl\"\r\n\r\nhttps://cdn.widebot.net/tmp/audio/sample.wav\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"MaxRecordLengthInSeconds\"\r\n\r\n180\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"SampleRate\"\r\n\r\n16000\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body"data: {\"partial\": \"أهلا\"}\n\ndata: {\"partial\": \"أهلا وسهلا\"}\n\ndata: {\"partial\": \"أهلا وسهلا بكم\"}\n\ndata: {\"final\": \"أهلا وسهلا بكم في تطبيقات الذكاء الاصطناعي من وايد بوت\"}\n\ndata: {\"status\": \"complete\", \"duration\": 8.5, \"consumption\": \"8/1000\"}\n"Authorizations
Your API key from account settings
Your bot ID from account settings
Body
Audio file for streaming transcription
Language for transcription output
"ar-eg"
Required. Speech-to-text model.
- v1: Best Arabic quality, with strong streaming. Choose this for Arabic-only audio.
- v2: Handles Arabic and English. Choose this when the audio mixes or switches between the two languages.
v1, v2 "v1"
Unique session identifier
"streaming-session-1234"
Set to "true" to use the default sample rate. Provide this or an explicit SampleRate; transcription fails without sample-rate information.
true, false "true"
Language of the input audio
"ar-eg"
Type of processing (Transcript/Translate)
"Transcript"
Format of the output
"Text"
Optional. URL of an audio file to transcribe.
"https://cdn.widebot.net/tmp/audio/sample.wav"
Maximum audio duration to process
"180"
Sample rate of the provided audio in Hz
"16000"
Response
Streaming transcription with progressive results
Server-sent events with transcription progress
Was this page helpful?

