Skip to main content
GET
/
jobs
/
{id}
Get Job Status
curl --request GET \
  --url https://api.example.com/jobs/{id}
null

Overview

Retrieves the current status of a download job. When completed, includes a presigned S3 URL for downloading the file.

Path Parameters

id
string
required
The job UUID returned from POST /jobs

Response

id
string
Job UUID
url
string
Original source URL
status
string
Job status: Pending, Processing, Completed, or Failed
s3_url
string
Presigned download URL (only when Completed)
subtitle_url
string
Presigned URL for subtitles (if available)
error
string
Error message (only when Failed)
step
string
Current processing step: Queued, Downloading, Muxing, Uploading, Finished

Examples

curl -X GET "https://tornado.velys.software/jobs/550e8400-e29b-41d4-a716-446655440000"

Status Values

StatusDescription
PendingJob is in queue, waiting to be processed
ProcessingJob is actively being downloaded/processed
CompletedJob finished successfully
FailedJob encountered an error

Processing Steps

StepDescription
QueuedWaiting in queue
DownloadingDownloading video/audio streams
MuxingCombining streams with FFmpeg
UploadingUploading to S3
FinishedComplete

Polling Example

import requests
import time

def wait_for_job(job_id, api_key, timeout=600):
    start = time.time()

    while time.time() - start < timeout:
        response = requests.get(
            f"https://tornado.velys.software/jobs/{job_id}"
        )
        data = response.json()

        print(f"Status: {data['status']} - {data.get('step', 'N/A')}")

        if data["status"] == "Completed":
            return data["s3_url"]
        elif data["status"] == "Failed":
            raise Exception(f"Job failed: {data['error']}")

        time.sleep(3)

    raise Exception("Timeout waiting for job")

Error Responses

null
The presigned s3_url is valid for 24 hours. Download the file before it expires.