Takeoff API for construction platforms
Add quantity takeoff to your platform in a sprint.
Post a drawing set. Get back walls, doors, windows and spaces as structured JSON with real-world measurements, rendered in your viewer, under your brand, billed by the page.
Request a sandbox key
Read the docs →
Opens an email. Keys are issued by hand, same working day.
Async + signed webhooks
Versioned schema
We never sell to your users
request
response
webhook
POST
/v1/takeoffs
Authorization: Bearer sk_live_…
Idempotency-Key: bid-4471
{
"source"
: {
"type"
:
"uploaded_file"
,
"file_id"
:
"file_01h…"
},
"options"
: {
"output"
: [
"detections"
,
"metrics"
],
"pages"
: [
3
],
"units"
:
"imperial"
},
"webhook_url"
:
"https://you.com/hooks/qt"
}
Why platforms pick an engine
We don't ship an app that competes with you.
There is no QuantTakeOff seat for an estimator to buy, no dashboard for your customer to log into, and no logo in your interface. The only way to use this is through your product.
You keep the customer
No end-user product, no seats sold into your accounts, no attribution in your UI. Contractually, not just currently.
You keep the interface
Geometry returns in page-pixel space against a stated image size. You render it in the viewer you already built.
You keep the data
Private buckets, signed URLs, no training on partner drawings, deletion on request with a dated confirmation.
Integration
Upload, create, receive.
No SDK to adopt and no callback ordering to reverse-engineer. Signed uploads keep large drawing sets out of your request path.
Step 01
Get an upload URL
Declare the file, PUT it straight to private storage. Multipart works too, under 25 MiB.
POST /v1/uploads
→ upload_url, file_id
Step 02
Create the takeoff
Pick pages, units, and outputs. Pin a region if your user already drew one.
POST /v1/takeoffs
→ id, status: "queued"
Step 03
Receive the result
Signed webhook on completion, or poll. Results and assets by signed URL.
takeoff.succeeded
→ GET …/results
The response
Detections, metrics, assets.
One object per page, in that page's pixel space, with the image size you measure against. Metrics roll up across the set in metric or imperial.
page_index 0 · image_size 2480 × 3508
"pages"
: [{
"page_index"
:
0
,
"image_size"
: {
"width"
:
2480
,
"height"
:
3508
},
"scale"
: {
"meters_per_pixel"
:
0.0169
},
"detections"
: [{
"id"
:
"det_001"
,
"class_name"
:
"wall"
,
"score"
:
0.96
,
"bbox": [120.0, 80.0, 620.0, 115.0],
"coordinate_space": "page_pixels"
}]
}],
"metrics": {
"wall_count": 37,
"gross_floor_area_m2": 142.3,
"total_wall_length_m": 91.4
}
Accuracy
Up to 98% accuracy on walls, doors and windows.
Measured as the share of detections an estimator accepts without correcting the geometry or the class. Element-wise figures, broken out per class and per drawing type, follow when that run is complete.
Built for production
The boring parts are done.
Safe retries
Retry a submission after a timeout without risking a duplicate job or a duplicate charge.
Signed webhooks
Every callback is signed and replay-protected, so you can verify it came from us before you act on it.
Explicit job states
A job reports a state you can render directly in your own UI. Cancellable mid-flight, pollable throughout.
Page selection
Send the whole set, process the pages you need. Only those render, so you pay for what you asked for.
Region pinning
Your user drags a box in your viewer; detection stays inside it.
Versioned schema
Every result is versioned, and breaking changes are dated and announced before they land.
Signature construction, state names, error semantics and field-level schema are in the docs.
Pricing
Metered by the page. Cheaper as you grow.
Sandbox
Free
100 pages a month · no card
Full schema, full outputs, rate-limited. Test with your own drawings before any commercial conversation.
Request a key
Growth
Contact sales
per-page rate · monthly minimum
Production keys, webhooks, all outputs. Volume discounts apply automatically at each tier.
Contact sales
Platform
Custom
committed volume · annual
Rate card by volume, uptime SLA, reserved GPU capacity, region choice, DPA and security review.
Talk to engineering
A page is one rendered sheet you asked us to process. Unrequested pages in a PDF are never charged. 3D reconstruction and generated reports are priced as separate line items.
Data handling
Your customers' drawings stay your customers'.
Partner data is never used for training. Not by default, not with opt-out, not at all.
Full detail, subprocessor list and DPA on the security page →
No training on partner data
Written into the agreement, not a settings toggle.
Private storage, signed access
Buckets are never public. Every result URL is short-lived and scoped.
Deletion on request
Per job or per customer, with a dated confirmation you can pass on.
Scoped keys and audit trail
Keys are hashed at rest. Every job is attributed to a customer.
Send us a drawing set and see what comes back.
Ask for a sandbox key and one comes back the same working day. If you'd rather start by asking whether this fits your stack, that's a conversation with an engineer, not a demo.
QuantTakeOff
Quantity takeoff infrastructure for construction software platforms.
© 2026 QuantTakeOff