Enquiries Channel manager Bookings Your website Booking engine Pricing
v2026-09

List properties

Every property your integration covers, with its units and the aliases mapped for both. The call you make first, and again whenever you need to rebuild your mapping.

GET https://api.doorloom.com/api/integrations/v1/properties

No parameters. Returns everything you cover, in one response — coverage is a small, hand-curated list, so there is no pagination.

Request bash
curl https://api.doorloom.com/api/integrations/v1/properties \
  -H "Authorization: Bearer $DOORLOOM_API_KEY"

Response

Response 200 json
{
    "success": true,
    "message": "OK",
    "data": {
        "sequence": 1047,
        "properties": [
            {
                "doorloom_id": 902,
                "external_id": "VILLA-9",
                "coverage": "active",
                "name": "Amber Villa, Alibaug",
                "property_type": "Villa",
                "status": "active",
                "is_master": true,
                "master_property_id": 902,
                "units": [
                    {
                        "inventory_id": 31,
                        "external_unit_id": "ROOM-A",
                        "name": "Garden Suite",
                        "code": "GS",
                        "is_active": true,
                        "is_default": true,
                        "max_occupancy": 4,
                        "deleted": false
                    },
                    {
                        "inventory_id": 32,
                        "external_unit_id": "ROOM-B",
                        "name": "Pool Suite",
                        "code": "PS",
                        "is_active": true,
                        "is_default": false,
                        "max_occupancy": 4,
                        "deleted": false
                    }
                ]
            }
        ]
    }
}
Field Type Description
sequence integer The integration's sequence watermark, read before the list was built. Any event with a higher sequence is safe to apply on top of this snapshot.
properties[].doorloom_id integer Doorloom's permanent property id.
properties[].external_id string|null Your alias, if one is mapped.
properties[].coverage string active or inactive. An inactive property is no longer in your scope and will send you no further events.
properties[].name string The listing name.
properties[].property_type string|null Villa, apartment, homestay and so on.
properties[].status string active, inactive or archived. Archived properties cannot be booked.
properties[].is_master boolean True when this is the head of its cluster, or is not in one.
properties[].master_property_id integer The cluster head's id.
properties[].units[].inventory_id integer Doorloom's permanent unit id.
properties[].units[].external_unit_id string|null Your alias for the unit.
properties[].units[].name string Unit name.
properties[].units[].code string|null Host-entered short code.
properties[].units[].is_active boolean Whether the unit is sellable.
properties[].units[].is_default boolean True for the property's default unit.
properties[].units[].max_occupancy integer|null Guests the unit sleeps. Not enforced by Doorloom.
properties[].units[].deleted boolean True once the host deletes the unit.

Only active units appear here

This endpoint lists sellable units. To see units that have been deactivated or deleted — which you need in order to retire an alias — use the inventory.changed event, which deliberately includes them.

Aliases

An external_id or external_unit_id is a mapping Doorloom staff create between your identifier and theirs. Where one exists you may use it anywhere the API takes a property or unit reference, which usually means you never have to store Doorloom's ids at all.

Where one does not exist the field is null, and you must use the numeric id. Alias changes are announced as inventory.changed and property.changed events.

What coverage means

Coverage is the set of properties the brand owner owns. Properties they merely cohost for another host are never included, however visible they are in the Doorloom app.

Booking a property outside your coverage is 422 PROPERTY_NOT_MAPPED, and you receive no events for it.

Using the sequence watermark

data.sequence is read before the properties are gathered, which makes it safe in the useful direction: any event numbered higher than it describes a change that may or may not already be reflected in this snapshot, so applying it on top is always correct. An event numbered lower or equal is definitely already included.

The same pattern is used by the availability, rates and restriction snapshots.

Errors

Errors

Status Code Meaning
401 UNAUTHENTICATED No API key, or a key that is not valid. Rotating your API key invalidates the previous one immediately.
403 NOT_INTEGRATION_TOKEN The bearer token is valid but is not an integration API key — it belongs to another Doorloom token surface. Integration keys are the only credential this API accepts.
403 INTEGRATION_DISABLED Doorloom staff disabled this integration. No events are recorded and no API call succeeds. This is distinct from paused: a paused integration keeps full API access and only stops receiving webhooks.
429 RATE_LIMITED You exceeded one of the rate limits. The standard Retry-After and X-RateLimit-* headers are set on the response.

Something unclear or wrong on this page? Write to [email protected] and tell us which page — we would rather fix the doc than answer the ticket twice.