List parse and extraction jobs
curl --request GET \
--url https://transform.unstructured.io/api/v2/jobs \
--header 'unstructured-api-key: <api-key>'import requests
url = "https://transform.unstructured.io/api/v2/jobs"
headers = {"unstructured-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'unstructured-api-key': '<api-key>'}};
fetch('https://transform.unstructured.io/api/v2/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://transform.unstructured.io/api/v2/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 => [
"unstructured-api-key: <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://transform.unstructured.io/api/v2/jobs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("unstructured-api-key", "<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://transform.unstructured.io/api/v2/jobs")
.header("unstructured-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://transform.unstructured.io/api/v2/jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["unstructured-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"jobs": [
{
"id": "9eb6c914-02a5-4c5d-8490-a06476946a38",
"operation": "parse",
"status": "completed",
"created_at": "2026-09-02T18:34:26Z",
"updated_at": "2026-09-02T18:36:10Z",
"completed_at": "2026-09-02T18:36:10Z",
"result_state": "available",
"result_expires_at": null,
"file_id": "invoice-9eb6c914.pdf",
"source": {
"file_id": "invoice-9eb6c914.pdf",
"filename": "invoice.pdf",
"mimetype": "application/pdf",
"expires_at": "2026-09-18T18:34:26Z"
}
},
{
"id": "1af09d62-7c28-4d16-b254-7efaa17f3f41",
"operation": "extract",
"status": "processing",
"created_at": "2026-09-02T18:30:00Z",
"updated_at": "2026-09-02T18:31:12Z",
"completed_at": null,
"result_state": "not_ready",
"result_expires_at": null,
"file_id": "invoice-1af09d62.pdf",
"source": {
"file_id": "invoice-1af09d62.pdf",
"filename": "invoice.pdf",
"mimetype": "application/pdf",
"expires_at": "2026-09-18T18:30:00Z"
}
}
],
"next_cursor": "eyJ2IjoxLCJjIjpbIjIwMjYtMDktMDJUMTg6MzA6MDAuMDAwMDAwKzAwOjAwIiwiMWFmMDlkNjItN2MyOC00ZDE2LWIyNTQtN2VmYWExN2YzZjQxIl19.dGVzdA"
}{
"code": "invalid_input",
"message": "Invalid cursor, limit, or status."
}{
"code": "unauthorized",
"message": "The forwarded credential was not accepted."
}{
"code": "forbidden",
"message": "The forwarded credential is not allowed to list jobs."
}{
"code": "parse_job_failed",
"message": "The upstream service could not list jobs. Try again."
}API endpoints
List parse and extraction jobs
List Parse and Extract jobs visible to your API key, newest first. Review filters, pagination parameters, and the fields returned for each job.
GET
/
api
/
v2
/
jobs
List parse and extraction jobs
curl --request GET \
--url https://transform.unstructured.io/api/v2/jobs \
--header 'unstructured-api-key: <api-key>'import requests
url = "https://transform.unstructured.io/api/v2/jobs"
headers = {"unstructured-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'unstructured-api-key': '<api-key>'}};
fetch('https://transform.unstructured.io/api/v2/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://transform.unstructured.io/api/v2/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 => [
"unstructured-api-key: <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://transform.unstructured.io/api/v2/jobs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("unstructured-api-key", "<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://transform.unstructured.io/api/v2/jobs")
.header("unstructured-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://transform.unstructured.io/api/v2/jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["unstructured-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"jobs": [
{
"id": "9eb6c914-02a5-4c5d-8490-a06476946a38",
"operation": "parse",
"status": "completed",
"created_at": "2026-09-02T18:34:26Z",
"updated_at": "2026-09-02T18:36:10Z",
"completed_at": "2026-09-02T18:36:10Z",
"result_state": "available",
"result_expires_at": null,
"file_id": "invoice-9eb6c914.pdf",
"source": {
"file_id": "invoice-9eb6c914.pdf",
"filename": "invoice.pdf",
"mimetype": "application/pdf",
"expires_at": "2026-09-18T18:34:26Z"
}
},
{
"id": "1af09d62-7c28-4d16-b254-7efaa17f3f41",
"operation": "extract",
"status": "processing",
"created_at": "2026-09-02T18:30:00Z",
"updated_at": "2026-09-02T18:31:12Z",
"completed_at": null,
"result_state": "not_ready",
"result_expires_at": null,
"file_id": "invoice-1af09d62.pdf",
"source": {
"file_id": "invoice-1af09d62.pdf",
"filename": "invoice.pdf",
"mimetype": "application/pdf",
"expires_at": "2026-09-18T18:30:00Z"
}
}
],
"next_cursor": "eyJ2IjoxLCJjIjpbIjIwMjYtMDktMDJUMTg6MzA6MDAuMDAwMDAwKzAwOjAwIiwiMWFmMDlkNjItN2MyOC00ZDE2LWIyNTQtN2VmYWExN2YzZjQxIl19.dGVzdA"
}{
"code": "invalid_input",
"message": "Invalid cursor, limit, or status."
}{
"code": "unauthorized",
"message": "The forwarded credential was not accepted."
}{
"code": "forbidden",
"message": "The forwarded credential is not allowed to list jobs."
}{
"code": "parse_job_failed",
"message": "The upstream service could not list jobs. Try again."
}List the Parse and Extract jobs your API key can access, newest first. The response includes job metadata and pagination details.
Start with Parse your first document.
Authorizations
ApiKeyAuthBearerAuth
Query Parameters
Opaque pagination cursor from a previous response.
Maximum number of jobs to return.
Required range:
1 <= x <= 100Return only jobs with this public status. completed_with_warnings maps to completed upstream and may include completed jobs without warnings. A public job lifecycle status.
Available options:
queued, processing, failed, completed, completed_with_warnings, cancelled Was this page helpful?

