Get a unit's lease-term price matrix
Term-by-term pricing for one unit, ordered by lease start date. **Two behaviors to design around.** 1. *Live PMS fallback.* When Resi holds no stored matrix for the unit, it queries the property's PMS connection in real time and normalizes the result. That is materially slower than a database read and depends on the PMS being reachable. Set a generous client timeout; never call this in a loop across a portfolio. 2. *An empty array is a legitimate answer.* No PMS connection, no matrix from the provider, or a unit without term pricing all return `[]`. Fall back to the unit's rent range rather than showing nothing. Call it lazily on unit detail and cache per unit per day. Scoped to the portfolio: `{property}` is a slug resolved against the properties attached to `{connection}`, so a slug outside this portfolio is a `404` rather than another site's property. `{unit}` is a slug too, resolved against the route property's units — unlike the unscoped route, a unit served through a merged connection is not reachable here.
/api/v1/connection/{connection}/property/{property}/unit/{unit}/price-matrixTerm-by-term pricing for one unit, ordered by lease start date.
Two behaviors to design around.
- Live PMS fallback. When Resi holds no stored matrix for the unit, it queries the property's PMS connection in real time and normalizes the result. That is materially slower than a database read and depends on the PMS being reachable. Set a generous client timeout; never call this in a loop across a portfolio.
- An empty array is a legitimate answer. No PMS connection, no matrix from the provider, or a unit without term pricing all return
[]. Fall back to the unit's rent range rather than showing nothing.
Call it lazily on unit detail and cache per unit per day. Scoped to the portfolio: {property} is a slug resolved against the properties attached to {connection}, so a slug outside this portfolio is a 404 rather than another site's property. {unit} is a slug too, resolved against the route property's units — unlike the unscoped route, a unit served through a merged connection is not reachable here.
Path Parameters
Connection UUID.
uuidProperty slug, resolved against the properties attached to {connection}. A slug outside that portfolio is a 404. Slug only — a UUID does not resolve here.
Unit slug, resolved against the route property's units. A unit of any other property is a 404. Slug only — a UUID does not resolve here.
Query Parameters
Return only the row for this lease start date (YYYY-MM-DD). Omit for all dates.
dateResponse Body
application/json
application/json
curl -X GET "https://example.com/api/v1/connection/497f6eca-6276-4993-bfeb-53cbbbba6f08/property/1520-gough-street/unit/1520-gough-street-204/price-matrix"{ "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "unit_id": "5becc822-b69e-4e66-a762-ad8e868dcab6", "start_date": "2019-08-24", "best_rent": { "term_key": "rent_12", "months": 1, "label": "12 months", "rent": 0 }, "next_best_rent": { "term_key": "rent_12", "months": 1, "label": "12 months", "rent": 0 }, "rents": [ { "term_key": "rent_12", "months": 1, "label": "12 months", "rent": 0 } ] } ]}List integrations GET
Connections attached to the property, with secrets stripped. Tour-capable entries carry the `id` you pass as `connection_id` to the tour endpoints. Scoped to the portfolio: `{property}` is a slug resolved against the properties attached to `{connection}`, so a slug outside this portfolio is a `404` rather than another site's property.
List Instagram posts GET
Synced posts from the property’s enabled Instagram connection. Returns an empty collection when none is configured. Scoped to the portfolio: `{property}` is a slug resolved against the properties attached to `{connection}`, so a slug outside this portfolio is a `404` rather than another site's property.