curl -X POST "https://api-integration.ollang.com/integration/orders/create" \
-H "X-Api-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"orderType": "cc",
"level": 1,
"projectId": "60b8d6f1e1b9b1d8c6c0d8e1",
"targetLanguageConfigs": [
{
"language": "fr",
"isRush": false
},
{
"language": "es",
"isRush": true
}
],
"callbackUrl": "https://your-domain.com/webhooks/order-completed",
"autoQc": true,
"selectedMemories": ["60b8d6f1e1b9b1d8c6c0d8e1"]
}'
const response = await fetch(
"https://api-integration.ollang.com/integration/orders/create",
{
method: "POST",
headers: {
"X-Api-Key": "<your-api-key>",
"Content-Type": "application/json",
},
body: JSON.stringify({
orderType: "cc",
level: 1,
projectId: "60b8d6f1e1b9b1d8c6c0d8e1",
targetLanguageConfigs: [
{
language: "fr",
isRush: false,
},
{
language: "es",
isRush: true,
},
],
callbackUrl: "https://your-domain.com/webhooks/order-completed",
autoQc: true,
selectedMemories: ["60b8d6f1e1b9b1d8c6c0d8e1"],
}),
}
);
import requests
import json
data = {
"orderType": "cc",
"level": 1,
"projectId": "60b8d6f1e1b9b1d8c6c0d8e1",
"targetLanguageConfigs": [
{
"language": "fr",
"isRush": False
},
{
"language": "es",
"isRush": True
}
],
"callbackUrl": "https://your-domain.com/webhooks/order-completed",
"autoQc": True,
"selectedMemories": ["60b8d6f1e1b9b1d8c6c0d8e1"]
}
headers = {
'X-Api-Key': '<your-api-key>',
'Content-Type': 'application/json'
}
response = requests.post(
'https://api-integration.ollang.com/integration/orders/create',
headers=headers,
data=json.dumps(data)
)
$data = array(
'orderType' => 'cc',
'level' => 1,
'projectId' => '60b8d6f1e1b9b1d8c6c0d8e1',
'targetLanguageConfigs' => array(
array(
'language' => 'fr',
'isRush' => false
),
array(
'language' => 'es',
'isRush' => true
)
),
'callbackUrl' => 'https://your-domain.com/webhooks/order-completed',
'autoQc' => true,
'selectedMemories' => array('60b8d6f1e1b9b1d8c6c0d8e1')
);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-integration.ollang.com/integration/orders/create',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => array(
'X-Api-Key: <your-api-key>',
'Content-Type: application/json'
),
CURLOPT_POSTFIELDS => json_encode($data),
));
$response = curl_exec($curl);
curl_close($curl);
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
data := map[string]interface{}{
"orderType": "cc",
"level": 1,
"projectId": "60b8d6f1e1b9b1d8c6c0d8e1",
"targetLanguageConfigs": []map[string]interface{}{
{
"language": "fr",
"isRush": false,
},
{
"language": "es",
"isRush": true,
},
},
"callbackUrl": "https://your-domain.com/webhooks/order-completed",
"autoQc": true,
"selectedMemories": []string{"60b8d6f1e1b9b1d8c6c0d8e1"},
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api-integration.ollang.com/integration/orders/create", bytes.NewBuffer(jsonData))
req.Header.Set("X-Api-Key", "<your-api-key>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
}
import org.json.JSONArray;
import org.json.JSONObject;
JSONObject targetLang1 = new JSONObject();
targetLang1.put("language", "fr");
targetLang1.put("isRush", false);
JSONObject targetLang2 = new JSONObject();
targetLang2.put("language", "es");
targetLang2.put("isRush", true);
JSONArray targetLanguageConfigs = new JSONArray();
targetLanguageConfigs.put(targetLang1);
targetLanguageConfigs.put(targetLang2);
JSONObject requestBody = new JSONObject();
requestBody.put("orderType", "cc");
requestBody.put("level", 1);
requestBody.put("projectId", "60b8d6f1e1b9b1d8c6c0d8e1");
requestBody.put("targetLanguageConfigs", targetLanguageConfigs);
requestBody.put("callbackUrl", "https://your-domain.com/webhooks/order-completed");
requestBody.put("autoQc", true);
HttpResponse<String> response = Unirest.post("https://api-integration.ollang.com/integration/orders/create")
.header("X-Api-Key", "<your-api-key>")
.header("Content-Type", "application/json")
.body(requestBody.toString())
.asString();
[
{
"orderId": "507f1f77bcf86cd799439015"
},
{
"orderId": "507f1f77bcf86cd799439016"
}
]
{
"error": "Invalid order type",
"message": "orderType must be one of: cc, subtitle, document, aiDubbing, studioDubbing",
"code": "INVALID_ORDER_TYPE"
}
{
"error": "Project not found",
"message": "No project found with the provided projectId",
"code": "PROJECT_NOT_FOUND"
}
{
"error": "Invalid target language",
"message": "At least one targetLanguageConfig is required",
"code": "MISSING_TARGET_LANGUAGES"
}
{
"error": "Unauthorized",
"message": "Invalid or missing API key",
"code": "UNAUTHORIZED"
}
Ollang API Reference
Create Order
Create a new translation order for your uploaded video projects
POST
/
integration
/
orders
/
create
curl -X POST "https://api-integration.ollang.com/integration/orders/create" \
-H "X-Api-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"orderType": "cc",
"level": 1,
"projectId": "60b8d6f1e1b9b1d8c6c0d8e1",
"targetLanguageConfigs": [
{
"language": "fr",
"isRush": false
},
{
"language": "es",
"isRush": true
}
],
"callbackUrl": "https://your-domain.com/webhooks/order-completed",
"autoQc": true,
"selectedMemories": ["60b8d6f1e1b9b1d8c6c0d8e1"]
}'
const response = await fetch(
"https://api-integration.ollang.com/integration/orders/create",
{
method: "POST",
headers: {
"X-Api-Key": "<your-api-key>",
"Content-Type": "application/json",
},
body: JSON.stringify({
orderType: "cc",
level: 1,
projectId: "60b8d6f1e1b9b1d8c6c0d8e1",
targetLanguageConfigs: [
{
language: "fr",
isRush: false,
},
{
language: "es",
isRush: true,
},
],
callbackUrl: "https://your-domain.com/webhooks/order-completed",
autoQc: true,
selectedMemories: ["60b8d6f1e1b9b1d8c6c0d8e1"],
}),
}
);
import requests
import json
data = {
"orderType": "cc",
"level": 1,
"projectId": "60b8d6f1e1b9b1d8c6c0d8e1",
"targetLanguageConfigs": [
{
"language": "fr",
"isRush": False
},
{
"language": "es",
"isRush": True
}
],
"callbackUrl": "https://your-domain.com/webhooks/order-completed",
"autoQc": True,
"selectedMemories": ["60b8d6f1e1b9b1d8c6c0d8e1"]
}
headers = {
'X-Api-Key': '<your-api-key>',
'Content-Type': 'application/json'
}
response = requests.post(
'https://api-integration.ollang.com/integration/orders/create',
headers=headers,
data=json.dumps(data)
)
$data = array(
'orderType' => 'cc',
'level' => 1,
'projectId' => '60b8d6f1e1b9b1d8c6c0d8e1',
'targetLanguageConfigs' => array(
array(
'language' => 'fr',
'isRush' => false
),
array(
'language' => 'es',
'isRush' => true
)
),
'callbackUrl' => 'https://your-domain.com/webhooks/order-completed',
'autoQc' => true,
'selectedMemories' => array('60b8d6f1e1b9b1d8c6c0d8e1')
);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-integration.ollang.com/integration/orders/create',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => array(
'X-Api-Key: <your-api-key>',
'Content-Type: application/json'
),
CURLOPT_POSTFIELDS => json_encode($data),
));
$response = curl_exec($curl);
curl_close($curl);
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
data := map[string]interface{}{
"orderType": "cc",
"level": 1,
"projectId": "60b8d6f1e1b9b1d8c6c0d8e1",
"targetLanguageConfigs": []map[string]interface{}{
{
"language": "fr",
"isRush": false,
},
{
"language": "es",
"isRush": true,
},
},
"callbackUrl": "https://your-domain.com/webhooks/order-completed",
"autoQc": true,
"selectedMemories": []string{"60b8d6f1e1b9b1d8c6c0d8e1"},
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api-integration.ollang.com/integration/orders/create", bytes.NewBuffer(jsonData))
req.Header.Set("X-Api-Key", "<your-api-key>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
}
import org.json.JSONArray;
import org.json.JSONObject;
JSONObject targetLang1 = new JSONObject();
targetLang1.put("language", "fr");
targetLang1.put("isRush", false);
JSONObject targetLang2 = new JSONObject();
targetLang2.put("language", "es");
targetLang2.put("isRush", true);
JSONArray targetLanguageConfigs = new JSONArray();
targetLanguageConfigs.put(targetLang1);
targetLanguageConfigs.put(targetLang2);
JSONObject requestBody = new JSONObject();
requestBody.put("orderType", "cc");
requestBody.put("level", 1);
requestBody.put("projectId", "60b8d6f1e1b9b1d8c6c0d8e1");
requestBody.put("targetLanguageConfigs", targetLanguageConfigs);
requestBody.put("callbackUrl", "https://your-domain.com/webhooks/order-completed");
requestBody.put("autoQc", true);
HttpResponse<String> response = Unirest.post("https://api-integration.ollang.com/integration/orders/create")
.header("X-Api-Key", "<your-api-key>")
.header("Content-Type", "application/json")
.body(requestBody.toString())
.asString();
[
{
"orderId": "507f1f77bcf86cd799439015"
},
{
"orderId": "507f1f77bcf86cd799439016"
}
]
{
"error": "Invalid order type",
"message": "orderType must be one of: cc, subtitle, document, aiDubbing, studioDubbing",
"code": "INVALID_ORDER_TYPE"
}
{
"error": "Project not found",
"message": "No project found with the provided projectId",
"code": "PROJECT_NOT_FOUND"
}
{
"error": "Invalid target language",
"message": "At least one targetLanguageConfig is required",
"code": "MISSING_TARGET_LANGUAGES"
}
{
"error": "Unauthorized",
"message": "Invalid or missing API key",
"code": "UNAUTHORIZED"
}
Create a new translation order for your uploaded video projects. This endpoint allows you to request specific translation services such as closed captions, subtitles, dubbing, and more.
curl -X POST "https://api-integration.ollang.com/integration/orders/create" \
-H "X-Api-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"orderType": "cc",
"level": 1,
"projectId": "60b8d6f1e1b9b1d8c6c0d8e1",
"targetLanguageConfigs": [
{
"language": "fr",
"isRush": false
},
{
"language": "es",
"isRush": true
}
],
"callbackUrl": "https://your-domain.com/webhooks/order-completed",
"autoQc": true,
"selectedMemories": ["60b8d6f1e1b9b1d8c6c0d8e1"]
}'
const response = await fetch(
"https://api-integration.ollang.com/integration/orders/create",
{
method: "POST",
headers: {
"X-Api-Key": "<your-api-key>",
"Content-Type": "application/json",
},
body: JSON.stringify({
orderType: "cc",
level: 1,
projectId: "60b8d6f1e1b9b1d8c6c0d8e1",
targetLanguageConfigs: [
{
language: "fr",
isRush: false,
},
{
language: "es",
isRush: true,
},
],
callbackUrl: "https://your-domain.com/webhooks/order-completed",
autoQc: true,
selectedMemories: ["60b8d6f1e1b9b1d8c6c0d8e1"],
}),
}
);
import requests
import json
data = {
"orderType": "cc",
"level": 1,
"projectId": "60b8d6f1e1b9b1d8c6c0d8e1",
"targetLanguageConfigs": [
{
"language": "fr",
"isRush": False
},
{
"language": "es",
"isRush": True
}
],
"callbackUrl": "https://your-domain.com/webhooks/order-completed",
"autoQc": True,
"selectedMemories": ["60b8d6f1e1b9b1d8c6c0d8e1"]
}
headers = {
'X-Api-Key': '<your-api-key>',
'Content-Type': 'application/json'
}
response = requests.post(
'https://api-integration.ollang.com/integration/orders/create',
headers=headers,
data=json.dumps(data)
)
$data = array(
'orderType' => 'cc',
'level' => 1,
'projectId' => '60b8d6f1e1b9b1d8c6c0d8e1',
'targetLanguageConfigs' => array(
array(
'language' => 'fr',
'isRush' => false
),
array(
'language' => 'es',
'isRush' => true
)
),
'callbackUrl' => 'https://your-domain.com/webhooks/order-completed',
'autoQc' => true,
'selectedMemories' => array('60b8d6f1e1b9b1d8c6c0d8e1')
);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-integration.ollang.com/integration/orders/create',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => array(
'X-Api-Key: <your-api-key>',
'Content-Type: application/json'
),
CURLOPT_POSTFIELDS => json_encode($data),
));
$response = curl_exec($curl);
curl_close($curl);
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
data := map[string]interface{}{
"orderType": "cc",
"level": 1,
"projectId": "60b8d6f1e1b9b1d8c6c0d8e1",
"targetLanguageConfigs": []map[string]interface{}{
{
"language": "fr",
"isRush": false,
},
{
"language": "es",
"isRush": true,
},
},
"callbackUrl": "https://your-domain.com/webhooks/order-completed",
"autoQc": true,
"selectedMemories": []string{"60b8d6f1e1b9b1d8c6c0d8e1"},
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api-integration.ollang.com/integration/orders/create", bytes.NewBuffer(jsonData))
req.Header.Set("X-Api-Key", "<your-api-key>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
}
import org.json.JSONArray;
import org.json.JSONObject;
JSONObject targetLang1 = new JSONObject();
targetLang1.put("language", "fr");
targetLang1.put("isRush", false);
JSONObject targetLang2 = new JSONObject();
targetLang2.put("language", "es");
targetLang2.put("isRush", true);
JSONArray targetLanguageConfigs = new JSONArray();
targetLanguageConfigs.put(targetLang1);
targetLanguageConfigs.put(targetLang2);
JSONObject requestBody = new JSONObject();
requestBody.put("orderType", "cc");
requestBody.put("level", 1);
requestBody.put("projectId", "60b8d6f1e1b9b1d8c6c0d8e1");
requestBody.put("targetLanguageConfigs", targetLanguageConfigs);
requestBody.put("callbackUrl", "https://your-domain.com/webhooks/order-completed");
requestBody.put("autoQc", true);
HttpResponse<String> response = Unirest.post("https://api-integration.ollang.com/integration/orders/create")
.header("X-Api-Key", "<your-api-key>")
.header("Content-Type", "application/json")
.body(requestBody.toString())
.asString();
Authorizations
This endpoint requires API key authentication. Include your API key in the request header:- Header name:
X-Api-Key - Header value: Your API key from the Ollang dashboard
- Format:
X-Api-Key: your-api-key-here
Body Parameters
string
required
Type of the order. Available options: -
cc - Closed captions - subtitle - Subtitles - aiDubbing - AI Dubbing - studioDubbing - Studio-produced dubbing - document - Document translation (including Image to Image when the source is a JPEG, JPG, or PNG from Direct Upload)number
required
Service level for the order. Level 0 means full AI generated and Level 1 is Human Review added version.
string
required
Unique identifier of the project this order belongs to. This should be a project ID from a previous video upload.
array
required
string
Subtype of the order, specific to closed captions or transcription types. Must be one of:
closedCaption or timecodedTranscription.string
Style of dubbing for audio orders. Must be one of:
overdub, lipsync, or audioDescription.string
Optional URL to receive a
POST request when the order completes. Must be a valid URL (http or https). The callback payload includes the completed order’s translated content (documents, subtitle files, etc.) so you can process results immediately without a separate API call. See Order completion callback.boolean
When set to
true, a QC evaluation will automatically run after the AI order completes. Defaults to false. Auto-QC only applies to top-level orders (child orders created as part of a parent order are excluded).string[]
Optional array of translation memory ids to apply to the created orders (maximum 20, no duplicates). Each id must be a memory owned by your account — get ids from List Memories or Create Memory. Stored translation units are matched per target language at translation time. Only document, subtitle/cc, and Adobe AE orders consume memories; other order types ignore this field.
Order completion callback
WhencallbackUrl is provided, Ollang sends a POST request to that URL after the order reaches a completed state. The request uses Content-Type: application/json and has a 10-second timeout. Callback failures do not affect the order itself. Implement idempotent handling and validate payloads on your side; you can always confirm status and outputs with Get Order by ID.
Callback payload
The callbackPOST body includes the completed order’s translated content, matching the shape of the Get Order by ID response:
| Field | Type | Description |
|---|---|---|
orderId | string | The unique identifier of the completed order. |
status | string | Always "completed". |
orderType | string | The order type (e.g., cc, subtitle, document, aiDubbing). |
targetLanguage | string | Target language code (ISO 639-1). |
completedAt | string | Completion timestamp (ISO 8601). |
orderDocs | array | All documents associated with the order — source files, translated subtitles, embedded videos, dubbed audio, translated documents, images, etc. Each object includes id, name, url, type, size, duration, wordCount, sourceLanguage, createdAt, and updatedAt. |
vttUrl | string | Signed URL to download the VTT subtitle file (valid for 7 days). Empty string if not applicable to the order type. |
Example callback payload
{
"orderId": "507f1f77bcf86cd799439015",
"status": "completed",
"orderType": "subtitle",
"targetLanguage": "fr",
"completedAt": "2024-01-16T14:20:00.000Z",
"orderDocs": [
{
"id": "doc_123abc",
"name": "Source Video.mp4",
"url": "https://example.com/videos/source.mp4",
"type": "source_video",
"size": 1073741824,
"duration": 7200,
"wordCount": null,
"sourceLanguage": "en",
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
},
{
"id": "doc_456def",
"name": "French Subtitles.srt",
"url": "https://example.com/subtitles/fr.srt",
"type": "created_subtitle",
"size": 8192,
"duration": null,
"wordCount": 1250,
"sourceLanguage": "fr",
"createdAt": "2024-01-16T14:20:00Z",
"updatedAt": "2024-01-16T14:20:00Z"
}
],
"vttUrl": "https://example.com/subtitles/507f1f77bcf86cd799439015.vtt"
}
Response
The endpoint returns an array of created orders — one pertargetLanguageConfigs entry. Each element is an object with a single orderId field. If you pass three target languages, you get three order IDs back in the same order you supplied them.
array
Array of created orders. Each entry corresponds to one
targetLanguageConfigs item, in the same order.Show Order Object
Show Order Object
string
Unique identifier of the created order. Use this with Get Order by ID, Cancel Order, or any other order-scoped endpoint.
[
{
"orderId": "507f1f77bcf86cd799439015"
},
{
"orderId": "507f1f77bcf86cd799439016"
}
]
{
"error": "Invalid order type",
"message": "orderType must be one of: cc, subtitle, document, aiDubbing, studioDubbing",
"code": "INVALID_ORDER_TYPE"
}
{
"error": "Project not found",
"message": "No project found with the provided projectId",
"code": "PROJECT_NOT_FOUND"
}
{
"error": "Invalid target language",
"message": "At least one targetLanguageConfig is required",
"code": "MISSING_TARGET_LANGUAGES"
}
{
"error": "Unauthorized",
"message": "Invalid or missing API key",
"code": "UNAUTHORIZED"
}
Was this page helpful?