Getting started
Quick start

Quick start

This page takes you from nothing to a finished video. It uses mp4_264_720p, a preset every plan can use.

1. Create an account

Sign up at videotranscode.cloud (opens in a new tab). No card is required. The free plan gives you 10 jobs per month, sources up to 10 minutes long, and 7 presets.

2. Create an API key

In the dashboard, open API keys and click Create API key. The full key is shown once, at creation time. Copy it then; afterwards only the last four characters are visible.

Keep it in an environment variable rather than in source control.

export VT_API_KEY="spk_your_key_here"

3. Create a job

The request needs two fields: a publicly reachable inputUrl and a preset.

curl -X POST https://videotranscode.cloud/api/v1/jobs \
  -H "Authorization: Bearer $VT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "inputUrl": "https://cdn.example.com/master.mov",
    "preset": "mp4_264_720p"
  }'

A successful call returns 201 Created and the job is already queued.

{
  "id": "9d1f5c0a-4e7b-4a61-9b2e-8f1c3d5a7e42",
  "status": "queued",
  "preset": "mp4_264_720p",
  "inputUrl": "https://cdn.example.com/master.mov",
  "webhookUrl": null,
  "createdAt": "2026-09-10T14:08:11.204Z",
  "estimatedProcessingTime": "2-5 minutes",
  "links": {
    "self": "/api/v1/jobs/9d1f5c0a-4e7b-4a61-9b2e-8f1c3d5a7e42",
    "cancel": "/api/v1/jobs/9d1f5c0a-4e7b-4a61-9b2e-8f1c3d5a7e42/cancel"
  },
  "user": {
    "remainingJobs": 9,
    "plan": "Free"
  }
}

Job identifiers are UUIDs. Store id; everything else is derived from it.

4. Wait for it to finish

Read the job until status is no longer queued or processing.

curl https://videotranscode.cloud/api/v1/jobs/9d1f5c0a-4e7b-4a61-9b2e-8f1c3d5a7e42 \
  -H "Authorization: Bearer $VT_API_KEY"
{
  "id": "9d1f5c0a-4e7b-4a61-9b2e-8f1c3d5a7e42",
  "status": "completed",
  "preset": "mp4_264_720p",
  "inputUrl": "https://cdn.example.com/master.mov",
  "outputUrl": "https://sfo3.digitaloceanspaces.com/...&X-Amz-Signature=...",
  "expiration": "2026-09-10T18:14:52.881Z",
  "duration": 742,
  "errorMessage": null,
  "retryCount": 0,
  "metadata": {
    "createdAt": "2026-09-10T14:08:11.204Z",
    "startedAt": "2026-09-10T14:08:19.663Z",
    "completedAt": "2026-09-10T14:12:47.118Z",
    "lastCheckedAt": "2026-09-10T14:12:47.118Z"
  },
  "links": {
    "self": "/api/v1/jobs/9d1f5c0a-4e7b-4a61-9b2e-8f1c3d5a7e42",
    "output": "/api/v1/jobs/9d1f5c0a-4e7b-4a61-9b2e-8f1c3d5a7e42/output"
  }
}

Polling every 10 to 15 seconds is enough. For anything beyond a script, configure a webhook instead and let the service call you.

5. Download the output

outputUrl is a signed link. Download it with any HTTP client; no authorization header is needed, because the signature is in the URL.

curl -o output.mp4 "$OUTPUT_URL"

The expiration field tells you exactly when that link stops working: 4 hours after signing on the free plan, 7 days on paid plans. The link is signed fresh every time you read the job, so an expired link is never a problem while the file is still in storage. See Downloading output.

What to read next