Docs

API changelog

Changes to Resi's APIs, newest first.

Every change to an API's OpenAPI document is listed here, in the same pull request as the change.

2026-10-06

  • V2: Added leads, read-only: form submissions and tour bookings, newest first, filterable by property, form, lead source and date. See Leads & tours.
  • V2: Added fee assignments: assign a fee to a property, floor plan or unit, narrow it to bedroom counts, floor plans or dates, and override its amount, frequency or requirement for that scope.
  • V2: Media can be deleted, taken off one record while staying in the library, and re-ordered on a record. Added media folders; a file is filed with folder_id, and media files carry property_id and folder_id.
  • V2: Added GET /roles and connection logs.
  • V2: Properties, floor plans and units accept a slug. Properties accept addresses (the full list, exactly one primary), display_settings, website_settings and an ordered amenity_ids, and return addresses, website_settings and, on a single property, amenity_ids. Property fields the PMS connection syncs are refused with a 422, as they are on units and floor plans.
  • V2: Amenities accept and return mits_amenity_type, the MITS 5.0 amenity type ILS feeds carry.
  • V2: A boolean list filter that is not true, false, 1, 0, yes, no, on or off is a 422. It used to mean false.

2026-10-05

  • V2: Unit and floor plan rent writes follow Resi's pricing. Send base rent or the total and the other is calculated from the fees in effect, so the response carries both and a later fee change keeps the side you sent. Sending both sides of one rent is a 422. Fields the property's PMS connection syncs are refused with a 422 naming the connection, instead of being overwritten on the next sync. See Syncing inventory.
  • V2: Units and floor plans carry their stored fees: monthly_fee_total, monthly_fee_total_max, upfront_fee_total, fee_breakdown and fees_synced_at. A unit's floor accepts a label such as PH as well as a number.
  • V2: Fees, galleries, FAQs, announcements and content blocks return property_ids on show, create and update.
  • V2: Updating a content block's content_items changes items sent with their id in place, keeping their ids and media, instead of replacing every item. Link URLs on content blocks, content items and announcements accept http and https URLs, relative links, anchors, mailto: and tel:, and refuse every other scheme, including one hidden behind HTML character references.
  • V2: Deleting a floor plan keeps its units, now without a floor plan, and removes the fee assignments made to it. Deleting a unit removes its fee assignments.
  • V2: Every collection has a stable order: oldest first unless it has its own default, with ties broken by id, so paging never repeats or skips a record.
  • V2: A missing record's 404 names its kind (Unit not found.) instead of a class name, and every 422 carries an errors object.
  • V2: The OpenAPI document now covers every V2 endpoint. Added group sets, groups and their members, removing a user, social profiles, websites, their content types, and content entries. These endpoints already existed. New guides: Groups, Website content entries and Users and roles.
  • V2: Every response schema is now closed and lists its keys as required. A key that only some responses carry, such as a unit's property on its show response, says when it is present (x-present-when). Pagination meta and links are documented in full.
  • V2: Corrected documented types that never matched the API: a unit's floor is a string, account roles can be custom or null, /me carries no top-level role, role on POST /users is optional and accepts custom roles, and lead source name lists the values it accepts. No response changed.
  • V2: Update responses for units, floor plans, buildings and properties now include the same media as create and show. Updates to connections include latest_log. Group and group set create and update responses include their children and set. A created group set returns its allows_multiple_membership default instead of null. A created, shown or updated embed includes its image.
  • V2: Website delivery and preview tokens are rejected with 403 on every V2 endpoint. Only account API tokens can call V2. See Authentication.
  • V2: Connection credentials are no longer readable. Connections, GET /connections/{connection} and the attach response return every credential in settings as ********. Connection and attachment settings updates now merge into the stored settings instead of replacing them, and a credential sent back as ******** keeps its stored value. See Managing connections.
  • V2: PATCH /fees/{fee} rejects a code that another fee in the account already uses, and a class outside the fee class list, with 422, as creating a fee already did.
  • V2: PATCH /users/{user} returns 403 when it changes the name or email of a user who also belongs to another account, or who is Resi staff. Users can still change their own. Role changes are unaffected.
  • V2: List filters reject malformed values with 422. Examples are a property_id that is not a UUID, a non-numeric value on a numeric range such as bedrooms, an unparseable date bound, or a range operator other than gte, lte, gt and lt. These used to fail with a 500.

