Show examples in:
Javascript HTTP
Endpoint info
Available examples
Content Management API > Upload track

Automatically generate a subtitles track

Warning: Experimental API

Please note that this API method is marked as unstable and should be avoided in production environments. Changes may occur at any time without warning, potentially impacting your scripts. We recommend contacting our Support Team to explore alternative approaches that are safer and more reliable!

Body parameters

type string Required

Must be exactly "upload_track".

attributes.language_code string Required

A valid BCP 47 specification compliant language code

Example: "it-IT"
attributes.name string Optional

The human-readable name of the track

Example: "Italiano"

Returns

Returns a Job ID. You can then poll for the completion of the job that will eventually return a resource object of type upload_track

Examples

The response contains the ID of the asynchronous job that started:

POST https://site-api.datocms.com/uploads/:upload_id/tracks/generate-subtitles HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Accept: application/json
X-Api-Version: 3
Content-Type: application/vnd.api+json
{
"data": {
"type": "upload_track",
"attributes": {
"language_code": "it-IT"
}
}
}
Terminal window
curl -g 'https://site-api.datocms.com/uploads/:upload_id/tracks/generate-subtitles' \
-X POST \
-H "Authorization: Bearer YOUR-API-TOKEN" \
-H "Accept: application/json" \
-H "X-Api-Version: 3" \
-H "Content-Type: application/vnd.api+json" \
--data-binary '{"data":{"type":"upload_track","attributes":{"language_code":"it-IT"}}}'
await fetch(
"https://site-api.datocms.com/uploads/:upload_id/tracks/generate-subtitles",
{
method: "POST",
headers: {
Authorization: "Bearer YOUR-API-TOKEN",
Accept: "application/json",
"X-Api-Version": "3",
"Content-Type": "application/vnd.api+json",
},
body: JSON.stringify({
data: { type: "upload_track", attributes: { language_code: "it-IT" } },
}),
},
);
HTTP/1.1 202 Accepted
Content-Type: application/json
Cache-Control: cache-control: max-age=0, private, must-revalidate
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
{
"data": {
"type": "job",
"id": "4235"
}
}

To get the asynchronous job result, poll the job result endpoint. While the task is in progress, the endpoint returns a 404 status code. When the job completes, the status changes to 200 OK:

GET https://site-api.datocms.com/job-results/:job_result_id HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Accept: application/json
X-Api-Version: 3
Terminal window
curl -g 'https://site-api.datocms.com/job-results/:job_result_id' \
\
-H "Authorization: Bearer YOUR-API-TOKEN" \
-H "Accept: application/json" \
-H "X-Api-Version: 3"
await fetch("https://site-api.datocms.com/job-results/:job_result_id", {
headers: {
Authorization: "Bearer YOUR-API-TOKEN",
Accept: "application/json",
"X-Api-Version": "3",
},
});
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: cache-control: max-age=0, private, must-revalidate
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
{
"data": {
"type": "job_result",
"id": "34",
"attributes": {
"status": 200,
"payload": {
"data": {
"type": "upload_track",
"id": "xBe7u01029ipxBLQhYzZCJ1cke01zCkuUsgnYtH0017nNzbpv2YcsoMDmw",
"attributes": {
"type": "subtitles",
"name": "Italiano",
"language_code": "it-IT",
"closed_captions": false,
"status": "ready",
"error": null
},
"relationships": {
"upload": {
"data": {
"type": "upload",
"id": "q0VNpiNQSkG6z0lif_O1zg"
}
}
}
}
}
}
}
}