Private pilot API
Convert. Check. Compile.
Asynchronous model jobs with explicit verification boundaries.
This is the current development contract, not an announcement of unrestricted public API availability. The compiler API is not yet deployed. Pilot access and the API base URL will be provisioned individually. The landing page does not accept model uploads.
Authentication and admission
Send your issued HouseIR key in Authorization: Bearer … on every job, status and artifact request. No AI-provider key is required. Keep keys on your server, not in browser code. Examples use HOUSEIR_API_URL for your assigned HTTPS base URL.
POST /v1/jobs
Authorization: Bearer YOUR_HOUSEIR_KEY
Content-Type: application/jsonThe JSON object accepts only operation, ifc_base64, bir and residual_base64, as applicable below. A successful admission returns HTTP 202 with a job record, including its id and status. Admission is not successful compilation.
1. Convert IFC into BIR
{
"operation": "convert",
"ifc_base64": "BASE64_ENCODED_IFC_BYTES"
}Successful conversion provides model.bir, residual.hir and report.json. Keep the BIR and residual together. The signed residual preserves source information and is bound to your customer identity; it is not an interchangeable plain JSON document.
Conversion checks exact text and semantic round trips and supported lifted geometry. Opaque statements retain source data but are not certified as editable geometry. Unsupported verification can cause the whole job to fail.
2. Check edited BIR
{
"operation": "check",
"bir": "YOUR_BIR_TEXT"
}Read valid and problems in the resulting report.json. This checks language and references only. It does not certify IFC validity, geometry, engineering design or the success of a later compile.
3. Compile an edit back into IFC
{
"operation": "compile",
"bir": "YOUR_EDITED_BIR_TEXT",
"residual_base64": "BASE64_ENCODED_RESIDUAL_HIR_BYTES"
}Successful compilation provides model.ifc and report.json. The original signed residual is required. The supported edit scope is agreed during the pilot; language expressiveness does not imply every operation is hosted and verified.
new is present in the development interface but certified hosted fresh-model generation is not released. Do not integrate it as an available operation.
Poll and download
GET /v1/jobs/{id}
GET /v1/jobs/{id}/artifacts/report.json
GET /v1/jobs/{id}/artifacts/model.bir
GET /v1/jobs/{id}/artifacts/residual.hir
GET /v1/jobs/{id}/artifacts/model.ifc
GET /v1/jobs/{id}/artifacts/diagnostic.jsonJob IDs are 32 lowercase hexadecimal characters. Poll the returned record: accepted and running are pending; verified means a convert or compile completed its scoped checks; checked means a language check completed (read its valid value). failed, unsupported, verification_failed, timed_out and expired require handling. Download only the names listed in that record's artifacts. Failed jobs expose diagnostics when available, not a successful IFC artifact.
curl --fail-with-body "$HOUSEIR_API_URL/v1/jobs/$JOB_ID" \
-H "Authorization: Bearer $HOUSEIR_API_KEY"
curl --fail-with-body \
"$HOUSEIR_API_URL/v1/jobs/$JOB_ID/artifacts/report.json" \
-H "Authorization: Bearer $HOUSEIR_API_KEY" \
--output report.json
Limits and retention
| Boundary | Current default |
|---|---|
| Decoded IFC input | 40 MiB (41,943,040 bytes) |
| BIR UTF-8 input | 10 MiB (10,485,760 bytes) |
| Total JSON request | 150 MiB; individual input limits still apply |
| Execution window | Up to 30 minutes from admission |
| Model-data retention | One hour from admission; download before expiry |
| Concurrency | One admitted compiler job per instance; busy requests receive 429 |
Content-free usage metadata may be retained for 90 days. These are processing limits, not promises that every model under the limit succeeds. Geometry complexity and representation support matter.
| HTTP response | Meaning |
|---|---|
| 401 | Missing, invalid or revoked API key |
| 404 | Unknown job or unavailable artifact; other customers' jobs are not exposed |
| 410 | Requested job artifacts have expired |
| 413 | Total request exceeds its limit |
| 422 | Invalid fields, encoding, operation inputs or input size |
| 429 | Compiler busy; honor Retry-After: 10 |
What the report proves
The report records the operation, provenance and performed checks. Where supported, geometry verification requires a bound strictly below 1 mm, including applicable approximation allowances. Compile checks untouched semantic preservation and new schema problems within the reported validation scope.
Whole-model attribute/schema checks do not constitute full-model EXPRESS or normative validation. Edits also check a bounded touched-product EXPRESS subset. Geometry reference regeneration uses the same compiler with independent edit placement checks; it is not an independent whole-model intent oracle.
HouseIR does not certify engineering safety, building-code compliance, constructability or complete design intent. A pilot must include independent review in the partner's target software. Treat omitted or refused checks as unsupported, never as passed.
IFC interoperability
IFC is the pilot exchange format. Verify import behavior in the software and version you intend to support. IFC import into a proprietary authoring tool is different from creating fully editable native elements. No open-source IFC-to-RVT conversion, native RVT round trip or universal format conversion is promised by this API.
Inspect a scripted MEP edit
Download the synthetic MEP demo ZIP to inspect the before/after artifacts and reports. The script extends a straight pipe from 1,000 to 1,400 mm and checks preservation of its GlobalId, ports, system and neighboring element. This is a scripted compiler evaluation, not an AI-generated edit or proof of general MEP coverage. Bent-fitting editing is explicitly refused.
Start a pilot
Tell us your target software, representative model sizes and requested edits. We will agree supported operations, independent review and acceptance criteria before a proposed $500 scoped pilot begins.
Development contract · October 4, 2026. Latest frozen-release targeted evaluation: 78 passed, zero failed, zero skipped in 55.88 seconds. The full suite and broader corpus evaluations remain pending.