2026-10-01

  • V1: On GET /property/{property}/floor-plans, a unit that is available but has no availability date now counts as available now in unitsAvailable, numberUnitsAvailable, unitsAvailableOrComingSoon, numberUnitsAvailableOrComingSoon and buildings. Before, only a dated unit counted, so a floor plan could report zero available units while /units listed one of its units as available. Coming-soon counts and the response shape are unchanged.
  • All APIs: Properties carry their display settings: V1 displaySettings, V2 display_settings and the sites API's display on GET /properties/{property}. They hold a new flag, hide_available_units, which asks a site to hide its available units list, alongside the existing prepend_building_number_to_unit_number and show_non_marketable_amenities. Each value is the one in effect: the property's own, else its account's. Algolia property records carry the same object as displaySettings.

2026-09-30

  • Sites API: The OpenAPI document now describes the pricing, leasing, pet_policy and office_hours settings on GET /properties/{property} key by key. They were documented as free-form objects. No response changed.
  • All APIs: Pricing display settings carry two new labels: no_availability_price_label, to show in place of a price hidden because nothing is available (hide_price_when_no_availability), and no_price_label, to show wherever else a price is null. hidden_price_label is now only for prices hidden by hide_all_pricing. They are in V1 pricingDisplaySettings, V2 pricing_display_settings (readable and writable), and the sites API's pricing and pricing_display. See Pricing and fees.
  • Sites API: A website can be set to search its account's own Algolia connection instead of Resi-managed search. The site manifest's search then carries that connection's application id, search-only key and index names. Its shape is unchanged.

2026-09-28

  • Sites API: The site manifest carries search: the Algolia application id, a search-only key limited to the site's indices and domains, and the index names. It is null until the website's search is provisioned.
  • V2: The OpenAPI document now names https://v2.getresi.com as its server, and every tag has a description.
  • V2: DELETE /properties/{property} is documented as returning 202, which it always has: the deletion is queued and the property can still be read until it finishes.
  • V1: Corrected three descriptions. /forms now says to re-fetch when a lead submission returns 404; a 422 is about the submitted values, not the form. POST /cache/clear purges the page cache of the property's connected website host, not a Resi cache. GET /property/{property} no longer says the V2 property lacks an address.

2026-09-19 to 2026-09-22 — Sites API

  • Added GET /content-types.
  • Property cards carry a rating, and fall back to a gallery image when there is no featured image.
  • Published tags on property cards, videos, virtual tours and neighborhood places, plus panoramas, image tags, country and timezone.
  • Published inherited groups on units and floor plans.
  • Rent filters never reveal a hidden price. See Inventory and pricing.
  • The cache-clear webhook is sent only to sites built to receive it.

2026-09-18 — Sites API

  • Released the Sites API at /api/sites/v1: the website delivery API, authenticated per website and addressed by slug. It covers the site manifest and routing, content, properties, floor plans, units, availability, the price matrix, lead sources, integrations, forms, tours, analytics events and source observations, with cache tags and a signed cache-clear webhook.

2026-09-15

  • V2: Units and floor plans accept external_ids, the record's identifiers in other systems.

2026-09-09

  • V1: The OpenAPI document was corrected to match what these endpoints already return. No response changed.
    • The fee requirement on /fees can be null.
    • An integration's settings on /integrations can be an array.
    • A neighborhood place's rating on /neighborhood is a string.
    • A unit's unitFloor on /units is a string.
    • A widget integration's id on /widget is an integer.
  • V1: Floor plans carry floorPlanSortOrder, the order set in the Resi app. The feed is served in that order.

2026-09-02

  • V1: GET /property/{property}/fees returns the property's effective fee schedule, with per-property overrides applied and expired fees left out. /resolved-fees was removed.

2026-08-27

  • V1: Slug addressing moved to the connection-scoped portfolio routes, /connection/{connection}/property/{property}. The /property/{property} routes take a UUID only.

Last updated on

On this page