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 |
Warning: Undefined array key "status_codes" in /var/www/html/docs/index.php on line 833
Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/docs/index.php on line 833
- 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 |
Warning: Undefined array key "status_codes" in /var/www/html/docs/index.php on line 880
Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/docs/index.php on line 880
- 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 |
Warning: Undefined array key "status_codes" in /var/www/html/docs/index.php on line 919
Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/docs/index.php on line 919
- 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 |
Warning: Undefined array key "status_codes" in /var/www/html/docs/index.php on line 961
Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/docs/index.php on line 961
- 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 |
Warning: Undefined array key "status_codes" in /var/www/html/docs/index.php on line 1000
Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/docs/index.php on line 1000
- 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. |