DuctIQ
Guide

How to Automate HVAC Takeoffs With an API

HVAC Takeoff Guides · · 8 min read

Start your free takeoffHow AI HVAC takeoff works

Plenty of mechanical contractors have already automated the back half of estimating. Their pricing platform knows the rate card, applies labour units and produces a bid in seconds. The front half is still manual: someone opens the drawing set, does the takeoff or uploads it to a tool, and re-keys the quantities. That handoff is where time goes and where transcription errors creep in.

An HVAC takeoff API closes the gap. Your system sends the drawings, gets the takeoff back as structured data, and prices it with no re-keying. This guide walks through what that pipeline looks like, step by step, using the DuctIQ API as the worked example, and where a person should stay in the loop.

What an automated takeoff pipeline looks like

The shape is the same whatever platform you run. Drawings arrive, a takeoff runs without anyone touching a mouse, and quantities land in your pricing engine already structured by system, size and item type. The estimator's time moves from measuring to reviewing.

Step 1: Get a key and quote the set

With DuctIQ you create an account, add credits, and create an API key in Settings under API Keys. The key is shown once, so store it like a password, and send it as a bearer token on every request.

Before running anything, send the PDF to the quotes endpoint. It reads the set, classifies every page as a plan, schedule, legend, detail, specification or other sheet, and returns the exact credit price. Nothing is stored or charged. Quoting first matters for automation: your system can check the price against a budget, pick only the mechanical plan sheets you need, and skip sets that contain no plan sheets at all.

Start your free takeoffOr download a real sample takeoff first

Step 2: Start the takeoff, safely

Starting a takeoff is a single multipart upload with the drawing set. You can add the page numbers to measure, a project name, and the project specification as a second PDF, which is used for gauge, lining and pressure class. The API answers immediately with a takeoff id rather than holding the connection open.

The detail that makes automation safe is idempotency. Send a clientRequestId with every takeoff, such as your own bid or job id. If a network error makes your system retry, the same id never starts or charges a second takeoff; the API returns the original one instead. Without that, a flaky connection can turn one bid into two bills.

Step 3: Poll for status, then pull the line items

A takeoff usually takes a few minutes per plan sheet, and takeoffs can queue at busy times. Your system polls the takeoff's status, no more than every 10 seconds, and reads the progress, the current stage and an estimated time remaining while it runs. When the status is ready, fetch the line items; if it is error, the response says why.

Each line item carries the system, category, description, size, shape, quantity and unit, the sheet it came from, and a confidence value. Gauge, material, lining and pressure class are filled in where the drawings or specification give them, and equipment rows add the manufacturer, model, tonnage, CFM and voltage from the schedules. If your team would rather price in a spreadsheet, the same takeoff is available as an Excel workbook.

Step 4: Map line items to your rate card

This is where the payoff lands. Because every row is structured, mapping is a lookup rather than a reading exercise. Ductwork maps on system, shape, size and gauge to a cost per linear foot or per pound. Fittings and air devices map on type and size to a unit price. Equipment maps on manufacturer and model, or on tonnage and CFM when the exact model is not in your book.

Keep the sheet reference on every priced line. When a project manager or a general contractor questions a number, you can point to the exact drawing it came from, and you can rerun or correct a single sheet without redoing the whole bid.

Keep a person in the loop

Automating the takeoff does not mean bidding blind. AI takeoffs are estimates, and accuracy depends heavily on the drawing: clean vector PDFs exported from CAD read far better than scans. A good API tells you where it is unsure instead of hiding it in a total.

In the DuctIQ API, every row has a status. Clean rows can flow straight to pricing. Review rows need a person to check them against the drawing, and their flags say why. Out-of-scope rows, such as gas piping and demolition, are listed separately so they are never priced as HVAC. A takeoff that had to fall back to a weaker reader is marked as degraded. Route the review rows and degraded takeoffs to an estimator, and let the clean rows through.

DuctIQ HVAC takeoff APIAPI documentation

What it costs to run

DuctIQ's API uses the same credits and per-sheet rate as the web app. You pay for mechanical plan sheets, priced by how dense the ductwork is, while legends, schedules, details and specifications are read at no charge. Because the quote is free and exact, your system always knows the price of a set before it commits, and a takeoff the balance cannot cover is refused before it starts.

For most teams the better comparison is not the credit price but the estimator hours it frees. If someone currently spends part of every bid measuring duct and re-keying quantities, that time can move to reviewing flagged items and winning work.

Run your first takeoff free

Upload a mechanical PDF and get a reviewable ductwork, fittings, and equipment takeoff you can export to Excel. No credit card to try your first drawing.

Built by a practicing P.Eng and principal of an Ontario mechanical contracting firm, for the estimators at that firm.

Start your free takeoff Download a sample takeoff See pricing

New to AI takeoff and want a hand? Send us your first drawing and we'll help you review the output, or book a 1:1 walkthrough.

Keep reading

Frequently asked questions

Can HVAC takeoffs be fully automated?

The measuring and data entry can be. Drawings go in, structured quantities come out, and clean line items can flow straight into pricing. A person should still review the rows the takeoff flags for review before the bid goes out, because AI takeoffs are estimates and drawing quality varies.

Does the DuctIQ API send webhooks?

No. Version 1 uses polling: you start a takeoff, then check its status no more than every 10 seconds until it is ready or reports an error. The status includes progress and an estimated time remaining.

What format does an HVAC takeoff API return?

DuctIQ returns JSON line items with system, size, shape, quantity, unit, the source sheet and a confidence value, plus equipment details from the schedules. The same takeoff is also available as an Excel workbook.

How do I avoid paying twice if my system retries?

Send a clientRequestId with each takeoff. Retrying with the same id never starts or charges a second takeoff; the API returns the original one instead.

Compare DuctIQ