API Conventions
The conventions on this page apply to every endpoint underhttps://api-integration.ollang.com. Read this once and the
individual API reference pages should feel predictable.
Base URL
level: 0 flow against the same base URL to
experiment safely.
Authentication
The REST API authenticates with a single header:| Header | Value |
|---|---|
X-Api-Key | Your API key from the Olabs Dashboard |
- The
/healthendpoint does not require a key — it’s the recommended connectivity sanity check. See Health Check. - Header name is case-sensitive on some HTTP clients. Use
X-Api-Key, notAuthorizationorX-API-KEY. - API keys are account-scoped and can read every Folder, Project, and Order on that account.
Content Types
| Operation | Content type |
|---|---|
| File uploads | multipart/form-data |
| Everything else (JSON in / JSON out) | application/json |
Request and Response Format
JSON responses generally fall into three shapes: Single resource:pageis 1-indexed.takeis the page size that was applied.itemCountis the total number of items across all pages.pageCountis the total number of pages.- Iterate until
hasNextPageisfalse.
targetLanguageConfigs entry:
Pagination
List endpoints accept a common set of pagination parameters. Two query-string styles are used depending on the endpoint:| Parameter | Type | Description |
|---|---|---|
page | integer | 1-indexed page number. Defaults to 1. |
take | integer | Page size. Defaults to 10, max 50. |
search | string | Free-text search across name/description. |
orderBy | string | Sort field (e.g. createdAt, name). |
orderDirection | string | asc or desc. Defaults to desc. |
- Flat style (
page=,take=, …) is used on Retrieve All Folders and Retrieve All Projects. - Nested
pageOptions[...]style is used on Get Orders (e.g.pageOptions[page]=1,pageOptions[take]=20).
Filters
List endpoints also accept domain-specificfilter parameters. Common
filters across endpoints:
| Parameter | Type | Description |
|---|---|---|
filter[type] | string | Restrict by orderType (cc, subtitle, document, aiDubbing, studioDubbing). |
filter[name] | string | Substring match on entity name. |
filter[createdAtRange] | object | { "from": "ISO-8601", "to": "ISO-8601" }. |
Error Format
All error responses share this shape:| Field | Description |
|---|---|
error | Short, human-readable summary. |
message | Detailed explanation suitable for surfacing to the end user. |
code | Stable machine-readable identifier safe to switch on in client code. |
Standard Status Codes
| Status | Meaning | Retryable? |
|---|---|---|
200 OK / 201 Created | Success | — |
400 Bad Request | Invalid parameters | No — fix the request |
401 Unauthorized | Missing or invalid API key | No — check X-Api-Key |
403 Forbidden | Authenticated but not permitted | No |
404 Not Found | Resource doesn’t exist or isn’t visible to your key | No |
408 Request Timeout | Slow request | Yes, with backoff |
413 Payload Too Large | File exceeds size limit | No — split or use Direct Upload |
429 Too Many Requests | Rate-limited | Yes, with backoff — slow down |
5xx | Server-side error | Yes, with backoff |
Webhooks / Callbacks
Endpoints that kick off long-running work (createOrder, rerunOrder)
accept an optional callbackUrl. Ollang POSTs a JSON payload to that
URL when the order completes:
- 10-second response timeout.
- IPv6 destinations and internal hostnames are blocked at the SSRF guard.
- Treat handlers as idempotent. Use
orderIdas the dedup key. - Re-confirm via Get Order by ID before acting on the body for irreversible operations.
IDs
- All Ollang IDs are opaque strings — do not assume any particular format (length, prefix, or characters). Treat them as case-sensitive identifiers.
- IDs are stable for the lifetime of the resource.
- Each
targetLanguageConfigsentry produces a distinctorderId.
Timestamps
All timestamps are ISO-8601 UTC unless otherwise noted (e.g.2026-05-12T10:00:00Z).
Where a numeric epoch is returned (/health’s time), it is
milliseconds since the Unix epoch.
Language Codes
Mostly ISO 639-1 two-letter codes (en, fr, es), with regional and
script variants where needed (pt-PT, es-MX, zh-Hant, fr-CA).
See Supported Languages
for the canonical list — the API response is authoritative if a code
isn’t listed there.
File Size Limits
| Resource | Limit |
|---|---|
| Video uploads (Direct Upload) | 30 GB |
| Audio / Document uploads | 100 MB |
| In-page API playground | 5 MB |
| Embedded callback payload | < 1 MB (URLs reference downloads) |
Rate Limits
Ollang enforces per-account rate limits. If you receive429, back off
exponentially. For high-volume use cases, contact Ollang to discuss
limits before launch.
Versioning
The Integration API is non-versioned at the URL level. We commit to:- Additive changes (new optional fields, new endpoints) ship without notice.
- Breaking changes (parameter removal, response shape changes) are announced in the Changelog in advance.