Skip to main content
POST
Create an extraction job

Authorizations

Authorization
string
header
required

Partner API key issued by Cactus.

Headers

Idempotency-Key
string

Unique key making the request safely retryable.

Maximum string length: 255

Body

application/json

Provide asset_class, plus exactly one of document_id or bundle.

document_id
string
required

Single document to extract.

asset_class
enum<string>
required

The property's asset class. Required, and it decides which standard columns a rent roll is consolidated onto — beds/baths for multifamily, unit size and climate control for self-storage, and so on.

Send the property's real class rather than a placeholder. A class you did not mean returns that class's column set, and a class outside the enum is a 400. If a document turns out not to be a rent roll the value is simply unused.

Available options:
multifamily,
self-storage,
industrial-outdoor-storage,
commercial,
industrial,
office,
retail,
hotel
bundle
object

Deal bundle (offering memorandum + rent roll + T-12), billed at the bundle rate. Size caps apply per component.

Response

Accepted and billed; processing started.

id
string
required
Example:

"ext_01J9ZJYA"

object
string
required
Allowed value: "extraction"
status
enum<string>
required
Available options:
processing,
completed,
failed
documents
object[]
required
sandbox
boolean
required
created_at
string<date-time>
required
billed_total_usd
string
Example:

"12.00"

completed_at
string<date-time>
elapsed_seconds
integer

Whole seconds since created_at. Present while processing, so a caller can tell a job that just started from one approaching the 60-minute ceiling without doing date math.

Example:

42

poll_after_seconds
integer

Recommended seconds to wait before polling again. Present while processing; mirrors the Retry-After header. Prefer this over a hard-coded interval.

Example:

15

result_url
string

Convenience link to /v1/extractions/{id}/result; present when completed.