Complete developer guide and best practices to help you get started quickly.
Core concepts
An overview of how the API is shaped: two endpoint types (public lookup vs. key-protected business endpoints), the shared response structure, and the recurring limits you will encounter.
Two endpoint types
Path prefix indicates the auth type, so the URL alone tells you whether a key is required.
Public endpoints (no prefix)
No key required. Use these to look up supported languages, available models, and similar metadata before integrating. Safe to call from the browser — no sensitive data is exposed.
- GET /translations/languages — supported languages for the translation module.
- GET /translations/models — available translation models.
- GET /audio/languages — supported languages for the speech recognition module.
- GET /audio/models — available speech recognition models.
Key-protected endpoints (/api/v1)
Require X-API-Key in the HTTP header. These cover the core business operations: text translation, speech recognition, dictionary management, and so on.
- POST /api/v1/translations/text — translate text, with optional streaming.
- POST /api/v1/audio/transcriptions — speech recognition, accepting either Base64 or file upload.
- /api/v1/dictionaries/* — dictionary management (vocabulary, forced replacement, batch operations).
- GET /api/v1/usage — current-period account- and key-level usage percentages; consumes no quota.
How to get an API key
Shared response shape
On success the result fields are returned directly (no data wrapper); translation and speech recognition responses also include usage (the current-period quota usage percentage, quota_percent.used). On failure it carries an error object with code, message, details, and request_id. Every error response includes a request_id, which lets us pinpoint the corresponding server log when you report an issue.
Recurring limits you will see
- Text translation accepts up to 5000 characters per call; exceeding the limit returns 400 validation_error.
- Speech recognition limits depend on the upload path: the JSON (Base64) path caps raw audio at 1 MB (413 audio_too_long beyond that); the multipart file upload path caps the file at 15 MB (413 file_too_large beyond that).
- Dictionary batch operations accept up to 250 entries per call.

