Skip to main content
Lists your jobs, newest first, with cursor pagination and an optional status filter. Entries are lightweight summaries — no result payloads; fetch GET /jobs/{job_id} for a result. Never rate-limited.
GET /jobs

Request

limit
integer
default:"50"
Jobs per page, 1–200.
cursor
uuid
next_cursor from the previous page. Omit for the newest page. An unknown cursor returns 404.
status
string
Optional filter: pending, running, succeeded, or failed.

Response

jobs
array
Summaries: job_id, action, status, error (only for failed jobs), created_at, completed_at.
next_cursor
string | null
Pass as cursor to fetch the next (older) page. null when there are no more pages.
Pagination is cursor-based (not offset-based), so pages stay consistent even while new jobs are being created concurrently.

Example

curl -s "$NDI_BASE/jobs?limit=2&status=failed" \
  -H "X-API-Key: $NDI_API_KEY"
{
  "jobs": [
    {
      "job_id": "d4c3b2a1-0f9e-4d8c-b7a6-5e4f3d2c1b0a",
      "action": "ground",
      "status": "failed",
      "error": { "code": "cancelled", "message": "cancelled by client request" },
      "created_at": "2026-07-12T20:58:31Z",
      "completed_at": "2026-07-12T20:59:02Z"
    },
    {
      "job_id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "action": "parse",
      "status": "failed",
      "error": { "code": "download_failed", "message": "source returned 403" },
      "created_at": "2026-07-12T19:12:09Z",
      "completed_at": "2026-07-12T19:12:15Z"
    }
  ],
  "next_cursor": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
}