curl --request POST \
--url https://api.slng.ai/v1/bridges/unmute/stt/{model_variant} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form audio='@example-file' \
--form language=enimport requests
url = "https://api.slng.ai/v1/bridges/unmute/stt/{model_variant}"
files = { "audio": ("example-file", open("example-file", "rb")) }
payload = { "language": "en" }
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('audio', '<binary>');
form.append('language', 'en');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.slng.ai/v1/bridges/unmute/stt/{model_variant}', 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://api.slng.ai/v1/bridges/unmute/stt/{model_variant}",
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=\"audio\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<binary>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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://api.slng.ai/v1/bridges/unmute/stt/{model_variant}"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<binary>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.slng.ai/v1/bridges/unmute/stt/{model_variant}")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<binary>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slng.ai/v1/bridges/unmute/stt/{model_variant}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<binary>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"type": "transcription",
"is_final": true,
"alternatives": [
{
"confidence": 123,
"transcript": "<string>"
}
],
"channel": 123,
"language": "<string>"
}{
"error": "Validation error",
"details": "Missing required field: text"
}{
"error": "TTS service error",
"status": 400,
"details": "Rime TTS API error: 400 Bad Request - Invalid argument: Invalid speaker: aurelie"
}{
"error": "<string>",
"message": "<string>",
"statusCode": 123
}{
"error": "Service error",
"details": "Internal processing error"
}{
"error": "TTS service error",
"status": 400,
"details": "Rime TTS API error: 400 Bad Request - Invalid argument: Invalid speaker: aurelie"
}Unified STT
Transcribe audio via SLNG’s native WebSocket protocol bridge. The model_variant path parameter specifies the target STT model (e.g., deepgram/nova:3, slng/openai/whisper:large-v3).
curl --request POST \
--url https://api.slng.ai/v1/bridges/unmute/stt/{model_variant} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form audio='@example-file' \
--form language=enimport requests
url = "https://api.slng.ai/v1/bridges/unmute/stt/{model_variant}"
files = { "audio": ("example-file", open("example-file", "rb")) }
payload = { "language": "en" }
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('audio', '<binary>');
form.append('language', 'en');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.slng.ai/v1/bridges/unmute/stt/{model_variant}', 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://api.slng.ai/v1/bridges/unmute/stt/{model_variant}",
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=\"audio\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<binary>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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://api.slng.ai/v1/bridges/unmute/stt/{model_variant}"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<binary>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.slng.ai/v1/bridges/unmute/stt/{model_variant}")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<binary>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slng.ai/v1/bridges/unmute/stt/{model_variant}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<binary>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"type": "transcription",
"is_final": true,
"alternatives": [
{
"confidence": 123,
"transcript": "<string>"
}
],
"channel": 123,
"language": "<string>"
}{
"error": "Validation error",
"details": "Missing required field: text"
}{
"error": "TTS service error",
"status": 400,
"details": "Rime TTS API error: 400 Bad Request - Invalid argument: Invalid speaker: aurelie"
}{
"error": "<string>",
"message": "<string>",
"statusCode": 123
}{
"error": "Service error",
"details": "Internal processing error"
}{
"error": "TTS service error",
"status": 400,
"details": "Rime TTS API error: 400 Bad Request - Invalid argument: Invalid speaker: aurelie"
}Authorizations
API key issued by SLNG. Pass as Authorization: Bearer <token>.
Path Parameters
Target STT model. Must support WebSocket streaming with final_transcript.
deepgram/nova:2, deepgram/nova:3, deepgram/nova:3-medical, gradium/stt:default, reson8/reson8stt:v1, sarvam/saaras:v3, slng/deepgram/nova:3-en, slng/deepgram/nova:3-es, slng/deepgram/nova:3-hi, slng/deepgram/nova:3-in, slng/deepgram/nova:3-kn, slng/deepgram/nova:3-mr, slng/deepgram/nova:3-multi, slng/deepgram/nova:3-te, slng/openai/whisper:large-v3, soniox/speech-ai:rt-v4 Query Parameters
Target region override. Auto-selected if not provided. Equivalent to the X-Region-Override header; the header takes precedence when both are set.
ap-southeast-2, eu-north-1, us-east-1 Target world part override. Auto-selected if not provided. Equivalent to the X-World-Part-Override header; the header takes precedence when both are set.
ap, eu, na Body
Unmute STT request. Provide either audio (multipart upload) or url (publicly accessible HTTPS URL).
Audio file (multipart) or base64-encoded audio (JSON).
Publicly accessible audio URL.
"https://docs.slng.ai/audio/hello.wav"
Language code for recognition.
Audio sample rate in Hz.
8000, 16000, 22050, 24000, 32000, 48000 Audio encoding format.
linear16, mp3, opus Enable voice activity detection.
Enable partial transcription results.
Response
Transcription successful.
Cognigy STT transcription response.
Was this page helpful?