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.

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. This is your primary join key.
  • 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..

Example response: assets/7779/multifamily/units/reference-groups

📘

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).

   "data": [
        {
            "id": "5629",
            "asset_id": "7779",
            "name": "EngrainTest",
            "description": null,
            "key": "entrata",
            "created_at": "2023-03-10T20:22:43+00:00",
            "updated_at": "2023-03-10T20:22:43+00:00"
        },
        {
            "id": "8190",
            "asset_id": "7779",
            "name": "Realpage Onesite",
            "description": "test",
            "key": "realpage-onesite",
            "created_at": "2023-06-16T17:14:32+00:00",
            "updated_at": "2023-06-16T17:14:32+00:00"
        },
        {
            "id": "8191",
            "asset_id": "7779",
            "name": "Resman",
            "description": null,
            "key": "resman",
            "created_at": "2023-06-16T17:15:11+00:00",
            "updated_at": "2023-06-16T17:15:11+00:00"
        }
    ]
}

Make a call to GET: List groups - 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 (e.g. “3839376-1”). This is what the PMS uses to identify the unit.


💡

Explore Our New Expense Data Integration

We’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

What’s Next

Pulling Expense Data (Property, Floor Plan, and Unit)