Endpoint
/v1/audio/transcriptionsSend an audio file as multipart/form-data. The compatibility alias /v1/transcriptions is also available. Every request requires an App-ID-scoped Router API key, matching app_id, and an Idempotency-Key.
Tier & billing
- Free: unavailable.
- Air, Pro, and Pro Max: available at 2
iv_creditsper audio-minute.
Duration is read from the uploaded audio before dispatch. Credits are held, settled once on success, and fully released on provider failure or timeout. Replaying the same idempotency key and identical file returns the stored response without another debit.
Request
file— required MP3, MP4/M4A, WAV, WebM, Ogg, or FLAC file.app_id— required App ID matching the scoped key.model— optional;whisper-1orintelliverse/stt.response_format—json,verbose_json, ortext.language,prompt,temperature— optional OpenAI-compatible fields.
Note
Examples
curl https://router-api.intelli-verse-x.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $INTELLIVERSE_API_KEY" \
-H "Idempotency-Key: meeting-2026-07-12-001" \
-F "app_id=$INTELLIVERSE_APP_ID" \
-F "model=whisper-1" \
-F "response_format=verbose_json" \
-F "file=@sample.wav;type=audio/wav"import fs from "node:fs";
const form = new FormData();
form.set("app_id", process.env.INTELLIVERSE_APP_ID);
form.set("model", "whisper-1");
form.set("file", new Blob([fs.readFileSync("sample.wav")], { type: "audio/wav" }), "sample.wav");
const response = await fetch("https://router-api.intelli-verse-x.ai/v1/audio/transcriptions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTELLIVERSE_API_KEY}`,
"Idempotency-Key": "meeting-2026-07-12-001",
},
body: form,
});
console.log(await response.json());import os, requests
with open("sample.wav", "rb") as audio:
response = requests.post(
"https://router-api.intelli-verse-x.ai/v1/audio/transcriptions",
headers={
"Authorization": f"Bearer {os.environ['INTELLIVERSE_API_KEY']}",
"Idempotency-Key": "meeting-2026-07-12-001",
},
data={"app_id": os.environ["INTELLIVERSE_APP_ID"], "model": "whisper-1"},
files={"file": ("sample.wav", audio, "audio/wav")},
timeout=150,
)
response.raise_for_status()
print(response.json())Responses & errors
JSON responses contain { "text": "..." }. Verbose JSON also includes language, duration, and segments when available. Response headers include x-request-id, x-iv-audio-duration-seconds, and x-iv-credits-charged.
401invalid or missing key.403wrong App ID, missing management scope, or Free-tier denial.409reused idempotency key with different input or a request still processing.413/415oversized, over-duration, or unsupported upload.502/504provider failure/timeout; held credits are released.