Intelliverse

Audio transcriptions

OpenAI-compatible, App-ID-scoped speech-to-text with idempotent credit settlement.

Endpoint

POST/v1/audio/transcriptions

Send 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_credits per 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-1 or intelliverse/stt.
  • response_formatjson, verbose_json, or text.
  • language, prompt, temperature — optional OpenAI-compatible fields.

Note

Maximum upload size is 25 MiB and maximum duration is 30 minutes. URL ingestion is not accepted; upload bytes directly so the edge can validate type, size, and duration.

Examples

Shell
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"
JavaScript
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());
Python
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.

  • 401 invalid or missing key.
  • 403 wrong App ID, missing management scope, or Free-tier denial.
  • 409 reused idempotency key with different input or a request still processing.
  • 413/415 oversized, over-duration, or unsupported upload.
  • 502/504 provider failure/timeout; held credits are released.
Did this doc help you?
Help us improve these docs