Skip to main content
GET
/
dashboard
/
jobs
Dashboard Jobs
curl --request GET \
  --url https://api.example.com/dashboard/jobs
{
  "error": "Invalid API Key"
}

Overview

Returns a paginated list of jobs for your API key, with optional status filtering.

Query Parameters

limit
integer
default:"50"
Number of jobs to return (max 100)
offset
integer
default:"0"
Number of jobs to skip for pagination
status
string
Filter by status: pending, processing, completed, or failed

Response

jobs
array
Array of job objects
jobs[].id
string
Job UUID
jobs[].url
string
Source URL
jobs[].status
string
Job status: Pending, Processing, Completed, or Failed
jobs[].error
string
Error message (for failed jobs)
jobs[].s3_key
string
S3 key where file was uploaded (for completed jobs)
total
integer
Total number of jobs matching the filter
limit
integer
Number of jobs returned
offset
integer
Offset used for pagination

Examples

curl -X GET "https://tornado.velys.software/dashboard/jobs?limit=50&offset=0" \
  -H "x-api-key: sk_your_api_key"

Error Responses

{
  "error": "Invalid API Key"
}

Pagination Example

let currentPage = 0;
const pageSize = 50;

async function loadJobs(page = 0) {
  const response = await fetch(
    `/dashboard/jobs?limit=${pageSize}&offset=${page * pageSize}`,
    { headers: { 'x-api-key': apiKey } }
  );
  const data = await response.json();

  // Render jobs
  renderJobsTable(data.jobs);

  // Update pagination
  const totalPages = Math.ceil(data.total / pageSize);
  updatePagination(page, totalPages, data.total);
}

function nextPage() {
  currentPage++;
  loadJobs(currentPage);
}

function prevPage() {
  if (currentPage > 0) {
    currentPage--;
    loadJobs(currentPage);
  }
}

Error Sanitization

Error messages are automatically sanitized to remove internal tool names:
  • yt-dlpdownloader
  • YT-DLPdownloader
  • yt_dlpdownloader
This provides cleaner error messages for end users.