Public API
Developer documentation and request examples.
Base URL
Use the base URL for all API requests.
https://polyglotvoice.ru/api/v1
Authorization
All requests require an API key in the Authorization header.
Authorization: Bearer sk_...
The key is valid for 30 days and works only for transcriptions/*.
How to get an API key
- Sign in to your account.
- Open Profile → “API keys”.
- Create a key and save it (shown once).
- Use the key in requests.
Endpoints
Core endpoints for working with transcriptions.
POST /api/v1/transcriptions/uploadUpload a file for transcription.
POST /api/v1/transcriptions/from-urlTranscribe from a media URL.
POST /api/v1/transcriptions/validate-urlValidate a media URL before processing.
GET /api/v1/transcriptionsList transcription tasks.
GET /api/v1/transcriptions/{task_id}Task details.
GET /api/v1/transcriptions/{task_id}/resultTranscription result.
GET /api/v1/transcriptions/{task_id}/downloads/{kind}Download result file (srt/txt/json etc.).
GET /api/v1/transcriptions/{task_id}/sourceStream the source media (Range).
POST /api/v1/transcriptions/convert-audioConvert audio and download the result.
Request examples
Basic examples to get started.
curl
curl -X POST "https://polyglotvoice.ru/api/v1/transcriptions/upload" \ -H "Authorization: Bearer sk_..." \ -F "file=@audio.mp3"
Python
import requests
url = "https://polyglotvoice.ru/api/v1/transcriptions/upload"
headers = {"Authorization": "Bearer sk_..."}
files = {"file": open("audio.mp3", "rb")}
response = requests.post(url, headers=headers, files=files)
print(response.json())JavaScript
const formData = new FormData();
formData.append("file", file);
fetch("https://polyglotvoice.ru/api/v1/transcriptions/upload", {
method: "POST",
headers: { Authorization: "Bearer sk_..." },
body: formData
})
.then((res) => res.json())
.then(console.log);File formats
Popular audio and video formats are supported.
For example: mp3, wav, m4a, ogg, mp4, webm.
Responses and errors
Example of task creation response and auth error.
{ "task_id": "9b9c1b9a-....", "status": "queued" }{ "detail": "Invalid token." }Limits
These values are enforced by the API. Short-term (burst) limits apply per signed-in user — the same account whether you use a session JWT or an sk_ key. Daily and monthly counters count every request made with any of your sk_ keys (UTC calendar day and month). When a limit is exceeded, the API responds with HTTP 429.
The live JSON field rate_limits is returned by:
GET https://polyglotvoice.ru/api/v1/developer/documentationLoading current limits…
In addition: each plan limits max audio length per file, max upload size, concurrent tasks, and (on the website) daily uploads. See your subscription on the dashboard.