List Jobs
curl --request GET \
--url https://api.tornadoapi.io/jobs \
--header 'x-api-key: <x-api-key>'import requests
url = "https://api.tornadoapi.io/jobs"
headers = {"x-api-key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
fetch('https://api.tornadoapi.io/jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tornadoapi.io/jobs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tornadoapi.io/jobs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tornadoapi.io/jobs")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tornadoapi.io/jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"jobs": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"status": "Completed",
"s3_key": "videos/my-video.mp4",
"error": null,
"error_type": null,
"step": "Finished",
"created_at": 1705507200000,
"finished_at": 1705507260000,
"file_size": 52428800
},
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"url": "https://www.youtube.com/watch?v=abc123",
"status": "Processing",
"s3_key": null,
"error": null,
"error_type": null,
"step": "Downloading",
"created_at": 1705507100000,
"finished_at": null,
"file_size": null
}
],
"total": 142,
"limit": 20,
"offset": 0
}
Jobs
List Jobs
List all jobs for the authenticated user
GET
/
jobs
List Jobs
curl --request GET \
--url https://api.tornadoapi.io/jobs \
--header 'x-api-key: <x-api-key>'import requests
url = "https://api.tornadoapi.io/jobs"
headers = {"x-api-key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
fetch('https://api.tornadoapi.io/jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tornadoapi.io/jobs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tornadoapi.io/jobs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tornadoapi.io/jobs")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tornadoapi.io/jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"jobs": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"status": "Completed",
"s3_key": "videos/my-video.mp4",
"error": null,
"error_type": null,
"step": "Finished",
"created_at": 1705507200000,
"finished_at": 1705507260000,
"file_size": 52428800
},
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"url": "https://www.youtube.com/watch?v=abc123",
"status": "Processing",
"s3_key": null,
"error": null,
"error_type": null,
"step": "Downloading",
"created_at": 1705507100000,
"finished_at": null,
"file_size": null
}
],
"total": 142,
"limit": 20,
"offset": 0
}
Overview
Returns a paginated list of jobs with optional status filtering. Jobs are returned in reverse chronological order (newest first).Header Parameters
string
required
Your API key for authentication
Query Parameters
integer
default:"20"
Number of jobs to return. Maximum: 100
integer
default:"0"
Number of jobs to skip for pagination
string
Filter by job status:
pending, processing, completed, failed, warningResponse
array
Array of job objects
integer
Total number of jobs (ignoring filters)
integer
Number of jobs requested
integer
Number of jobs skipped
Job Object
string
Job UUID
string
Original video URL
string
Job status:
Pending, Processing, Completed, Failed, Warning, Skipped, Cancelled, CancelledByAdminstring
S3 object key (when completed)
string
Error message (when failed)
string
Error classification (when failed):
error for technical failures (rate limits, bot detection, connection issues), warning for content issues (private video, members-only, geo-blocked, unavailable)string
Current processing step:
Queued, Downloading, Muxing, Uploading, Finishedinteger
Creation timestamp (milliseconds since epoch)
integer
Completion timestamp (milliseconds since epoch)
integer
File size in bytes (when completed)
Examples
curl -X GET "https://api.tornadoapi.io/jobs" \
-H "x-api-key: sk_your_api_key"
curl -X GET "https://api.tornadoapi.io/jobs?limit=50&offset=100" \
-H "x-api-key: sk_your_api_key"
curl -X GET "https://api.tornadoapi.io/jobs?status=completed" \
-H "x-api-key: sk_your_api_key"
curl -X GET "https://api.tornadoapi.io/jobs?status=failed&limit=10" \
-H "x-api-key: sk_your_api_key"
Success Response
{
"jobs": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"status": "Completed",
"s3_key": "videos/my-video.mp4",
"error": null,
"error_type": null,
"step": "Finished",
"created_at": 1705507200000,
"finished_at": 1705507260000,
"file_size": 52428800
},
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"url": "https://www.youtube.com/watch?v=abc123",
"status": "Processing",
"s3_key": null,
"error": null,
"error_type": null,
"step": "Downloading",
"created_at": 1705507100000,
"finished_at": null,
"file_size": null
}
],
"total": 142,
"limit": 20,
"offset": 0
}
Error Responses
{
"error": "Missing x-api-key header"
}
{
"error": "Invalid API Key"
}
{
"error": "Database query failed"
}
Was this page helpful?