LinconwavesLinconwavesUnified docs
AI Workers

Whisper (Speech to Text)

Automatic speech recognition via the Linconwaves AI Workers API.

Whisper (slug: whisper) transcribes spoken audio to text.

Endpoint

  • URL: POST /:modelSlug with modelSlug = whisper
  • Auth: Authorization: Bearer <api_key>
  • Content-Type: application/json
  • Base URL: https://aiworker.linconwaves.com

Request

Send audio as a byte array and optional prompt.

{
  "audio": [82, 73, 70, 70],
  "prompt": "Transcribe this clip"
}

Notes:

  • Provide audio bytes (PCM/WAV/MP3, etc.). Keep size reasonable for low latency.
  • prompt is optional; omit if not needed.

Response

  • Typical: { "result": { "text": "<transcript>" } }, or sometimes response/text. Errors return JSON { "error": "...", "detail"?: "..." } with HTTP codes (400/401/499/500).

Curl example (base64 to bytes inline)

# assumes AUDIO_B64 holds base64 of your audio (no data: prefix)
curl -X POST https://aiworker.linconwaves.com/whisper \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  --data "$(node -e \"const b=Buffer.from(process.env.AUDIO_B64,'base64'); console.log(JSON.stringify({audio:[...b],prompt:'Transcribe this clip'}));\")"

JavaScript (fetch)

const audioBytes = [82, 73, 70, 70];

const resp = await fetch('https://aiworker.linconwaves.com/whisper', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${process.env.API_KEY}`,
  },
  body: JSON.stringify({ audio: audioBytes, prompt: 'Transcribe this clip' }),
});

const data = await resp.json();
if (!resp.ok) {
  throw new Error(data.error || `Request failed (${resp.status})`);
}

const transcript =
  data.result?.text ||
  data.text ||
  data.response ||
  "No transcript found.";

Error codes

  • 401 Unauthorized — Missing/invalid API key.
  • 400 Bad Request — Invalid payload (e.g., missing audio).
  • 499 Client Closed Request — Request aborted by client.
  • 500 — Upstream model error or unexpected failure.

Backend snippets

const BASE = 'https://aiworker.linconwaves.com';
const API_KEY = process.env.AIWORKER_API_KEY!;

const payload = {
  "audio": [82, 73, 70, 70],
  "prompt": "Transcribe this clip"
};

const res = await fetch(`${BASE}/whisper`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${API_KEY}` ,
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);

Frontend snippets

// app/api/aiworker/route.ts
const BASE = 'https://aiworker.linconwaves.com';
const API_KEY = process.env.AIWORKER_API_KEY!;

export async function POST(req: Request) {
  const payload = await req.json();
  const res = await fetch(`${BASE}/whisper`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      Authorization: `Bearer ${API_KEY}` ,
    },
    body: JSON.stringify(payload),
  });
  return new Response(await res.text(), { status: res.status, headers: res.headers });
}
  • Playground: Dashboard → Playground → select “Whisper”, upload audio, and transcribe.
Whisper (Speech to Text) | Linconwaves Docs