We collect minimal analytics to understand how the site is used. If you decline, we do not load analytics.
Docs/Endpoints/POST /drawings/classify
POST/v1/drawings/classify

Classifies every page of a drawing set — identifying drawing numbers, titles, drawing types (floor plan, elevation, schedule, etc.), CSI divisions, scope, and floor level. Returns a structured index grouped by drawing type. This is an async job — submit and poll.

Drawing setsAsync · 202See pricing

Example run

Request

This endpoint requires a document_id. Upload your PDF first →

Auth via Authorization: Bearer <api_key> header. Body is JSON.

document_idreq
string (UUID)
ID from POST /v1/documents. Must belong to this account and not be expired.
page_numbers
integer[]
1-based page list. Omit to classify all pages.
webhook_url
string
URL to POST the completed job payload to. Delivered on developer, pro, and enterprise tiers only.

See pricing for current endpoint credit usage. Pricing is applied at job submission regardless of page count.

Code examples

curl -X POST https://api.anchorgrid.ai/v1/drawings/classify \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "document_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  }'

Response — 202 Accepted

The job is enqueued immediately. Poll GET /v1/jobs/{job_id} until status is complete or failed.

job_id
string (UUID)
Use this to poll for results.
status
string
Always queued on this response.
poll_url
string
Path only — prepend https://api.anchorgrid.ai to build the full URL.

Result shape

When status === "complete", the result field on the job contains:

pages_analyzed
integer
Total pages processed.
model_version
string
e.g. page-classifier-v2.0.0
processing_time_ms
integer
Wall time for the classification task.
by_drawing_type
object
Page numbers grouped by drawing type — the fastest way to find all floor plans, schedules, etc. without iterating the full pages array.
pages[].page_number
integer
1-based page index.
pages[].drawing_number
string
Sheet number as printed (e.g. A-101, E-201).
pages[].title
string
Drawing title as printed on the sheet.
pages[].document_type
string
Discipline — ARCHITECTURAL, ELECTRICAL, MECHANICAL, etc.
pages[].drawing_type
string
Sheet category — FLOOR_PLAN, ELEVATION, SCHEDULE, SECTION, DETAIL, GENERAL, etc.
pages[].division
object
CSI MasterFormat division with code and name fields.
pages[].scope
string[]
Key elements visible on the page.
pages[].floor
string
Floor or level reference (Level 1, Roof, etc.) — empty string if not applicable.
pages[].description
string
Plain-English summary of the page content.

Use by_drawing_type to quickly locate all sheets of a given type. Iterate pages only when you need per-page metadata like drawing numbers, titles, or CSI divisions.

Credits & rate limits

Cost
See pricing
Typical time
~2–3 min / 130 pages
free
Lifetime credit cap — 402 FREE_TIER_LIMIT_REACHED when exceeded.
developer / pro
Monthly pool — 429 QUOTA_EXCEEDED when exceeded.
enterprise
No quota check.

Errors

404
DOCUMENT_NOT_FOUND
document_id doesn't exist or has expired.
402
FREE_TIER_LIMIT_REACHED
Out of credits — upgrade required.
429
QUOTA_EXCEEDED
Monthly credit limit hit.

Response Preview

202 OK
{
  "job_id": "8d4eda21-d444-4556-9c1f-fe050c673008",
  "status": "queued",
  "poll_url": "/v1/jobs/8d4eda21-d444-4556-9c1f-fe050c673008"
}