curl --request POST \
--url https://api.tuteliq.ai/api/v1/safety/voice \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tuteliq.ai/api/v1/safety/voice', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tuteliq.ai/api/v1/safety/voice"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.tuteliq.ai/api/v1/safety/voice")
.post(null)
.addHeader("Authorization", "Bearer <token>")
.build()
val response = client.newCall(request).execute()import Foundation
let url = URL(string: "https://api.tuteliq.ai/api/v1/safety/voice")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["Authorization": "Bearer <token>"]
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api.tuteliq.ai/api/v1/safety/voice");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
false{
"file_id": "<string>",
"transcription": {
"text": "<string>",
"language": "<string>",
"duration": 123,
"segments": [
{
"start": 123,
"end": 123,
"text": "<string>"
}
]
},
"analysis": {},
"overall_risk_score": 123,
"overall_severity": "none",
"detected": true,
"confidence": 123,
"recommended_action": "none",
"action_detail": "<string>",
"rationale": "<string>",
"language": "<string>",
"language_status": "stable",
"credits_used": 123,
"external_id": "<string>",
"incident_moderation_enabled": "<string>",
"customer_id": "<string>",
"metadata": {}
}Analyze voice/audio for safety concerns with transcription
Upload an audio file (mp3, wav, m4a, ogg, flac, webm, mp4 — max 25MB) for automatic transcription followed by full safety analysis on the transcript. Returns timestamped segments, per-category analysis (bullying, grooming, unsafe, emotions), and an overall risk score. Ideal for monitoring voice chats, audio messages, and recorded conversations.
curl --request POST \
--url https://api.tuteliq.ai/api/v1/safety/voice \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tuteliq.ai/api/v1/safety/voice', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tuteliq.ai/api/v1/safety/voice"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.tuteliq.ai/api/v1/safety/voice")
.post(null)
.addHeader("Authorization", "Bearer <token>")
.build()
val response = client.newCall(request).execute()import Foundation
let url = URL(string: "https://api.tuteliq.ai/api/v1/safety/voice")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["Authorization": "Bearer <token>"]
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api.tuteliq.ai/api/v1/safety/voice");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
false{
"file_id": "<string>",
"transcription": {
"text": "<string>",
"language": "<string>",
"duration": 123,
"segments": [
{
"start": 123,
"end": 123,
"text": "<string>"
}
]
},
"analysis": {},
"overall_risk_score": 123,
"overall_severity": "none",
"detected": true,
"confidence": 123,
"recommended_action": "none",
"action_detail": "<string>",
"rationale": "<string>",
"language": "<string>",
"language_status": "stable",
"credits_used": 123,
"external_id": "<string>",
"incident_moderation_enabled": "<string>",
"customer_id": "<string>",
"metadata": {}
}Authorizations
API key as Bearer token
Response
Default Response
Show child attributes
Show child attributes
none, low, medium, high, critical A concern was observed at ANY severity, including monitor-only cases. For production branching prefer recommended_action.
Confidence in the overall verdict (0-1).
Routing key, weakest to strongest: none, monitor, flag_for_review, block, immediate_intervention. Safe to switch on.
none, monitor, flag_for_review, block, immediate_intervention Human-readable expansion of recommended_action for a moderator UI. Free text: do not branch on it.
Why this verdict was reached. Built from category and severity labels only; never contains the transcript or media description.
Detected or specified language code. 27 supported languages: en is stable, the other 26 are beta (es, pt, uk, sv, no, da, fi, de, fr, nl, pl, it, tr, ro, el, cs, hu, bg, hr, sk, lt, lv, et, sl, mt, ga).
Language support maturity: "stable" (en) or "beta" (all others)
stable, beta Number of credits consumed by this request
Per-call override of account incident logging: "true" forces persistence, "false" suppresses it. Omit for account default.
Echo of the metadata you provided in the request