POST /v1/audio/transcriptions
OpenAI-compatible speech-to-text. The local API takes the clip as inline base64 JSON (not multipart form data). Keep the encoded body small; the host agent caps the transcription body size. Pass a `model` id from `GET /v1/models`.

Authentication

Bearer Token (b3iq_local) API Key (header: X-B3IQ-API-Key) Bearer Token API Key (header: X-B3IQ-Router-Signature)

Request Body required

application/json
model string REQUIRED
audio string REQUIRED
Base64-encoded audio clip.
file_name string
language string
response_format string
duration_seconds number
Client-reported clip duration, used for metering only.
runtime_id string

Responses

200 Transcription result.
application/json
text string
default B3IQ-native problem response.
curl -X POST 'http://127.0.0.1:8831/v1/audio/transcriptions' \  -H 'Authorization: Bearer YOUR_API_TOKEN' \  -H 'Content-Type: application/json' \  -d '{  "model": "string",  "audio": "string",  "file_name": "string",  "language": "string",  "response_format": "string",  "duration_seconds": 0,  "runtime_id": "string"}'
const response = await fetch('http://127.0.0.1:8831/v1/audio/transcriptions', {  method: 'POST',  headers: {      "Authorization": "Bearer YOUR_API_TOKEN",      "Content-Type": "application/json"  },  body: JSON.stringify({    "model": "string",    "audio": "string",    "file_name": "string",    "language": "string",    "response_format": "string",    "duration_seconds": 0,    "runtime_id": "string"  })});const data = await response.json();console.log(data);
import requestsheaders = {    'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.post('http://127.0.0.1:8831/v1/audio/transcriptions', headers=headers, json={  "model": "string",  "audio": "string",  "file_name": "string",  "language": "string",  "response_format": "string",  "duration_seconds": 0,  "runtime_id": "string"})print(response.json())
200 Response
{  "text": "<string>"}
Ask a question... ⌘I