Skip to content

Try Resonance 2 early.

Tell us a little about yourself and what you’re building.

A brief description of your use case.

We’ll use these details to review your application and contact you about access. Privacy policy

Explore oruk

Hosted Orukeet preview · Updated November 11, 2026

Transcribe audio in Python with Orukeet

Send a short English recording to the Orukeet API and print the complete response. Start with the supplied recording, then replace it with your own audio. No local GPU or model download is needed.

Recipe requirements and limits
RuntimePython 3.10+; Oruk SDK 0.2.15 (versioned wheel)
AccessAn active Oruk subscription or eligible legacy account, API access, a key and available allowance/budget
Price$0.00045/audio minute ($0.027/hour); optional tasks are off
InputEnglish; WAV, FLAC, MP3, M4A, OGG or WebM; at most 60 seconds; 4 MiB complete multipart request
OutputFinal text, duration and usage; no partial words or word timestamps
Demo limitsFile is capped at 4 MiB minus 64 KiB for multipart overhead; no automatic retries; requested diarization must succeed

Plans start at $9/month. Usage draws from the separate Orukeet allowance; excess usage shares your spending cap. Trial allowances are smaller and overage is disabled. See total monthly costs and assumptions.

Run the example

Create a key in your account and set ORUK_API_KEY in your local environment. Keep it out of source control. On Windows, activate the Python environment with .venv\Scripts\activate.

Terminal · install and run
python3 -m venv .venv
source .venv/bin/activate
python -m pip install https://oruk.ai/sdk/oruk-0.2.15-py3-none-any.whl
curl --fail -O https://oruk.ai/examples/orukeet-api.py
curl --fail -o sample.wav https://oruk.ai/samples/conversations/02-grocery-prices.wav
# Set ORUK_API_KEY in your environment, then run:
python orukeet-api.py sample.wav > result.json
Complete Python source
orukeet-api.py
"""Transcribe short English audio with the Orukeet hosted preview.

Python 3.10+. Install the versioned SDK documented in the canonical guide:
https://oruk.ai/guides/orukeet-python-transcription
Set ORUK_API_KEY, then run: python orukeet-api.py sample.wav [--diarize]
Prints complete JSON to stdout. No automatic retry after an uncertain request.
"""
import argparse
import json
import os
from pathlib import Path
import sys
import uuid

from oruk import Oruk, OrukAPIError


def main():
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("audio", type=Path)
    parser.add_argument("--diarize", action="store_true")
    args = parser.parse_args()
    key = os.environ.get("ORUK_API_KEY")
    if not key:
        parser.error("Set ORUK_API_KEY in your environment; never put it in source.")
    if not args.audio.is_file():
        parser.error("Audio file does not exist.")
    # Reserve 64 KiB for multipart fields and headers below the API 4 MiB cap.
    if not 0 < args.audio.stat().st_size <= 4 * 1024 * 1024 - 64 * 1024:
        parser.error("Use a nonempty file at most 4 MiB minus 64 KiB; the whole multipart request must fit 4 MiB.")
    request_id = str(uuid.uuid4())
    print(f"Request ID: {request_id}", file=sys.stderr)
    try:
        with Oruk(api_key=key, max_retries=0, timeout=120) as client:
            result = client.transcribe(
                args.audio, model="oruk-orukeet", diarize=args.diarize,
                request_id=request_id,
            )
        print(json.dumps(result, ensure_ascii=False, indent=2))
        return 0
    except OrukAPIError as error:
        print(json.dumps({"status": error.status, "code": error.code,
                          "request_id": error.request_id or request_id}), file=sys.stderr)
        print("Check the guide's error table before trying again. No retry was made.", file=sys.stderr)
        return 1
    except Exception as error:
        print(f"{type(error).__name__}; request {request_id}. Outcome may be unknown; no retry was made.", file=sys.stderr)
        return 1


if __name__ == "__main__":
    raise SystemExit(main())

Source and installation instructions are also available in the public GitHub examples.

Hear the sample and inspect the result

An actual API response captured November 11, 2026 for this 14.45-second recording follows. The saved payload was captured with a multipart HTTP client using the same model, fields and sample as this recipe. IDs, timing, transcripts and scores may vary between requests.

Actual response · complete JSON
{
  "id": "tr_50552a9a634845429678d029db410ebf",
  "object": "audio.transcription",
  "model": "oruk-orukeet",
  "task": "transcription",
  "text": "I'm sorry. The price of food has gone up so much. I mean It really has. What happened? I don't know. Like, honestly, I don't know what happened.",
  "language": "en",
  "duration": 14.45,
  "audio_seconds": 14.45,
  "emotions": [],
  "styles": [],
  "segments": [],
  "diarized": false,
  "speakers": [],
  "usage": {
    "audio_seconds": 14.45,
    "billable_seconds": 14.45,
    "billing_unit": "audio_second",
    "billing_basis": "prepaid",
    "rate_per_minute_usd": "0.00045",
    "estimated_cost_usd": "0.000109",
    "cost_microusd": 109,
    "pricing_version": "2026-09-13-orukeet",
    "tasks": [
      "transcription"
    ]
  },
  "request_id": "req_42924d1829fa416dba9ea2a9ee06ea62",
  "asr_ms": 47.95916299917735,
  "server_ms": 48.03640399950382
}

Download JSON · Capture and SHA-256 record · Sample attribution. Audio: The Agentic Data Company, Open Yap 1K (2026), CC BY 4.0; excerpted and downmixed by Oruk. Recorded usage came from a legacy prepaid demonstration account and is not a current subscription invoice.

Handle failures and check the limits

How to handle failed requests
400 / 413 / 415 / 422Check the model, fields, file format, complete request size and audio duration. Do not silently truncate a recording.
401 / 403Check the key and account/API access. A verified email alone does not grant inference access.
402Check the subscription, allowance and spending cap. Do not keep resending audio.
429 / 503Respect Retry-After when supplied and inspect the error. The sample does not retry automatically.
Timeout / disconnectThe outcome may be unknown. Retain the request ID for investigation; this guide does not promise idempotent replay for Orukeet.

These examples demonstrate integration, not held-out accuracy or production throughput. The September serving measurements have their original client, hardware and timing boundaries in the benchmark comparison. The hosted English preview is separate from the 25-language downloadable model. Read the audio-processing terms before sending private recordings.