API Reference
Programmatic access to XMOX transcription and AI analysis.
Overview
The XMOX REST API lets you upload audio files, poll for transcription status, retrieve full transcripts, ask natural-language questions about audio content, and delete jobs — all programmatically.
API access requires an active Enterprise subscription. Create and manage API keys from your API Keys page.
Base URL
Authentication
Pass your API key in the X-API-Key header on every request. Keys are shown only once when created — store them in a secrets manager or environment variable.
Endpoints
Upload an audio or video file to start a transcription job. Returns a job_id immediately; poll the status endpoint to check when it finishes.
| Header | Value | |
|---|---|---|
| X-API-Key | string | requiredrequired |
| Content-Type | multipart/form-data | requiredrequired |
| Field | Type | Description |
|---|---|---|
| file | binary | Audio or video file (MP3, WAV, M4A, FLAC, OGG, OPUS, MP4, MOV, WEBM, MKV). Max 500 MB. required |
- 202Job created; use
job_idto poll for completion. - 400Missing or empty file.
- 402Monthly quota reached.
- 401Invalid API key.
- 403Not on Enterprise plan.
Retrieve the current status and metadata of a transcription job.
| Parameter | Type | Description |
|---|---|---|
| job_id | integer | ID returned by POST /process. required |
- 200Job found. Check
job.status: processing — transcription in progress, completed — transcript ready, failed — see error field. - 404Job not found or belongs to a different account.
Retrieve the full transcript text of a completed job.
| Parameter | Type | Description |
|---|---|---|
| job_id | integer | ID of a completed job. required |
- 200Transcript text returned in
transcriptfield. - 400Job is not yet completed or has no transcript.
- 404Job not found.
Ask a natural-language question about a completed job. The AI reads the transcript and returns a concise answer.
| Field | Type | Description |
|---|---|---|
| question | string | Natural-language question about the audio content. required |
- 200AI answer returned in
answerfield. - 400Missing
questionfield, or job not yet completed. - 404Job not found.
Permanently delete a job and its associated audio file and transcript.
| Parameter | Type | Description |
|---|---|---|
| job_id | integer | ID of the job to delete. required |
- 200Job and all associated data deleted.
- 404Job not found.
Error Codes
All error responses share the same shape. The HTTP status code indicates the class of error; the error field contains a human-readable message.
| HTTP Status | Meaning |
|---|---|
| 400 | Bad request — missing required field or invalid value. |
| 401 | Unauthorized — API key missing, invalid, or revoked. |
| 402 | Quota error (402): returned when you have reached the monthly file or minute limit for your plan. |
| 403 | Forbidden — account does not have an active Enterprise plan. |
| 404 | Not found — the job does not exist or belongs to a different account. |
| 500 | Server error — unexpected failure; retry with exponential back-off. |
Claude Code & MCP Integration
Enterprise subscribers can connect Claude Code agents directly to XMOX using the official xmox-mcp npm package — an MCP (Model Context Protocol) server that exposes all five API endpoints as native Claude tools.
Install the package once, add your API key to the config, and Claude agents can process_audio, get_job_status, get_transcript, ask_question, and delete_job without writing any code.
| Tool | API endpoint |
|---|---|
process_audio | POST /api/external/v1/process |
get_job_status | GET /api/external/v1/jobs/{job_id} |
get_transcript | GET /api/external/v1/jobs/{job_id}/transcript |
ask_question | POST /api/external/v1/jobs/{job_id}/question |
delete_job | DELETE /api/external/v1/jobs/{job_id} |
Direct REST API (Custom Agents)
If your agent runs inside an MCP-compatible host — including Claude, Cursor, OpenAI Agents SDK, or Gemini — use the xmox-mcp package above. If you are building a custom agent without MCP support, or simply prefer direct HTTP calls, use the REST API below. The API is provider-agnostic: pass your key in the X-API-Key header and use standard HTTP.