API reference
Overview

API overview

The API is REST over HTTPS with JSON request and response bodies. There is one version, v1, and it is part of the path.

https://videotranscode.cloud/api/v1

Authentication

Send your API key as a bearer token on every request.

Authorization: Bearer spk_your_key_here
Content-Type: application/json

GET /presets is the only endpoint where the key is optional. Everything else returns 401 without one. See Authentication.

Endpoints

MethodPathPurpose
POST/jobsCreate an encoding job
GET/jobsList your jobs, newest first
GET/jobs/{id}Read one job, with a signed output link
DELETE/jobs/{id}Cancel a queued or processing job
GET/jobs/{id}/download-urlSign a fresh download link
POST/edlCreate a timeline editing job
PUT/edlValidate a timeline without running it
GET/presetsList presets, marked available or locked

Full detail is in Jobs, Presets and EDL.

Conventions

Identifiers. Job identifiers are UUIDs, generated by the service. Do not construct them.

Timestamps. Every timestamp is ISO 8601 in UTC with milliseconds, for example 2026-09-10T14:12:47.118Z.

Unknown fields in requests are ignored rather than rejected. Sending a field the endpoint does not define has no effect, so check the spelling of optional fields against this reference.

Absent values are returned as null, not omitted, for fields the response always carries. Optional link fields are omitted when they do not apply.

Relative links. The links object on a job holds paths relative to the host, not absolute URLs. Prefix them with https://videotranscode.cloud.

Status codes

CodeMeaning
200Request succeeded
201Job created
400Malformed JSON, failed validation, or an operation the job's state does not allow
401Missing, malformed, unknown or revoked API key
403The preset exists but your plan does not include it
404No such job, or it belongs to another account
410The output existed but is no longer retrievable
429Monthly job quota exhausted
500Unexpected server error, carrying a requestId

Every error body and what to do about it is in Errors.

Rate limiting

There is no per-second or per-minute request rate limit. The limit that exists is the monthly job quota on your plan, enforced when a job is created and reported as 429. See Plans and limits.

Concurrency

Jobs are processed by a pool of workers, two at a time across the service. Creating jobs faster than they can be encoded is safe: they queue, and estimatedProcessingTime on the creation response describes encoding time for that preset, not queue wait.