Pull Unit & Floor Plan Data
Fetch units, floor plans, and external PMS identifiers
Overview:
This pages provides documentation and step by step instructions on how to establish the relational foundation required for inventory synchronization and cross-system data mapping.
- Base URL: https://api.sightmap.com/v1
- Auth: Pass your API key in the header as “API-Key: {your_key}”
- All endpoints below are scoped to a single asset. Replace {asset_id} with the Engrain asset ID.
Pay attention to the required experimental flags in the API documentation.
Data Model:
- An asset has floor plans and units. Every unit belongs to exactly one floor plan via its floor_plan_id field.
How to retrieve floor plan and unit data
Step 1: Pull Units
Make a call to GET: List units - to ingest all units for the asset.
Example response: assets/7778/multifamily/units
"data": [
{
"id": "2879571",
"asset_id": "7778",
"building_id": "49250",
"floor_id": "32787",
"floor_plan_id": "474554",
"provider_group_id": null,
"map_id": "2879571",
"unit_number": "1101",
"label": "1101",
"area": 1161,
"is_affordable_housing_unit": false,
"address_line1": null,
"address_line2": null,
"address_city": null,
"address_state": null,
"address_country": null,
"address_postal_code": null,
"view_image_url": "https://cdn.sightmap.com/assets/e8/yw/e8ywk1eqplx/39/d0/39d09f18d19aa556432a1451806c1f19.jpg",
"secondary_view_image_url": "https://cdn.sightmap.com/assets/e8/yw/e8ywk1eqplx/0d/e2/0de2bcee4dc312d78f134fc01ebccff9.jpg",
"created_at": "2020-11-09T15:58:33+00:00",
"updated_at": "2025-10-28T16:49:05+00:00"
},
{
"id": "2879572",
"asset_id": "7778",
"building_id": "49250",
"floor_id": "32787",
"floor_plan_id": "474544",
"provider_group_id": null,
"map_id": "2879572",
"unit_number": "1102",
"label": "1102",
"area": 714,
"is_affordable_housing_unit": false,
"address_line1": null,
"address_line2": null,
"address_city": null,
"address_state": null,
"address_country": null,
"address_postal_code": null,
"view_image_url": "https://cdn.sightmap.com/assets/e8/yw/e8ywk1eqplx/21/fb/21fb24f0d18b3561be939fead104649a.jpg",
"secondary_view_image_url": "https://cdn.sightmap.com/assets/e8/yw/e8ywk1eqplx/25/be/25becd14b0dd56e96911a0f165ce880c.jpg",
"created_at": "2020-11-09T15:58:33+00:00",
"updated_at": "2025-10-28T16:49:05+00:00"
}, The fields you care about
- id: The unit’s unique ID. Use this to join to unit expense entries.
- floor_plan_id: The floor plan this unit belongs to. Use this key to join units to floor plans and floor plans to expenses.
- asset_id: The parent asset.
Step 2: Pull Floor Plans
Make a call to GET: List floor plans - to ingest all floor plans for the asset.
Example response: assets/7778/multifamily/floor-plans
"data": [
{
"id": "133265",
"asset_id": "7778",
"name": "B1",
"filter_label": "B1",
"bedroom_count": 2,
"bathroom_count": 2,
"show_bedroom_count": true,
"show_bathroom_count": true,
"show_unit_area": true,
"provider_id": null,
"provider_group_id": null,
"image_url": "https://cdn.sightmap.com/assets/e8/yw/e8ywk1eqplx/94/a4/94a4cfeed2a283563fedca6803f12df6.jpg",
"secondary_image_url": "https://cdn.sightmap.com/assets/e8/yw/e8ywk1eqplx/3a/4f/3a4fae12b128e721bcc72295f4c5bd7a.jpg",
"updated_at": "2024-07-18T16:18:41+00:00",
"created_at": "2020-11-09T15:58:33+00:00"
},
{
"id": "133266",
"asset_id": "7778",
"name": "A1",
"filter_label": "A1",
"bedroom_count": 1,
"bathroom_count": 1,
"show_bedroom_count": true,
"show_bathroom_count": true,
"show_unit_area": true,
"provider_id": null,
"provider_group_id": null,
"image_url": "https://cdn.sightmap.com/assets/e8/yw/e8ywk1eqplx/9c/67/9c673706b34632da1a95bf1058c1389a.jpg",
"secondary_image_url": "https://cdn.sightmap.com/assets/e8/yw/e8ywk1eqplx/f4/44/f444b00b336a01380a895e4b772f0111.jpg",
"updated_at": "2024-07-18T16:16:56+00:00",
"created_at": "2020-11-09T15:58:33+00:00"
},The fields you care about:
- id: The floor plan’s unique ID. Units point to this via floor_plan_id.
- asset_id: The parent asset.
- filter_label: The clean display name shown to end users.
- provider_id: The PMS-side floor plan ID. Unique within the asset.
Step 3 (If Necessary): Pull Unit References
This is a two-call process. References are grouped by PMS integration, so you first pull the groups, then pull the references within each group.
Make a call to GET: List groups - to return the list of PMS integrations that have reference codes on this asset..
Access our Reference API Guide to get further details and guidance about our References API.
Some assets have one group, some have multiple - but you will just need to find the unit references for the PMS that you use for this property. Some assets have zero (no PMS integration) or more than one (multiple PMS feeds).
Example response: assets/7778/multifamily/units/reference-groups
"data": [
{
"id": "39275",
"asset_id": "7778",
"name": "[SALES DEMO] The Milo - Garden",
"description": "Sample Yardi Rentcafe Data",
"key": "yardi-rentcafe",
"created_at": "2026-04-16T03:27:09+00:00",
"updated_at": "2026-04-16T03:27:09+00:00"
}
]
}Make a call to GET: List references - to return one row per unit, containing that unit’s PMS-side ID.
The fields you care about:
- unit_id: This is how you join back to the unit from Step 1.
- group_id: Key to the reference group.
- value: The actual PMS-side unit ID. This is what the PMS uses to identify the unit.
The goal is to link the PMS data source to Engrain's unique ids
Example response: assets/7778/multifamily/units/reference-groups/39275/references
"data": [
{
"asset_id": "7778",
"group_id": "39275",
"unit_id": "2879571",
"key": "yardi-rentcafe",
"value": "12345",
"created_at": "2026-04-16T03:27:09+00:00",
"updated_at": "2026-04-16T03:27:09+00:00"
},
{
"asset_id": "7778",
"group_id": "39275",
"unit_id": "2879572",
"key": "yardi-rentcafe",
"value": "12346",
"created_at": "2026-04-16T03:27:09+00:00",
"updated_at": "2026-04-16T03:27:09+00:00"
},
{
"asset_id": "7778",
"group_id": "39275",
"unit_id": "2879573",
"key": "yardi-rentcafe",
"value": "12347",
"created_at": "2026-04-16T03:27:09+00:00",
"updated_at": "2026-04-16T03:27:09+00:00"
},
Explore Our New Expense Data IntegrationWe’ve launched three new example properties in the SightMap REST API featuring realistic expense data models. Use these assets to test and visualize expenses across the asset, floor plan, and unit levels.
- Demo Asset IDs: 7778 • 7779 • 7780
Ready to get started?
- Request a Technical Demo Discover how our advanced APIs deliver granular expense data across every asset level. Contact Partnerships
- Become an Engrain Partner Not currently integrated? Let’s get you up and running with our expense-enabled APIs. Start Your Integration
- Existing Partner Support Need access to these assets or help with permissions? Contact API Support
Updated 16 days ago
Pulling Expense Data (Property, Floor Plan, and Unit)
