Below is a real DWG drawing put through the production parser and returned as schema 2.0.0 JSON: 1 sheet, 4 layers, 2,096 entities in mm. Walk the hierarchy, click any element, and read the exact object your code would receive.
Source: panoramic-elevator.dwg (DWG AC1032) · parser 2.3.0 · schema 2.0.0 · parsed in 2.68s. The drawing above is rendered in your browser from the JSON alone — CADLens also returns a server-rendered PNG for the same sheet.
A parse result is a tree. Each level is independently queryable, which is what lets an application — or an agent — ask for exactly the slice it needs instead of loading the whole drawing.
file panoramic-elevator.dwg · DWG AC1032 · units mm
└─ sheets 1 · name, index, boundingBox, area, perimeter
└─ layers 4 · 0, WALL, hatch, axes
└─ entities 2,096 · LINE 1986 · LWPOLYLINE 11 · ARC 62 · CIRCLE 10 · TEXT 2 · HATCH 25
├─ geometry coordinates at original CAD precision
├─ bbox minX, minY, maxX, maxY
└─ metrics length, area, perimeter, vertexCountExtents for this drawing come back as 5548.0 × 3194.4 mm, with per-entity bbox and metrics computed in the same units — no scale-factor guessing on your side.
The explorer above reads a static copy of a result. In your own code the same payload comes from two calls — upload, then fetch the result once the job completes (or let a webhook tell you):
curl -X POST https://api.cadlens.co/v1/parse \ -H "Authorization: Bearer $CADLENS_KEY" \ -F "[email protected]" \ -F "mode=async" # → { "job_id": "job_...", "status": "PENDING" } curl https://api.cadlens.co/v1/jobs/$JOB_ID/result \ -H "Authorization: Bearer $CADLENS_KEY"
Small files can skip the poll entirely with mode=sync. Full request and response reference, including webhooks and error codes, is in the API documentation. You can also download the source drawing and run it through your own account to compare byte-for-byte with the bundled result.
Sign in with Google or GitHub, create a key, and send your first file. The free plan includes 50 parses per month with no credit card.