Error Reference¶
All error responses return JSON with a detail field:
HTTP Status Codes¶
| Code | Name | Typical Cause |
|---|---|---|
400 |
Bad Request | Invalid request body; prompt injection detected in input text; no processor available for the uploaded file format; no translatable content found |
401 |
Unauthorized | Missing or invalid X-API-Key header |
404 |
Not Found | Job, glossary, or batch ID does not exist |
409 |
Conflict | Duplicate content — the same text or file hash was already submitted. Response body includes job_id and status of the existing job. Also returned when attempting to retrieve results for a job that is still running. |
410 |
Gone | Original uploaded file has been deleted from the server and cannot be downloaded |
413 |
Payload Too Large | Uploaded file exceeds the 10 MB limit |
415 |
Unsupported Media Type | File MIME type does not match the declared extension |
422 |
Unprocessable Entity | Invalid language combination; too many files or target languages in a batch; file extraction failed; target_lang is a string where a list is required |
429 |
Too Many Requests | Rate limit exceeded (50 requests per minute per IP) |
500 |
Internal Server Error | File injection failed; no processor available for reassembly |
503 |
Service Unavailable | Health check failed — Redis, Supabase, or Anthropic API is unreachable |
409 Conflict — Duplicate Job¶
When submitting content that was already submitted, the 409 response includes the existing job:
{
"detail": "Duplicate content",
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed"
}
You can use the returned job_id to retrieve the existing result directly.
409 Conflict — Job Not Ready¶
When calling GET /v1/jobs/{id}/result or GET /v1/jobs/{id}/download before the job is complete:
Poll GET /v1/jobs/{id} to check status, or use webhooks for event-driven notification.
Rate Limiting¶
429 Too Many Requests is returned when the IP exceeds 50 requests per minute. The limit resets on a rolling 60-second window.
Implement exponential backoff when you receive a 429.