{ "id": "ext_01J9ZJYA", "object": "extraction", "status": "processing", "documents": [ { "document_id": "<string>", "document_type": "offering_memorandum", "schema_version": "rent_roll.v1", "status": "processing", "phase": "extracting", "billed": { "rate_code": "rent_roll", "units": 1, "amount_usd": "12.00" }, "error": { "code": "extraction_failed", "reason": "document_too_large", "message": "This document is too large to extract in one run. Splitting it into smaller files (for example, one sheet per file) should get it through. You were not charged for it." } } ], "sandbox": true, "created_at": "2023-11-07T05:31:56Z", "billed_total_usd": "12.00", "completed_at": "2023-11-07T05:31:56Z", "elapsed_seconds": 42, "poll_after_seconds": 15, "result_url": "<string>"}
Extractions
Retrieve an extraction job (poll for status)
How long to expect depends on the document type. T-12s, offering
memoranda and other documents usually finish in 2-5 minutes. Rent
rolls run a second consolidation phase and take longer: most land
within 10 minutes, and a large one can run to 30. See
documents[].phase to tell the phases apart.
Those are measured over a live corpus, not targets — build against
poll_after_seconds rather than an expected duration.
Pass wait to long-poll instead of sleeping between calls. While a
job is running the response carries poll_after_seconds and a
Retry-After header — use those rather than a fixed interval.
A job cannot run longer than 60 minutes; past that the worker fails
it and refunds every billed line in full.
{ "id": "ext_01J9ZJYA", "object": "extraction", "status": "processing", "documents": [ { "document_id": "<string>", "document_type": "offering_memorandum", "schema_version": "rent_roll.v1", "status": "processing", "phase": "extracting", "billed": { "rate_code": "rent_roll", "units": 1, "amount_usd": "12.00" }, "error": { "code": "extraction_failed", "reason": "document_too_large", "message": "This document is too large to extract in one run. Splitting it into smaller files (for example, one sheet per file) should get it through. You were not charged for it." } } ], "sandbox": true, "created_at": "2023-11-07T05:31:56Z", "billed_total_usd": "12.00", "completed_at": "2023-11-07T05:31:56Z", "elapsed_seconds": 42, "poll_after_seconds": 15, "result_url": "<string>"}
Seconds to hold the request open waiting for the job to reach a
terminal state (long polling). 0 (the default) returns the current
state immediately.
The response returns as soon as the job completes or fails, so a
short job costs one request instead of a sleep loop. If the budget
runs out first the request still returns 200 with the job's
current state — a still-running job is not an error. Check status
and call again.
Capped at 45 seconds, below the 60-second request timeout.
Required range: 0 <= x <= 45
Response
Current job state; includes billing and, when complete, a pointer to the result.
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.
Convenience link to /v1/extractions/{id}/result; present when completed.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Cactus Partner API","colors":{"primary":"#0E7C5B","light":"#34D399","dark":"#0A5C44"},"navbar":{"primary":{"type":"button","label":"Need API keys?","href":"https://www.trycactus.com/api-access"}},"footer":{"socials":{"website":"https://trycactus.com"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cactus-10e55128","hasAudioNarration":false,"actualSubdomain":"cactus-10e55128","customDomains":["docs.trycactus.com"],"gitSource":{"type":"github","owner":"trycactus","repo":"cactus-partner-api","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aef868e69e61846fb384f36","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API Reference","count":34},{"language":"default","tag":"Underwritings","count":13},{"language":"default","tag":"Guides","count":10},{"language":"default","tag":"Getting started","count":6},{"language":"default","tag":"Documents","count":5},{"language":"default","tag":"Reference","count":4},{"language":"default","tag":"Extractions","count":4},{"language":"default","tag":"Webhook Endpoints","count":3},{"language":"default","tag":"Usage","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/extractions/retrieve-an-extraction-job-poll-for-status","slug":"/api-reference/extractions/retrieve-an-extraction-job-poll-for-status","pageMetadata":{"title":"Retrieve an extraction job (poll for status)","description":"How long to expect depends on the document type. T-12s, offering\nmemoranda and other documents usually finish in 2-5 minutes. Rent\nrolls run a second consolidation phase and take longer: most land\nwithin 10 minutes, and a large one can run to 30. See\n`documents[].phase` to tell the phases apart.\n\n\nThose are measured over a live corpus, not targets — build against\n`poll_after_seconds` rather than an expected duration.\n\nPass `wait` to long-poll instead of sleeping between calls. While a\njob is running the response carries `poll_after_seconds` and a\n`Retry-After` header — use those rather than a fixed interval.\n\nA job cannot run longer than 60 minutes; past that the worker fails\nit and refunds every billed line in full.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/extractions/{extraction_id}","href":"/api-reference/extractions/retrieve-an-extraction-job-poll-for-status","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"How long to expect depends on the document type. T-12s, offering\\nmemoranda and other documents usually finish in 2-5 minutes. Rent\\nrolls run a second consolidation phase and take longer: most land\\nwithin 10 minutes, and a large one can run to 30. See\\n\", _jsx(_components.code, {\n children: \"documents[].phase\"\n }), \" to tell the phases apart.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Those are measured over a live corpus, not targets — build against\\n\", _jsx(_components.code, {\n children: \"poll_after_seconds\"\n }), \" rather than an expected duration.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Pass \", _jsx(_components.code, {\n children: \"wait\"\n }), \" to long-poll instead of sleeping between calls. While a\\njob is running the response carries \", _jsx(_components.code, {\n children: \"poll_after_seconds\"\n }), \" and a\\n\", _jsx(_components.code, {\n children: \"Retry-After\"\n }), \" header — use those rather than a fixed interval.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"A job cannot run longer than 60 minutes; past that the worker fails\\nit and refunds every billed line in full.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Retrieve an extraction job (poll for status)","description":"How long to expect depends on the document type. T-12s, offering\nmemoranda and other documents usually finish in 2-5 minutes. Rent\nrolls run a second consolidation phase and take longer: most land\nwithin 10 minutes, and a large one can run to 30. See\n`documents[].phase` to tell the phases apart.\n\n\nThose are measured over a live corpus, not targets — build against\n`poll_after_seconds` rather than an expected duration.\n\nPass `wait` to long-poll instead of sleeping between calls. While a\njob is running the response carries `poll_after_seconds` and a\n`Retry-After` header — use those rather than a fixed interval.\n\nA job cannot run longer than 60 minutes; past that the worker fails\nit and refunds every billed line in full.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/extractions/{extraction_id}","href":"/api-reference/extractions/retrieve-an-extraction-job-poll-for-status","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getExtraction","tags":["Extractions"],"summary":"Retrieve an extraction job (poll for status)","description":"How long to expect depends on the document type. T-12s, offering\nmemoranda and other documents usually finish in 2-5 minutes. Rent\nrolls run a second consolidation phase and take longer: most land\nwithin 10 minutes, and a large one can run to 30. See\n`documents[].phase` to tell the phases apart.\n\n\nThose are measured over a live corpus, not targets — build against\n`poll_after_seconds` rather than an expected duration.\n\nPass `wait` to long-poll instead of sleeping between calls. While a\njob is running the response carries `poll_after_seconds` and a\n`Retry-After` header — use those rather than a fixed interval.\n\nA job cannot run longer than 60 minutes; past that the worker fails\nit and refunds every billed line in full.\n","parameters":["64dc75e5-50f8-4e0b-8bdf-72a4e3c9133d"],"responses":{"200":"245e93f6-9a29-4444-99ec-afd5b0482e0f","403":"1107dc39-0b85-4751-a68c-d2f97ad0f169","404":"21b4a1c9-482d-476b-bf6f-bea342ec2c41"},"method":"get","type":"path","servers":["1a16f6a0-bda6-4bf3-9c8b-84185a6fb93b"],"security":["2297ff2f-d9c9-4023-b4d6-2a7b14510000"],"path":"/v1/extractions/{extraction_id}","baseUrlOptions":["https://api.trycactus.com"],"title":"Retrieve an extraction job (poll for status)","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"64dc75e5-50f8-4e0b-8bdf-72a4e3c9133d":{"name":"wait","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":45,"default":0,"isRequired":false,"description":"Seconds to hold the request open waiting for the job to reach a\nterminal state (long polling). `0` (the default) returns the current\nstate immediately.\n\nThe response returns as soon as the job completes or fails, so a\nshort job costs one request instead of a sleep loop. If the budget\nruns out first the request still returns `200` with the job's\ncurrent state — a still-running job is not an error. Check `status`\nand call again.\n\nCapped at 45 seconds, below the 60-second request timeout.\n","uniqueKey":"","typeLabel":"integer"},"description":"Seconds to hold the request open waiting for the job to reach a\nterminal state (long polling). `0` (the default) returns the current\nstate immediately.\n\nThe response returns as soon as the job completes or fails, so a\nshort job costs one request instead of a sleep loop. If the budget\nruns out first the request still returns `200` with the job's\ncurrent state — a still-running job is not an error. Check `status`\nand call again.\n\nCapped at 45 seconds, below the 60-second request timeout.\n"},"fe071876-bbf3-4c6c-8748-45f6033862b6":{"name":"extraction_id","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"},"example":"ext_01J9ZJYA"}},"responses":{"245e93f6-9a29-4444-99ec-afd5b0482e0f":{"description":"Current job state; includes billing and, when complete, a pointer to the result.","headers":{"Retry-After":{"description":"Seconds to wait before polling again. Present while a job is still running.","schema":{"type":"integer","example":15}}},"content":{"application/json":{"schema":{"type":"object","required":["id","object","status","documents","created_at","sandbox"],"properties":{"id":{"type":"string","example":"ext_01J9ZJYA","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"object":{"type":"string","const":"extraction","isRequired":true,"uniqueKey":"object","typeLabel":"string"},"status":{"type":"string","enum":["processing","completed","failed"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"documents":{"type":"array","items":{"type":"object","required":["document_id","document_type","schema_version","status"],"properties":{"document_id":{"type":"string","isRequired":true,"uniqueKey":"documents.items.[INDEX].document_id","typeLabel":"string"},"document_type":{"type":"string","description":"Declared/resolved document type; determines the rate-card price and the output schema family.\n","enum":["offering_memorandum","rent_roll","t12","other_standard","other_complex"],"isRequired":true,"uniqueKey":"documents.items.[INDEX].document_type","typeLabel":"enum\u003cstring>"},"schema_version":{"type":"string","example":"rent_roll.v1","isRequired":true,"uniqueKey":"documents.items.[INDEX].schema_version","typeLabel":"string"},"status":{"type":"string","enum":["processing","completed","failed"],"isRequired":true,"uniqueKey":"documents.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"phase":{"type":"string","enum":["extracting","consolidating"],"description":"Which stage a still-processing document is in. Rent rolls are\ntwo-phase — `extracting` reads the file, then `consolidating`\nruns the rent-roll pipeline that produces the typed\n`rent_roll.v1` output. Every other type is single-phase and\nreports `extracting`. Absent once the document is terminal.\n","uniqueKey":"documents.items.[INDEX].phase","typeLabel":"enum\u003cstring>"},"billed":{"type":"object","required":["rate_code","units","amount_usd"],"properties":{"rate_code":{"type":"string","description":"Rate-card line the debit was priced against.","example":"rent_roll","isRequired":true,"uniqueKey":"documents.items.[INDEX].billed.rate_code","typeLabel":"string"},"units":{"type":"integer","description":"Billing units. Documents exceeding their type's size cap bill as multiple units (e.g. a 2,400-row rent roll = 3 units).\n","example":1,"isRequired":true,"uniqueKey":"documents.items.[INDEX].billed.units","typeLabel":"integer"},"amount_usd":{"type":"string","description":"Decimal string, e.g. \"12.00\".","example":"12.00","isRequired":true,"uniqueKey":"documents.items.[INDEX].billed.amount_usd","typeLabel":"string"}},"uniqueKey":"documents.items.[INDEX].billed","typeLabel":"object"},"error":{"type":"object","description":"Present when the document failed. A failed document is never\nbilled: its charge is refunded automatically.\n\n`code` is `extraction_failed`, or `extraction_timeout` when the\ndocument did not finish within the processing window. `reason`\nsays why, from a closed list — branch on `reason`, and show\n`message` to your user as-is:\n\n- `document_too_large` — too large to extract in one run.\n Splitting the file (for example, one sheet per file) usually\n gets it through.\n- `unreadable_file` — the file could not be opened or read.\n- `no_data_found` — the file was read but held nothing to\n extract; for a rent roll, no unit table was found.\n- `processing_timeout` — processing took too long. A limit on\n our side rather than a problem with the file; retry later.\n- `temporary_failure` — interrupted by a transient error on our\n side; retrying usually succeeds.\n- `internal_error` — any other failure on our side.\n\nTreat an unrecognized `reason` as `internal_error`: new reasons\nmay be added without a schema version bump.\n","properties":{"code":{"type":"string","example":"extraction_failed","uniqueKey":"documents.items.[INDEX].error.code","typeLabel":"string"},"reason":{"type":"string","enum":["document_too_large","unreadable_file","no_data_found","processing_timeout","temporary_failure","internal_error"],"example":"document_too_large","uniqueKey":"documents.items.[INDEX].error.reason","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"This document is too large to extract in one run. Splitting it into smaller files (for example, one sheet per file) should get it through. You were not charged for it.","uniqueKey":"documents.items.[INDEX].error.message","typeLabel":"string"}},"uniqueKey":"documents.items.[INDEX].error","typeLabel":"object"}},"uniqueKey":"documents.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"documents","typeLabel":"object[]"},"sandbox":{"type":"boolean","isRequired":true,"uniqueKey":"sandbox","typeLabel":"boolean"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"billed_total_usd":{"type":"string","example":"12.00","uniqueKey":"billed_total_usd","typeLabel":"string"},"completed_at":{"type":"string","format":"date-time","uniqueKey":"completed_at","typeLabel":"string\u003cdate-time>"},"elapsed_seconds":{"type":"integer","description":"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,"uniqueKey":"elapsed_seconds","typeLabel":"integer"},"poll_after_seconds":{"type":"integer","description":"Recommended seconds to wait before polling again. Present while processing; mirrors the `Retry-After` header. Prefer this over a hard-coded interval.","example":15,"uniqueKey":"poll_after_seconds","typeLabel":"integer"},"result_url":{"type":"string","description":"Convenience link to `/v1/extractions/{id}/result`; present when completed.","uniqueKey":"result_url","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"ext_01J9ZJYA","object":"extraction","status":"processing","documents":[{"document_id":"\u003cstring>","document_type":"offering_memorandum","schema_version":"rent_roll.v1","status":"processing","phase":"extracting","billed":{"rate_code":"rent_roll","units":1,"amount_usd":"12.00"},"error":{"code":"extraction_failed","reason":"document_too_large","message":"This document is too large to extract in one run. Splitting it into smaller files (for example, one sheet per file) should get it through. You were not charged for it."}}],"sandbox":true,"created_at":"2023-11-07T05:31:56Z","billed_total_usd":"12.00","completed_at":"2023-11-07T05:31:56Z","elapsed_seconds":42,"poll_after_seconds":15,"result_url":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"1107dc39-0b85-4751-a68c-d2f97ad0f169":{"description":"The key authenticated, but this product is not available to it. `product_not_enabled` — your account has not been enabled for this product; contact api@trycactus.com. `missing_scope` — your account has the product but this particular key was issued without it; use a key that carries the scope.\n","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem details.","required":["title","status","code","request_id"],"properties":{"title":{"type":"string","example":"Document exceeds the size limit","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","example":422,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Stable machine-readable error code.","example":"document_over_size_cap","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"type":{"type":"string","format":"uri","description":"Link to this code's entry on the errors page. An anchor, not a path — every code lives on the one page.\n","example":"https://docs.trycactus.com/errors#document_over_size_cap","uniqueKey":"type","typeLabel":"string\u003curi>"},"detail":{"type":"string","example":"Files over 500 pages or 100 MB are rejected and not charged.","uniqueKey":"detail","typeLabel":"string"},"errors":{"type":"array","description":"Field-level validation errors, when applicable.","items":{"type":"object","properties":{"field":{"type":"string","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"product_not_enabled":{"title":"product_not_enabled","value":{"type":"https://docs.trycactus.com/errors#product_not_enabled","title":"Product not enabled for this account","status":403,"detail":"Your account is not enabled for underwriting. Contact api@trycactus.com to enable it.","code":"product_not_enabled","request_id":"req_01J9Z6X2QK8N4M"}},"missing_scope":{"title":"missing_scope","value":{"type":"https://docs.trycactus.com/errors#missing_scope","title":"API key lacks the required scope","status":403,"detail":"This API key does not have the 'underwriting' scope. Use a key with underwriting access.","code":"missing_scope","request_id":"req_01J9Z6X2QK8N4M"}}},"exampleType":"examples"}},"exampleType":"examples"},"21b4a1c9-482d-476b-bf6f-bea342ec2c41":{"description":"Resource does not exist (or belongs to another partner).","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem details.","required":["title","status","code","request_id"],"properties":{"title":{"type":"string","example":"Document exceeds the size limit","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","example":422,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Stable machine-readable error code.","example":"document_over_size_cap","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"type":{"type":"string","format":"uri","description":"Link to this code's entry on the errors page. An anchor, not a path — every code lives on the one page.\n","example":"https://docs.trycactus.com/errors#document_over_size_cap","uniqueKey":"type","typeLabel":"string\u003curi>"},"detail":{"type":"string","example":"Files over 500 pages or 100 MB are rejected and not charged.","uniqueKey":"detail","typeLabel":"string"},"errors":{"type":"array","description":"Field-level validation errors, when applicable.","items":{"type":"object","properties":{"field":{"type":"string","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"title":"Document exceeds the size limit","status":422,"code":"document_over_size_cap","request_id":"\u003cstring>","type":"https://docs.trycactus.com/errors#document_over_size_cap","detail":"Files over 500 pages or 100 MB are rejected and not charged.","errors":[{"field":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"2297ff2f-d9c9-4023-b4d6-2a7b14510000":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"ck_live_* or ck_sandbox_*","description":"Partner API key issued by Cactus.","scopes":[],"schemeName":"apiKey"}}},"servers":{"1a16f6a0-bda6-4bf3-9c8b-84185a6fb93b":{"url":"https://api.trycactus.com","description":"Production (live and sandbox keys)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"ck_live_* or ck_sandbox_*","description":"Partner API key issued by Cactus.","scopes":[],"schemeName":"apiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Partner API key issued by Cactus.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"cactus-10e55128","siteName":"Cactus Partner API","title":"Retrieve an extraction job (poll for status) - Cactus Partner API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T20:21:42.466Z","originalFileLocation":"api-reference/extractions/retrieve-an-extraction-job-poll-for-status.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How long to expect depends on the document type. T-12s, offering memoranda and other documents usually finish in 2-5 minutes. Rent rolls run a second consolidation phase and take longer: most land within 10 minutes, and a large one can run to 30. See documents[].phase to tell the phases apart. Those are measured over a live corpus, not targets — build against poll_after_seconds rather than an expected duration. Pass wait to long-poll instead of sleeping between calls. While a job is running the response carries poll_after_seconds and a Retry-After header — use those rather than a fixed interval. A job cannot run longer than 60 minutes; past that the worker fails it and refunds every billed line in full.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Cactus Partner API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/cactus-10e55128/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/cactus-10e55128/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/cactus-10e55128/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/cactus-10e55128/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"Retrieve an extraction job (poll for status) - Cactus Partner API\">\u003cmeta data-mint-head property=\"og:description\" content=\"How long to expect depends on the document type. T-12s, offering memoranda and other documents usually finish in 2-5 minutes. Rent rolls run a second consolidation phase and take longer: most land within 10 minutes, and a large one can run to 30. See documents[].phase to tell the phases apart. Those are measured over a live corpus, not targets — build against poll_after_seconds rather than an expected duration. Pass wait to long-poll instead of sleeping between calls. While a job is running the response carries poll_after_seconds and a Retry-After header — use those rather than a fixed interval. A job cannot run longer than 60 minutes; past that the worker fails it and refunds every billed line in full.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Cactus Partner API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.trycactus.com/api-reference/extractions/retrieve-an-extraction-job-poll-for-status\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cactus-10e55128.mintlify.site/_mintlify/api/og/v2?division=Extractions\u0026amp;title=Retrieve+an+extraction+job+%28poll+for+status%29\u0026amp;description=How+long+to+expect+depends+on+the+document+type.+T-12s%2C+offering%0Amemoranda+and+other+documents+usually+finish+in+2-5+minutes.+Rent%0Arolls+run+a+second+consolidat\u0026amp;theme=6ee3ac95092e49869d3cabc5\u0026amp;signature=7b5da85b523e2bc864bcdf1e6c949bcee9dbb7c2509acfd13b4a5b75694e81ef\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Retrieve an extraction job (poll for status) - Cactus Partner API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How long to expect depends on the document type. T-12s, offering memoranda and other documents usually finish in 2-5 minutes. Rent rolls run a second consolidation phase and take longer: most land within 10 minutes, and a large one can run to 30. See documents[].phase to tell the phases apart. Those are measured over a live corpus, not targets — build against poll_after_seconds rather than an expected duration. Pass wait to long-poll instead of sleeping between calls. While a job is running the response carries poll_after_seconds and a Retry-After header — use those rather than a fixed interval. A job cannot run longer than 60 minutes; past that the worker fails it and refunds every billed line in full.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cactus-10e55128.mintlify.site/_mintlify/api/og/v2?division=Extractions\u0026amp;title=Retrieve+an+extraction+job+%28poll+for+status%29\u0026amp;description=How+long+to+expect+depends+on+the+document+type.+T-12s%2C+offering%0Amemoranda+and+other+documents+usually+finish+in+2-5+minutes.+Rent%0Arolls+run+a+second+consolidat\u0026amp;theme=6ee3ac95092e49869d3cabc5\u0026amp;signature=7b5da85b523e2bc864bcdf1e6c949bcee9dbb7c2509acfd13b4a5b75694e81ef\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/cactus-10e55128/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Cactus Partner API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0E7C5B\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.trycactus.com/api-reference/extractions/retrieve-an-extraction-job-poll-for-status\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/extractions/retrieve-an-extraction-job-poll-for-status.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.trycactus.com/#organization\",\"name\":\"Cactus Partner API\",\"url\":\"https://docs.trycactus.com\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.trycactus.com#website\",\"name\":\"Cactus Partner API\",\"url\":\"https://docs.trycactus.com\",\"publisher\":{\"@id\":\"https://docs.trycactus.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.trycactus.com/api-reference/extractions/retrieve-an-extraction-job-poll-for-status#webpage\",\"url\":\"https://docs.trycactus.com/api-reference/extractions/retrieve-an-extraction-job-poll-for-status\",\"name\":\"Retrieve an extraction job (poll for status)\",\"description\":\"How long to expect depends on the document type. T-12s, offering memoranda and other documents usually finish in 2-5 minutes. Rent rolls run a second consolidation phase and take longer: most land within 10 minutes, and a large one can run to 30. See documents[].phase to tell the phases apart. Those are measured over a live corpus, not targets — build against poll_after_seconds rather than an expected duration. Pass wait to long-poll instead of sleeping between calls. While a job is running the response carries poll_after_seconds and a Retry-After header — use those rather than a fixed interval. A job cannot run longer than 60 minutes; past that the worker fails it and refunds every billed line in full.\",\"dateModified\":\"2026-11-06T20:21:42.466Z\",\"isPartOf\":{\"@id\":\"https://docs.trycactus.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.trycactus.com/api-reference/extractions/retrieve-an-extraction-job-poll-for-status#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.trycactus.com/api-reference/extractions/retrieve-an-extraction-job-poll-for-status#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Extractions\",\"item\":\"https://docs.trycactus.com/api-reference/extractions/list-extraction-jobs\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Retrieve an extraction job (poll for status)\",\"item\":\"https://docs.trycactus.com/api-reference/extractions/retrieve-an-extraction-job-poll-for-status\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.trycactus.com/api-reference/extractions/retrieve-an-extraction-job-poll-for-status#apireference\",\"headline\":\"Retrieve an extraction job (poll for status)\",\"name\":\"Retrieve an extraction job (poll for status)\",\"description\":\"How long to expect depends on the document type. T-12s, offering memoranda and other documents usually finish in 2-5 minutes. Rent rolls run a second consolidation phase and take longer: most land within 10 minutes, and a large one can run to 30. See documents[].phase to tell the phases apart. Those are measured over a live corpus, not targets — build against poll_after_seconds rather than an expected duration. Pass wait to long-poll instead of sleeping between calls. While a job is running the response carries poll_after_seconds and a Retry-After header — use those rather than a fixed interval. A job cannot run longer than 60 minutes; past that the worker fails it and refunds every billed line in full.\",\"url\":\"https://docs.trycactus.com/api-reference/extractions/retrieve-an-extraction-job-poll-for-status\",\"mainEntityOfPage\":{\"@id\":\"https://docs.trycactus.com/api-reference/extractions/retrieve-an-extraction-job-poll-for-status#webpage\"},\"dateModified\":\"2026-11-06T20:21:42.466Z\",\"publisher\":{\"@id\":\"https://docs.trycactus.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.trycactus.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Cactus Partner API\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Cactus Partner API\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/extractions/retrieve-an-extraction-job-poll-for-status.md","siteName":"Cactus Partner API","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Documents","pages":[{"title":"List documents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/documents","href":"/api-reference/documents/list-documents"},{"title":"Register a document and get a presigned upload URL","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/documents","href":"/api-reference/documents/register-a-document-and-get-a-presigned-upload-url"},{"title":"Retrieve a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/documents/{document_id}","href":"/api-reference/documents/retrieve-a-document"},{"title":"Delete a document and its stored file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/documents/{document_id}","href":"/api-reference/documents/delete-a-document-and-its-stored-file"},{"title":"Get a short-lived link to the original uploaded file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/documents/{document_id}/download","href":"/api-reference/documents/get-a-short-lived-link-to-the-original-uploaded-file"}]},{"group":"Extractions","pages":[{"title":"List extraction jobs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/extractions","href":"/api-reference/extractions/list-extraction-jobs"},{"title":"Create an extraction job","description":"Validates, accepts, and bills the referenced document(s), then starts\nextraction. Submit either a single `document_id` or a `bundle` of\noffering memorandum + rent roll + T-12 (billed at the bundle rate).\n\nValidation failures for the document (size cap, unreadable file,\nunresolvable type) reject the request with `422` and **no charge**.\n\nProcessing time scales with document content - a focused\nsingle-purpose file finishes fastest. See\n[Preparing documents](/preparing-documents).\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/extractions","href":"/api-reference/extractions/create-an-extraction-job"},{"title":"Retrieve an extraction job (poll for status)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/extractions/{extraction_id}","href":"/api-reference/extractions/retrieve-an-extraction-job-poll-for-status"},{"title":"Retrieve the structured output of a completed extraction","description":"Returns one result per document in the extraction. The shape of each\n`data` object depends on the document's type — switch on\n`schema_version` and pick the matching example in the response panel,\none per shape.\n\nTo see a full payload before writing any integration code, run the same\nrequest against a `ck_sandbox_` key: the documented\n[example documents](/sandbox) return real extracted output instantly,\nwith no upload and no billing.\n\n**The examples are abridged** so the payloads stay readable. Each\nis the sandbox fixture for its shape, with long arrays trimmed:\n\n- `rent_roll` (`example-rent-roll-2.xlsx`) — `units` shows the first 3 of 168 rows (`unit_count` and `headers` are complete).\n- `t12` (`example-t12-2.xlsx`) — 4 `unknown` column(s) are omitted from `headers` and from every line item's `cells` — the live response includes them; `line_items` shows the first 7 of 200 line items, each with all of its remaining cells (`metadata` is complete).\n- `offering_memorandum` (generic fixture) — 1 section shows only the first 4 facts (`property` is complete).\n- `other` (generic fixture) — shown in full.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/extractions/{extraction_id}/result","href":"/api-reference/extractions/retrieve-the-structured-output-of-a-completed-extraction"}]},{"group":"Underwritings","pages":[{"title":"List underwriting runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/underwritings","href":"/api-reference/underwritings/list-underwriting-runs"},{"title":"Start an automated underwriting run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/underwritings","href":"/api-reference/underwritings/start-an-automated-underwriting-run"},{"title":"Retrieve an underwriting run (poll for status)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/underwritings/{underwriting_id}","href":"/api-reference/underwritings/retrieve-an-underwriting-run-poll-for-status"},{"title":"Create a private report embed session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/underwritings/{underwriting_id}/embed-sessions","href":"/api-reference/underwritings/create-a-private-report-embed-session"},{"title":"Download the populated Excel model","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/underwritings/{underwriting_id}/model","href":"/api-reference/underwritings/download-the-populated-excel-model"},{"title":"Outline of a finished report","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/underwritings/{underwriting_id}/outline","href":"/api-reference/underwritings/outline-of-a-finished-report"},{"title":"One section of a finished report","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/underwritings/{underwriting_id}/sections/{section}","href":"/api-reference/underwritings/one-section-of-a-finished-report"},{"title":"Editable assumptions behind a finished report","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/underwritings/{underwriting_id}/assumptions","href":"/api-reference/underwritings/editable-assumptions-behind-a-finished-report"},{"title":"What-if on a finished report","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/underwritings/{underwriting_id}/previews","href":"/api-reference/underwritings/what-if-on-a-finished-report"},{"title":"Request a change to a finished report","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/underwritings/{underwriting_id}/changes","href":"/api-reference/underwritings/request-a-change-to-a-finished-report"},{"title":"Get a change","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/underwriting-changes/{change_id}","href":"/api-reference/underwritings/get-a-change"},{"title":"Confirm a change and start the new version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/underwriting-changes/{change_id}/confirm","href":"/api-reference/underwritings/confirm-a-change-and-start-the-new-version"},{"title":"Every version of a report","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/underwritings/{underwriting_id}/versions","href":"/api-reference/underwritings/every-version-of-a-report"}]},{"group":"Usage","pages":[{"title":"Usage pool balance and metered activity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/usage","href":"/api-reference/usage/usage-pool-balance-and-metered-activity"}]},{"group":"Webhook Endpoints","pages":[{"title":"List webhook endpoints","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/webhook-endpoints","href":"/api-reference/webhook-endpoints/list-webhook-endpoints"},{"title":"Register a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/webhook-endpoints","href":"/api-reference/webhook-endpoints/register-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/webhook-endpoints/{endpoint_id}","href":"/api-reference/webhook-endpoints/delete-a-webhook-endpoint"}]},{"group":"API Reference","pages":[{"title":"Extraction finished successfully","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook extraction.completed","href":"/api-reference/extraction-finished-successfully"},{"title":"Extraction failed accepted documents are auto refunded","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook extraction.failed","href":"/api-reference/extraction-failed-accepted-documents-are-auto-refunded"},{"title":"Underwriting run finished with a report link","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook underwriting.completed","href":"/api-reference/underwriting-run-finished-with-a-report-link"},{"title":"Underwriting run failed","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook underwriting.failed","href":"/api-reference/underwriting-run-failed"}]}]}]},"basePath":"","title":"Retrieve an extraction job (poll for status) - Cactus Partner API","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CybtLBIt.js","utils-BMLj2fvV.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B6In562Y.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dr8Mfhp9.js","snippetPresets-2rmQvMVl.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-WMqJYdZj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CJ-MlPHu.js","shallow-dY3TMRCk.js","getApiPlaygroundDisplay-v-1B2bKm.js","CodeSnippet-BDhiTB7U.js","CodeSnippets-D9hnzQcS.js","Page-C4GwDT3_.js","getPastedJson-Th2V45jI.js","icon-BQXch1W9.js","MethodPill-BCqUneP3.js","DuplicateIcon-Q_-bhurZ.js","createIcon-DUjLHRqp.js","DynamicMarkdown-B-f2cqXQ.js","SectionHeading-Da5NsV4v.js","axios-vUo_bRtp.js","Markdown-D13FWkIM.js","clsx-D3Isdib3.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-C-XZBk9h.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink--qIqmmVG.js"]}