/v1/drawings/detection/elevationDetect interior elevation regions in an architectural drawing PDF (document_id from POST /v1/documents, then poll GET /v1/jobs/{job_id}. Job model is elevation-detector.
Same async pattern as other drawing intelligence POSTs: X-API-Key auth; JSON body with document_id, optional page_numbers (1-based), optional webhook_url; immediate 202 with job_id, status: "queued", and poll_url. Webhooks run only on developer, pro, and enterprise (not free). This path is included in the tier-based RPM limiter with other job-submit POSTs.
Request
The document must belong to your account and have expires_at > now(). Body shape matches other drawing job endpoints (e.g. door detection).
Credits use len(page_numbers) when provided, else document page_count (or 1). Keep indices valid — the worker skips out-of-range pages but you are still charged on the submitted page set / count.
Code examples
Response — 202 Accepted
Poll GET /v1/jobs/{job_id} with the same API key until status is complete or failed.
Result shape
When status === "complete" and the job model is elevation-detector, result contains:
Unlike door detection, GET /v1/jobs does not run post-filters on stored results for elevation-detector — only door-detector is filtered in _apply_result_filters. Results are returned as stored.
confidence exists inside the detector step but is not copied into each elevations[] object. There is no class label (e.g. exterior vs section) in the API payload — only boxes.
Credits & rate limits
Same credit and quota behavior as door detection: CreditCost (2 credits × pages billed).
Rate-limit 429s include retry_after_seconds. Quota vs RPM both use status 429 — inspect the error body.
Errors
See also Errors for how HTTP exceptions map to client-visible envelopes.
Response Preview
{ "job_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "status": "queued", "poll_url": "/v1/jobs/7c9e6679-7425-40de-944b-e07fc1f90ae7" }