For AI agents: this page is also available as Markdown at https://docs.refabric.com/api-reference/platform/jobs/list-jobs.md, and the index of every page is https://docs.refabric.com/llms.txt.
Platform API › Jobs
List jobs
Your jobs, newest first — every job of the account, whichever key or the app started it; each row names the key that started it.
https://api.refabric.com/v1/jobsimport os
import requests
url = "https://api.refabric.com/v1/jobs"
headers = {"Authorization": f"Key {os.environ['REFABRIC_API_KEY']}"}
response = requests.get(url, headers=headers)
print(response.json()){
"items": [],
"next_cursor": "eyJsIjoiY2hhbmdlbG9nIn0",
"has_more": false
}Filters and sorting
outcometakes several values, repeated (?outcome=failed&outcome=cancelled) or comma-separated; a job that has not ended has no outcome.start/endnarrow by the time a job was queued,[start, end); without either, every job is listed.
Authentication. A key with jobs:read: a job and its files are your account's.
Key features
- Pages of 50 jobs by default, 200 at most; newest first.
- At most 50 values per filter; a window of 90 days at most.
Common use cases
- Find the jobs that failed yesterday.
- List the jobs one key started.
See also
GET /v1/jobs/{job_id}GET /v1/account/usage
Authorization
Authorization: Key $REFABRIC_API_KEYScope: jobs:read
Parameters
Query parameters
- integeroptionalDefault:
50Items per page: default 50, at most 200.
1 to 200
- stringoptionalnullable
The previous page's
next_cursor, copied back as it came, for the next page. Never build one. - stringoptionalnullable
Inclusive, ISO-8601 (
2026-09-01T00:00:00Z; no zone means UTC). Default: 30 days beforeend. The window is at most 90 days.format: date-time
- stringoptionalnullable
Exclusive, ISO-8601 (no zone means UTC). Default: now.
format: date-time
- stringoptionalnullable
Only jobs started with this key of yours (
key_…, its public id). - stringoptionalnullable
Only jobs of this task (
image.generate). - stringoptional
Only jobs at this lifecycle.
Values
queued— Accepted and waiting to start.running— Being made.terminal— Ended.outcomesays how.
- array<string>optionalnullable
Only jobs with one of these outcomes: succeeded, failed or cancelled; several values are any of them. A job that has not ended has no outcome.
Header parameters
- stringoptional
The contract version you wrote against (a date). Absent: the current version.
format: date
- stringoptional
Your own id for this request; we answer it back under X-Client-Request-ID.
max length 128
Response
200 — Done: the answer is in the body.
- array<object>required
This page's items, in the listing's order.
- stringrequired
The job.
Example:
9b2f4c1d0e8a - stringrequired
The task the job runs.
Example:
image.expand - stringrequired
Where the job is.
Values
queued— Accepted and waiting to start.running— Being made.terminal— Ended.outcomesays how.
Example:
terminal - stringrequirednullable
How the job ended —
nulluntil itslifecycleisterminal.Values
succeeded— It finished; its files are ready.failed— It ended without its result;errorsays why.cancelled— You cancelled it.
Example:
succeeded - stringrequirednullable
When it was accepted, ISO-8601 in UTC.
Example:
2026-10-05T09:30:00Z - stringrequirednullable
The key that started it;
nullfor work started in the Refabric app.Example:
key_8f3a
- booleanrequired
Whether another page follows this one.
Example:
false - stringoptionalnullable
Send it back as
cursorfor the next page. Absent on the last page. Opaque: never build or edit one.Example:
eyJsIjoiY2hhbmdlbG9nIn0
- 400 — The request cannot be read as it was sent (a header, the URL or the body's form).
- 401 — No valid API key was sent.
- 403 — Your key or your plan does not allow this.
- 422 — A field is missing or has a value this operation cannot use.
- 429 — Too many requests: wait for the number of seconds in the Retry-After header.
- 500 — Something went wrong on our side; retry, and quote the request id if it keeps happening.