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 · 2021 credit / job

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.

Credits are charged at job submission — 1 credit per job 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
1 credit per job
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"
}