Skip to content
API console (try a request with your own key)Get early access

List the workspace's extractions

GET
/v1/extractions
#!/usr/bin/env bash
set -euo pipefail
API=https://api.speccapture.com
AUTH="Authorization: Bearer $SPECCAPTURE_API_KEY"
page=$(curl -sS --fail-with-body "$API/v1/extractions?status=completed&limit=20" \
-H "$AUTH") || { echo "$page" >&2; exit 1; }
jq -r '.data[] as $job | "\($job.createdAt) \($job.fileName): \($job.sheetCount) sheets, \($job.progress.sheetsNeedingReview) waiting for a person"' <<<"$page"
if [[ "$(jq -r '.nextCursor' <<<"$page")" != null ]]; then
jq -r '"Older jobs: send cursor=\(.nextCursor)"' <<<"$page"
fi

Every job of the workspace, newest first - sent through the API, an assistant or uploaded in the dashboard - each as GET /v1/extractions/{jobId} answers it without its sheets: status, file name, size and SHA-256, template, sheet count, credits, progress (sheets read, failed, needing review), markedControlled, when it was made, updated and finished, why it failed, when its drawing was purged, and url, where the job and its sheets are. A deleted job is not listed. Page with limit and cursor (the previous page’s nextCursor), narrow with createdAfter, createdBefore, status and fileName (part of the file name, in any case). sc_test_ keys answer 501 test_mode_not_available until test-key replay exists.

limit
integer format: int32

How many items the page holds: 1 to 200, 50 when left out.

cursor
string

The previous page’s nextCursor, exactly as it came: the list continues just after that page’s last item, so items made or removed meanwhile never shift a page. Leave it out for the first page.

createdAfter
string format: date-time

Only items made strictly after this date and time (ISO 8601, such as 2026-10-14T09:30:00Z; without an offset it is UTC).

createdBefore
string format: date-time

Only items made strictly before this date and time (ISO 8601, such as 2026-10-14T09:30:00Z; without an offset it is UTC).

status
Allowed values: queued splitting extracting completed failed

Only items with this status.

fileName
string

Only jobs whose file name contains this, anywhere and in any case; at most 260 characters.

OK

Media typeapplication/json
object
data
required
Array<object>
object
jobId
required
string format: uuid
status
required
Allowed values: queued splitting extracting completed failed
fileName
required
string
fileSizeBytes
required
integer format: int64
fileSha256
required
string
templateId
required
string
templateVersion
required
integer format: int32
sheetCount
required
integer format: int32
credits
required
object
perSheet
required
integer format: int32
reserved
required
integer format: int32
spent
required
integer format: int32
refunded
required
integer format: int32
held
required
integer format: int32
progress
required
object
sheetsCompleted
required
integer format: int32
sheetsFailed
required
integer format: int32
sheetsNeedingReview
required
integer format: int32
markedControlled
required
boolean
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
completedAt
required
null | string format: date-time
failureReason
required
null | string
drawingPurgedAt
required
null | string format: date-time
url
required
string
hasMore
required
boolean
nextCursor
required
null | string

Bad Request: a problem with a stable code. See Errors for every code and what to do about it.

Media typeapplication/problem+json

Every error: a problem with a stable code. https://speccapture.com/docs/api/errors lists every code.

object
type

A link to the code’s entry in the docs.

null | string
title
null | string
status
null | integer format: int32
detail
null | string
instance
null | string
code

What went wrong, as a stable code to branch on: a published code never changes meaning.

string
traceId

This request’s trace: quote it when asking for help.

string

Not Implemented: a problem with a stable code. See Errors for every code and what to do about it.

Media typeapplication/problem+json

Every error: a problem with a stable code. https://speccapture.com/docs/api/errors lists every code.

object
type

A link to the code’s entry in the docs.

null | string
title
null | string
status
null | integer format: int32
detail
null | string
instance
null | string
code

What went wrong, as a stable code to branch on: a published code never changes meaning.

string
traceId

This request’s trace: quote it when asking for help.

string