
Which file formats can I upload?
CAD files: DWG, DXF, DWF, DGN
Image files: PNG, TIFF, JPG, JPEG, BMP, EMF, GIF
The file must have a valid extension in its name — a file without an extension (or with a wrong one) will not be processed.
What's the difference between the AI Search API and the Core Platform API?
The AI Search API (/api/ai-search/v1/takeoff2D) automatically detects elements — walls, doors, windows, rooms — on a drawing you upload. The Core Platform API (/api/general/v1/takeoff2D) works with regular Kreo Takeoff projects: it reads the measurements and groups created in the app and exports PDFs. They have separate base URLs but use the same API key.
How do I authenticate?
Pass your API key in the X-API-KEY header with every request. Keys are created on the Key Management page in Kreo.
I lost my API key. Can I see it again?
No — for security reasons the key is displayed only once, when it is created. If you've lost it, create a new key and update your integration.
What do the statuses Ready, Calculating, and Failed mean?
Calculating — Kreo is still processing. For projects this often happens when a CAD file needs conversion; for search jobs it means the AI is still analyzing the drawing. Poll the status endpoint until it changes.
Ready — processing finished successfully. Project operations (like setting the scale) and result retrieval are now available.
Failed — processing could not be completed. Check that the file is valid and readable; if the problem persists, contact support.
My project is stuck in Calculating. What should I do?
Large or complex files (especially CAD) can take a while to convert. Keep polling GET /projects/{projectId}/status at a reasonable interval. If a project stays in Calculating for an unusually long time, contact support with your projectId.
Can I analyze a multi-page PDF with the AI Search API?
Each AI Search project processes exactly one page. Use pageIndex (zero-based) when creating the project to pick the page, and create a separate project for each page you want to analyze. The file only needs to be uploaded once — you can reuse the same fileKey.
How long is a fileKey valid?
The fileKey returned by the upload endpoint is a temporary identifier and remains valid for the duration of the upload session. Upload the file and create your project(s) in the same workflow rather than storing file keys for later use.
My measurements don't match real-world dimensions. Why?
The most common cause is a missing or incorrect scale. The scale converts pixel measurements into real-world units. For a 1:100 drawing, set drawingCalibrationLineLength to 1 and originalCalibrationLineLength to 100. You can set the scale when creating a project or update it later with PUT /projects/{projectId}/scale (only while the project status is Ready).
What units are the results in?
Coordinates (p1, p2, points) are in pixels relative to the source file. Lengths, thicknesses, and perimeters are in meters; areas are in square meters — calculated from your calibrated scale.
The AI missed some elements or found false positives. What can I do?
Increase the DPI. Try 450 or 600 instead of the default 300 — higher resolution helps on dense or detailed drawings.
Filter by confidence. Add the confidence query parameter (0 to 1) when fetching results to filter out low-confidence detections.
Narrow the search area. Use cropBox to limit the search to the relevant part of the sheet and avoid noise from title blocks, legends, and annotations.
How do I search for a specific named area like GIA or GEA?
Use type: "polygon" together with the text parameter — for example "text": "GEA" finds the polygon labeled as gross external area. The text parameter is required for polygon searches and must be omitted for all other types.
What does includeWalls do?
It's available only for type: "space" searches and extends the detected space boundaries to the wall center lines — useful when your measurement convention includes half of the surrounding wall thickness.
Contact our team at [email protected] or via the in-app chat — include your projectId and, for search issues, the jobId, and we'll help you out. Full API documentation: kreo-software.readme.io.