Building Owners
Manage building owners (customers) and their resources. Building owners are the top-level organisational entity — each owns one or more buildings.
List Building Owners
/building_ownersList all building owners accessible to your API key. Results are paginated.
Authentication
x-api-key header
next_tokenstringPagination token — pass the nextToken value from a previous response
Examples
curl -H "x-api-key: YOUR_API_KEY" \
https://api.findable.ai/building_owners200Success401Missing or invalid API key
All endpoints may also return 429 (rate limit) and 500 (server error). See Common Patterns for details.
buildingOwnersBuildingOwner[]Array of building owner objectsbuildingOwners[].idstringUnique identifierbuildingOwners[].namestringDisplay namebuildingOwners[].createdAtstringISO 8601 creation timestampbuildingOwners[].updatedAtstringISO 8601 last update timestampnextTokenstring | nullToken for the next page, null if this is the last page
Response
{
"buildingOwners": [
{
"id": "cust-456",
"name": "Barcode Properties AS",
"createdAt": "2024-03-10T09:00:00Z",
"updatedAt": "2025-11-15T12:30:00Z"
}
],
"nextToken": null
}Create Building Owner
/building_ownersCreate a new building owner.
Authentication
x-api-key header
namestringrequiredDisplay name for the building owner
Request Body Example
{ "name": "Barcode Properties AS" }201Building owner created400Invalid request body401Missing or invalid API key403API key lacks permission
All endpoints may also return 429 (rate limit) and 500 (server error). See Common Patterns for details.
idstringUnique identifier for the newly created building owner
Response
{ "id": "cust-789" }Get Building Owner
/building_owners/{buildingOwnerId}Get a single building owner by ID.
Authentication
x-api-key header
buildingOwnerIdstringBuilding owner ID
200Success401Missing or invalid API key404Building owner not found
All endpoints may also return 429 (rate limit) and 500 (server error). See Common Patterns for details.
idstringUnique identifiernamestringDisplay namecreatedAtstringISO 8601 creation timestampupdatedAtstringISO 8601 last update timestamp
Response
{
"id": "cust-456",
"name": "Barcode Properties AS",
"createdAt": "2024-03-10T09:00:00Z",
"updatedAt": "2025-11-15T12:30:00Z"
}Update Building Owner
/building_owners/{buildingOwnerId}Update building owner details.
Authentication
x-api-key header
buildingOwnerIdstringBuilding owner ID
namestringUpdated display name
Request Body Example
{ "name": "Barcode Properties ASA" }200Building owner updated400Invalid request body401Missing or invalid API key403API key lacks permission404Building owner not found
All endpoints may also return 429 (rate limit) and 500 (server error). See Common Patterns for details.
idstringUnique identifiernamestringUpdated display namecreatedAtstringISO 8601 creation timestampupdatedAtstringISO 8601 last update timestamp
Response
{
"id": "cust-456",
"name": "Barcode Properties ASA",
"createdAt": "2024-03-10T09:00:00Z",
"updatedAt": "2025-12-01T08:15:00Z"
}Delete Building Owner
/building_owners/{buildingOwnerId}Delete a building owner and all associated resources.
Authentication
x-api-key header
buildingOwnerIdstringBuilding owner ID
200Building owner deleted401Missing or invalid API key403API key lacks permission404Building owner not found
All endpoints may also return 429 (rate limit) and 500 (server error). See Common Patterns for details.
successbooleanAlways true on success
Response
{ "success": true }Processing Status
/building_owners/{buildingOwnerId}/statusGet the aggregate processing status across all buildings for a building owner.
Authentication
x-api-key header
buildingOwnerIdstringBuilding owner ID
200Success401Missing or invalid API key404Building owner not found
All endpoints may also return 429 (rate limit) and 500 (server error). See Common Patterns for details.
total_documentsnumberTotal number of documentsprocessed_documentsnumberNumber of documents that have been processedcategorized_documentsnumberNumber of documents that have been categorisedextracted_percentagenumberPercentage of documents with extracted text (0-100)categorized_percentagenumberPercentage of documents that are categorised (0-100)extracted_textbooleanWhether text extraction is completeextracted_filebooleanWhether file extraction is completeuncompressed_packagebooleanWhether package decompression is completevalid_filebooleanWhether the file is validinvalid_filebooleanWhether any files are invalidcategorisedbooleanWhether categorisation is completeskip_extract_filebooleanWhether file extraction was skippedtext_extraction_errorbooleanWhether a text extraction error occurred
Response
{
"total_documents": 5200,
"processed_documents": 5100,
"categorized_documents": 4980,
"extracted_percentage": 98,
"categorized_percentage": 96,
"extracted_text": true,
"extracted_file": true,
"uncompressed_package": true,
"valid_file": true,
"invalid_file": false,
"categorised": true,
"skip_extract_file": false,
"text_extraction_error": false
}Search Across Buildings
/building_owners/{buildingOwnerId}/searchSearch documents across all buildings for a building owner.
Authentication
x-api-key header
buildingOwnerIdstringBuilding owner ID
querystringrequiredSearch querymax_resultsnumberMaximum results (default: 10)start_indexnumberOffset for pagination (default: 0)
Examples
curl -H "x-api-key: YOUR_API_KEY" \
"https://api.findable.ai/building_owners/cust-456/search?query=fire+safety&max_results=5"200Success401Missing or invalid API key404Building owner not found
All endpoints may also return 429 (rate limit) and 500 (server error). See Common Patterns for details.
hitsSearchHit[]Array of matching documentshits[].idstringDocument IDhits[].buildingIdstringBuilding the document belongs tohits[].filenamestringDocument filenamehits[].titlestringDocument titlehits[].buildingCategorystringAssigned building categoryhits[].disciplinestringDocument disciplinehits[].isDrawingbooleanWhether the document is a drawinghits[].md5ChecksumstringMD5 checksum of the filehits[].originalCreatedAtstringOriginal creation date from the file metadatahits[].originalPathstringOriginal file pathhits[].sizenumberFile size in byteshits[].informationTypestringPrimary information typehits[].informationTypesstring[]All assigned information typeshits[].createdAtstringISO 8601 creation timestamphits[].updatedAtstringISO 8601 last update timestamphits[].externalIdsRecord<string, string>External system IDs (e.g. Plania)numberOfHitsnumberTotal number of matching documents
Response
{
"hits": [
{
"id": "doc-1",
"buildingId": "bld-789",
"filename": "fire-safety-report.pdf",
"title": "Fire Safety Assessment 2025",
"buildingCategory": "Fire Safety",
"discipline": "Fire",
"isDrawing": false,
"md5Checksum": "a3f2b8c1e9d04567890abcdef1234567", // pragma: allowlist secret
"originalCreatedAt": "2025-01-10T08:00:00Z",
"originalPath": "/reports/fire-safety/",
"size": 2048576,
"informationType": "Report",
"informationTypes": ["Report", "Assessment"],
"createdAt": "2025-01-15T10:30:00Z",
"updatedAt": "2025-06-20T14:00:00Z",
"externalIds": {}
}
],
"numberOfHits": 156
}