Skip to content
Docs menu

List jobs

Your jobs, newest first, with optional filters for status and tag.

GEThttps://api.switchfile.io/v2/jobs

Needs an API key: Authorization: Bearer YOUR_API_KEY. See Authentication.

Example

curl "https://api.switchfile.io/v2/jobs" \
  -H "Authorization: Bearer $SWITCHFILE_API_KEY"

Parameters

Query parameters

  • filter[status]string

    Only jobs with this status

    one of "waiting", "processing", "finished", "error"

  • filter[tag]string

    Only jobs with this tag

  • includestring

    Set to tasks to include the tasks of each job

  • pagenumber

    Page number, starting at 1

    at least 1

  • per_pagenumber

    Entries per page, 100 by default

    1 to 1000

Responses

  • 200OK
    • dataJob[]required
    • data[].created_atstringrequired

      ISO 8601 timestamp, for example 2026-11-06T18:00:00+00:00

    • data[].ended_atstring | nullrequired

      ISO 8601 timestamp, for example 2026-11-06T18:00:00+00:00

    • data[].idstring (uuid)required
    • data[].linksobjectrequired
    • data[].links.selfstringrequired
    • data[].started_atstring | nullrequired

      ISO 8601 timestamp, for example 2026-11-06T18:00:00+00:00

    • data[].statusstringrequired

      one of "waiting", "processing", "finished", "error"

    • data[].tagstring | nullrequired
    • data[].tasksTask[]
    • data[].tasks[].codestring | nullrequired
    • data[].tasks[].copy_of_task_idstring (uuid) | nullrequired
    • data[].tasks[].created_atstringrequired

      ISO 8601 timestamp, for example 2026-11-06T18:00:00+00:00

    • data[].tasks[].creditsstring (integer) | integerrequired
    • data[].tasks[].depends_on_task_idsstring (uuid)[]required
    • data[].tasks[].ended_atstring | nullrequired

      ISO 8601 timestamp, for example 2026-11-06T18:00:00+00:00

    • data[].tasks[].enginestring | nullrequired

      Internal identifier, may change. Do not rely on its value

    • data[].tasks[].engine_versionstring | nullrequired

      Internal identifier, may change. Do not rely on its value

    • data[].tasks[].host_namestring | nullrequired
    • data[].tasks[].idstring (uuid)required
    • data[].tasks[].job_idstring (uuid)required
    • data[].tasks[].linksobjectrequired
    • data[].tasks[].links.selfstringrequired
    • data[].tasks[].messagestring | nullrequired
    • data[].tasks[].namestringrequired
    • data[].tasks[].operationstringrequired
    • data[].tasks[].percentstring (integer) | integerrequired

      Progress as in CloudConvert: 100 when finished, otherwise 0

      0 to 100

    • data[].tasks[].prioritystring (integer) | integerrequired
    • data[].tasks[].regionstringrequired

      Region the task runs in (eu-central)

    • data[].tasks[].resultTaskResultrequired
    • data[].tasks[].result.filesResultFile[]
    • data[].tasks[].result.formUploadForm
    • data[].tasks[].result.uploadDirectUpload

      import/upload only: a signed URL for large files, without the 100 MB limit of result.form. The task finishes on its own a few seconds after the PUT. Call POST /v2/tasks/{id}/upload-complete to finish it right away.

    • data[].tasks[].retry_of_task_idstring (uuid) | nullrequired
    • data[].tasks[].started_atstring | nullrequired

      ISO 8601 timestamp, for example 2026-11-06T18:00:00+00:00

    • data[].tasks[].statusstringrequired

      one of "waiting", "processing", "finished", "error"

    • data[].tasks[].storagestring | nullrequired
    • data[].tasks[].user_idstring | nullrequired

      Account of the job (opaque ID, the same as data.id in /v2/users/me)

    • data[].tasks[].waiting_forstring

      What a waiting task waits for, one of "upload", "inputs", "queued". Only set while status is waiting

    • linksPageLinksrequired
    • links.firststringrequired
    • links.laststring | nullrequired
    • links.nextstring | nullrequired
    • links.prevstring | nullrequired
    • metaPageMetarequired
    • meta.current_pagestring (integer) | integerrequired
    • meta.current_page_urlstringrequired
    • meta.fromstring (integer) | integerrequired
    • meta.pathstringrequired
    • meta.per_pagestring (integer) | integerrequired
    • meta.tostring (integer) | integerrequired
    200 application/json
    {
      "data": [
        {
          "id": "6e2c1b1f-3c1a-4d4e-9a57-0d7b2f6a8e10",
          "tag": "invoice-4711",
          "status": "finished",
          "created_at": "2026-11-06T18:00:00+00:00",
          "started_at": "2026-11-06T18:00:00+00:00",
          "ended_at": "2026-11-06T18:00:02+00:00",
          "links": {
            "self": "https://api.switchfile.io/v2/jobs/6e2c1b1f-3c1a-4d4e-9a57-0d7b2f6a8e10"
          }
        }
      ],
      "links": {
        "first": "https://api.switchfile.io/v2/jobs?page=1",
        "last": null,
        "prev": null,
        "next": null
      },
      "meta": {
        "current_page": 1,
        "current_page_url": "https://api.switchfile.io/v2/jobs?page=1",
        "from": 1,
        "path": "https://api.switchfile.io/v2/jobs",
        "per_page": 100,
        "to": 1
      }
    }
  • 401The API key is missing or not valid
    401 application/json
    {
      "message": "Missing or invalid API key.",
      "code": "UNAUTHENTICATED"
    }
  • 404Does not exist for this account
    404 application/json
    {
      "message": "Job not found.",
      "code": "NOT_FOUND"
    }
  • 422Invalid data. errors names the fields
    422 application/json
    {
      "message": "per_page: Expected number to be less or equal to 1000",
      "code": "INVALID_DATA",
      "errors": {
        "per_page": [
          "Expected number to be less or equal to 1000"
        ]
      }
    }
  • 429Too many requests or a daily quota is used up. See Retry-After
    429 application/json
    {
      "message": "Too many requests. Try again in 12 seconds.",
      "code": "RATE_LIMIT_EXCEEDED"
    }

Error bodies and codes are explained in Errors.