Skip to content

Every document this account has run

GET
/v1/runs
curl --request GET \
--url 'https://example.com/v1/runs?limit=100' \
--header 'Authorization: Bearer <token>'

Newest first, across every key you own, singles and batch documents both.

A run that failed stays in the list. So does one you have deleted, with result_available false, because the record that the work happened is worth keeping after the work itself is gone.

limit
Limit
integer
default: 100 >= 1 <= 500

Successful Response

Media typeapplication/json
RunListResponse

What this account has run, across every key it owns.

Every run here is collectable by a signed-in person, whichever of the account’s keys ran it. The listing used to name the key the browser extracts through, because the collect routes answered for one key and the page had to avoid offering a button that would 404; they answer for the account now, so the field is gone rather than left saying nothing.

Results are kept until you delete them. Nothing expires on a clock. result_available reports what the API still holds at the moment you asked, and it turns false when you delete a run through DELETE /v1/runs/{reference} or clear the account with DELETE /v1/runs. The record that the work happened outlives the work itself, because an invoice points at it.

object
runs
required
Runs
Array<object>
RunRow

One document an account ran, whichever way it was submitted.

A person does not think in tables. They ran a deed on Tuesday and want to know where it went, and whether it came through /v1/extracts or inside a folder batch is our filing rather than theirs. So this flattens extract_jobs and batch_items, which already carry the same facts under different column names.

result_available is the whole point of the row. It reports what the API still holds right now, and a false there is the honest answer to “where did my result go”: the retention sweep took it, and nothing resurrects it.

object
id
required
Id
string
document
required
Document
string
status
required
Status
string
source
required
Source
string
reference
required
Reference
string
key_prefix
required
Key Prefix
string
submitted_at
required
Submitted At
string format: date-time
finished_at
Any of:
string format: date-time
result_available
Result Available
boolean
document_sha256
Any of:
string
error
Any of:
string
placements
Placements
integer
0
Example
{
"runs": [
{
"result_available": false,
"placements": 0
}
]
}

Missing, unknown, or revoked API key

Media typeapplication/json
ErrorResponse
object
error
required
ErrorDetail
object
type
required
Type
string
message
required
Message
string
key
additional properties
any
Example
{
"error": {
"documents_used": 200,
"message": "Monthly document quota reached: 200 of 200 documents used this month. The cap resets on 2026-08-01. Email sales@easting.ai to raise it.",
"monthly_cap": 200,
"resets_on": "2026-08-01",
"type": "quota_exceeded"
}
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}

Extraction temporarily unavailable

Media typeapplication/json
ErrorResponse
object
error
required
ErrorDetail
object
type
required
Type
string
message
required
Message
string
key
additional properties
any
Example
{
"error": {
"documents_used": 200,
"message": "Monthly document quota reached: 200 of 200 documents used this month. The cap resets on 2026-08-01. Email sales@easting.ai to raise it.",
"monthly_cap": 200,
"resets_on": "2026-08-01",
"type": "quota_exceeded"
}
}