Docs
V1 APIConnections

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.

GET/api/v1/connection/{connection}/property/{property}/unit/{unit}/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.

Path Parameters

connection*string

Connection UUID.

Formatuuid
property*string

Property 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*string

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

start_date?string

Return only the row for this lease start date (YYYY-MM-DD). Omit for all dates.

Formatdate

Response 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        }      ]    }  ]}