canonical: https://jentic.com/apis/oruk.ai/oruk

# oruk Speech API

The oruk Speech API analyses uploaded audio files: it transcribes English speech, classifies multilabel emotion and speaking style, and returns a combined analysis with transcript, emotion, style, segments, and tagged text. It also scores speaking proficiency with CEFR and fluency fields plus 0 to 1 pronunciation estimates per word, and detects whether a recording is human or AI-generated speech with the OrukZero model. Files can be WAV, FLAC, MP3, M4A, OGG, or WebM up to 30 MB and 60 minutes, and models include oruk-resonance, oruk-fourier, oruk-spectra-2, and the access-gated oruk-resonance-2.

## For AI agents

Send an audio file to oruk to get an English transcript, emotion and speaking-style labels, a CEFR and fluency proficiency score, or a verdict on whether the voice is human or synthetic.

## Scope

Does not generate speech, translate audio, or host the realtime WebSocket stream itself. Use for analysing uploaded speech files for transcript, emotion, style, proficiency, and synthetic-voice detection only.

## Capabilities

- Transcribe an audio file through `/v1/audio/transcriptions` with the oruk-resonance or oruk-fourier model, with optional diarization on oruk-resonance
- Classify multilabel emotion with `/v1/audio/emotions` or speaking style with `/v1/audio/styles`, or both at once with `/v1/audio/affect`
- Return transcript, emotion, style, segments, and tagged text in one call to `/v1/audio/analysis`
- Score speaking proficiency with cefr_score, fluency_score, and per-word pronunciation scores through `/v1/audio/proficiency`
- Detect whether a recording is human or AI speech with OrukZero through `/v1/audio/synthetic-speech`
- Prepare Spectra-2 sessions or direct streams and mint single-use Orukeet streaming tokens for realtime clients
- List public models and supported tasks through `/v1/models` and read reference pricing through `/v1/pricing`

## Use cases

### Agent call review through Jentic

A support-quality agent reviews recorded calls by sending each file to the oruk `/v1/audio/analysis` operation through Jentic. It gets the transcript plus emotion and style labels and segments in one response, flags calls where frustration appears, and writes a summary. Your own Jentic One instance injects the oruk API key, so the agent never handles it.

Example prompt: POST `/v1/audio/analysis` with file 'call-2026-11-10.mp3' and model 'oruk-resonance', then list the segments labelled with negative emotion alongside their text

### Spoken English proficiency scoring

Language-learning products grade a learner's spoken answer without a human examiner. The `/v1/audio/proficiency` operation returns cefr_score on a 0 to 5 scale, fluency_score on a 0 to 10 scale, and 0 to 1 pronunciation scores per word, and its top-level check tells the caller whether the grade is usable; insufficient audio is not billed.

Example prompt: POST `/v1/audio/proficiency` with the learner's 'answer-q3.wav' file, then report cefr_score, fluency_score, and the three lowest-scoring words if the check marks the result usable

### Synthetic voice screening

Teams handling voice submissions or voice-based verification need to know whether a recording was produced by a speech generator. The `/v1/audio/synthetic-speech` operation runs OrukZero on an uploaded file and answers human or AI, and `/v1/models/orukzero/access` confirms the organization's paid-plan access first.

Example prompt: GET `/v1/models/orukzero/access` to confirm access, then POST `/v1/audio/synthetic-speech` with file 'voice-note.m4a' and report whether it is human or AI speech

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/v1/audio/transcriptions` | Transcribe an audio file |
| POST | `/v1/audio/analysis` | Transcript, emotion, style, and segments in one call |
| POST | `/v1/audio/emotions` | Classify multilabel emotion |
| POST | `/v1/audio/proficiency` | Score speaking proficiency |
| POST | `/v1/audio/synthetic-speech` | Detect human or AI speech |
| GET | `/v1/models` | List models and supported tasks |

## Key resources

- **Audio analysis** — Transcription, emotion, style, affect, combined analysis, and proficiency scoring on uploaded files
- **Resonance-2** — Emotion and delivery classification with access requests and a health check
- **Streaming setup** — Spectra-2 session and direct stream preparation and single-use Orukeet client tokens
- **Models and pricing** — Public model list with supported tasks and reference cost metadata

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 59 / 100
- **Maturity:** Foundational
- **Dimensions:**
  - Foundational Compliance: 85 / 100
  - Developer Experience & Jentic Compatibility: 63 / 100
  - AI-Readiness & Agent Experience: 38 / 100
  - Agent Usability: 94 / 100
  - Security: 60 / 100
  - AI Discoverability: 57 / 100
- **View full report:** https://jentic.com/apis/oruk.ai/oruk/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring oruk by hand means bearer auth, multipart file uploads with the right model ID, and separate token and session steps for streaming. Through Jentic you install once, import the oruk Speech API from the API Directory, store the API key once, and your agent calls it.
- **Permission scoping:** oruk's audio operations take the file and model in the request body and carry no resource ids in the path, so rules bound which operations your agent may call, such as transcription or emotion classification, not which file. You choose the set, so access requests and streaming token minting are not included unless you add them.
- **Credential handling:** Your oruk API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'transcribe an audio file' or 'detect AI-generated speech', and Jentic returns the matching oruk operation with its input schema so the agent sends the right file field and model.

## Related APIs

- **Deepgram API** — Speech-to-text with multilingual models and streaming
- **AssemblyAI API** — Transcription with speech understanding features
- **Hume AI API** — Expression and emotion measurement from voice and other media
- **ElevenLabs API** — Text-to-speech and voice generation

## FAQ

### What authentication does the oruk Speech API use?

Per its OpenAPI spec the oruk Speech API uses HTTP bearer tokens: the bearerAuth scheme carries your oruk API key on the analysis, streaming setup, and OrukZero operations, and the Resonance-2 classify and access operations declare a separate HTTPBearer scheme. The pricing, liveness, readiness, and Resonance-2 health checks are declared open. Through Jentic the key is stored encrypted by your own Jentic One instance and injected at call time.

### Which audio formats and sizes does the oruk Speech API accept?

The file upload operations accept WAV, FLAC, MP3, M4A, OGG, or WebM, with a maximum of 30 MB and 60 minutes per file. Requests are sent as multipart/form-data with a file field and an optional model, which defaults to oruk-resonance.

### Can I get emotion labels without a transcript?

Yes. POST `/v1/audio/emotions` with oruk-resonance runs only the encoder and affect head, so the transcription decoder is never invoked and the response contains no transcript text. One minute of audio still uses one plan minute, the same as the combined analysis.

### How much does the oruk Speech API cost?

The spec states that Orukeet is included in every subscription at $0.00045 per audio minute, with optional tasks at their published rates, and that only excess usage beyond the monthly allowance is billed. GET `/v1/pricing` returns the current reference cost metadata without authentication.

### How do I transcribe and analyse a recording through Jentic?

Install Jentic One, add the oruk Speech API from the Jentic API Directory, and store your oruk API key once. Your agent searches for 'analyse emotion in an audio file', gets the createSpeechAnalysis operation with its input schema, and posts the file to `/v1/audio/analysis.` To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Is there an oruk Speech MCP server?

You don't need an MCP server to give your agent the oruk Speech API. Jentic connects it directly from the API Directory: import it, store your credential once, and your agent calls it, finding operations on demand rather than loading extra tool definitions.

### Can I limit what my agent is allowed to do with the oruk Speech API?

Yes. Write a rule that allows only the transcription and emotion operations, and your agent can process audio files but cannot request Resonance-2 access or mint streaming client tokens. Your own Jentic One instance logs the calls it makes.
