- Updated: March 30, 2026
- 3 min read
AnchorGrid API Launches Drawings & Doors Detection Endpoint
Cookies & analyticsWe collect minimal analytics to understand how the site is used. If you decline, we do not load analytics.DeclineAcceptANCHORGRIDdevANCHORGRIDdevNAVIGATIONHomeAnchorGrid SuiteOVERVIEWIntroductionQuick StartAuthenticationBLOGAll postsAnchorGrid Back StoryENDPOINTSPOST/documentsPOST/drawings/detection/doorsCorePOST/drawings/detection/elevationPOST/drawings/schedulesPOST/specs/parse/documentPOST/specs/content-extractGET/v1/jobs/{job_id}ExampleRequestExamples202ResultCreditsErrorsDocs/Endpoints/POST /drawings/detection/doorsPOST/v1/drawings/detection/doorsDetect doors in architectural floor-plan PDFs.Accepts a previously uploaded document_id, enqueues inference, and returns a job you poll for results. Detections are returned as bounding boxes in PDF coordinate space.Floor plansAsync · 2022 credits / pageExample run▶ RunInputRequest↑This endpoint requires a document_id. Upload your PDF first →Auth via X-API-Key header. Body is JSON — this endpoint does not accept file uploads directly.document_idreqstring (UUID)ID of the uploaded PDF. Must belong to this account and not be expired.page_numbersint[]1-based page indices to scan. Omit to scan all pages. Out-of-range values are skipped by the worker but still billed.webhook_urlstringURL to POST the completed job payload to. Delivered on developer, pro, and enterprise tiers only.ℹCredits are charged on submission based on len(page_numbers) (or the document’s total page count when omitted) — not on pages that actually contain doors. Send only valid page indices to avoid over-billing.Code examplescurlpythonnode.jscurl -X POST https://api.anchorgrid.ai/v1/drawings/detection/doors \ -H “X-API-Key: ” \ -H “Content-Type: application/json” \ -d ‘{ “document_id”: “550e8400-e29b-41d4-a716-446655440000”, “page_numbers”: [1, 2, 3] }’Response — 202 AcceptedThe job is enqueued immediately. Poll GET /v1/jobs/{job_id} until status is complete or failed.job_idstring (UUID)Use this to poll for results.statusstringAlways queued on this response.poll_urlstringPath only — prepend https://api.anchorgrid.ai to build the full URL.Result shapeWhen status === “complete” and model === “door-detector”, the result field on the job contains:document_idstringUUID of the source document.doorsarrayFiltered list of door detections. Each item has id, page, and bbox.doors[].idstringStable identifier — “door_” + 12 hex chars.doors[].pageinteger1-based PDF page index where the door was detected.doors[].bboxobjectAxis-aligned bounding box in PDF coordinate space: x1, y1, x2, y2.doors_foundintegerCount of items in doors after server-side geometry filtering.pages_analyzedintegerNumber of pages the worker actually scanned.model_versionstringe.g. door-detector-v1.0.0processing_time_msintegerWall time for the inference task.ℹThe doors list is post-filtered by a geometry and median-area pipeline before being returned. doors_found always reflects the filtered count — raw unfiltered counts are not exposed.Credits & rate limitsCost2 credits × pages billedRate limitTier RPM (5 / 60 / 120 / 300)freeLifetime credit cap — 402 FREE_TIER_LIMIT_REACHED when exceeded.developer / proMonthly pool — 429 QUOTA_EXCEEDED when exceeded.enterpriseNo quota check.Rate-limit 429s include retry_after_seconds in the body. Quota 429s and rate-limit 429s return the same status code — check the error body to distinguish them.Errors401Missing or invalid X-API-Key.402Free tier lifetime credit cap reached.404document_id not found or expired.422Validation error — malformed UUID or invalid body.429Rate limit or monthly quota exceeded.Response Preview202 Acceptedresult (complete)202 OK{ “job_id”: “7c9e6679-7425-40de-944b-e07fc1f90ae7”, “status”: “queued”, “poll_url”: “/v1/jobs/7c9e6679-7425-40de-944b-e07fc1f90ae7” }ANCHORGRIDdevNAVIGATIONHomeAnchorGrid SuiteOVERVIEWIntroductionQuick StartAuthenticationBLOGAll postsAnchorGrid Back StoryENDPOINTSPOST/documentsPOST/drawings/detection/doorsCorePOST/drawings/detection/elevationPOST/drawings/schedulesPOST/specs/parse/documentPOST/specs/content-extractGET/v1/jobs/{job_id}