Release Notes¶
This page documents changes to the Beyond API. Entries are organized by API version, then by date (newest first), and grouped into categories.
For details on what constitutes a breaking vs. non-breaking change, see API Versioning.
v1¶
2026-08-25¶
Fixed
- Errors that previously came back as an HTML page now return the same JSON:API error document as every other error. This covers unexpected server errors (
500), requests to a URL that is not an endpoint (404), and requests rejected before routing such as an oversized body or an unrecognizedHostheader (400). A client can now parse every response the API sends. See Error Handling.
2026-08-20¶
Added
- Personal users can now receive webhooks. An administrator configures one endpoint per Beyond account from the dashboard's Personal Access Tokens page: generate a signing secret, save a public
httpsURL, and pick the events to receive. See For personal users. - New
webhook.pingevent, sent to verify an endpoint when a URL is saved or a test ping is requested from the dashboard. It carries no change; acknowledge with any2xx. See Webhook Ping. - Personal access tokens now carry the
webhooks:readscope, so a PAT can read back its own deliveries through the Webhook Events endpoints.
Fixed
GET /compsets/no longer lists comp sets whose anchor listing was deleted. Such comp sets always returned 404 onGET /compsets/{id}/, so a client following the list could request a comp set it was never able to fetch. Every comp set the list returns is now fetchable.
2026-08-18¶
Added
- Account creation accepts an optional
sync-priorityquery parameter that says how soon the account's import starts.highstarts it as soon as Beyond can;normalcan take longer to start when Beyond is busy, which suits adding many accounts at once.highis the default, so accounts you add without the parameter behave as before. See Sync priority.
Changed
- The account refresh endpoint's query parameter is now spelled
recent-sync-threshold-minutes, dasherized like every other query parameter and field name in the API. The old snake_case spellingrecent_sync_threshold_minutesis deprecated but still accepted, so existing integrations keep working unchanged. See Refresh Account.
2026-08-12¶
Added
- Listings responses now include the
marketattribute: the Beyond market the listing belongs to (nullwhile unassigned). See Listings. - New listing filters
filter[name](case-insensitive title substring),filter[market],filter[bedrooms], andfilter[in-active-market]. All filters remain optional; requests without them behave as before. See Listings. - The
listing.createdwebhook now carries arestoredattribute, set totruewhen a listing you had already been told about comes back — after the managed account it belongs to is deleted and re-created, or after the listing reappears on the channel. The attribute is omitted entirely for a first-time creation. See Listing Created.
Changed
listing.createdwithstatus: "succeeded"no longer fires only once per listing: a listing that is removed and later comes back fires it again, carryingrestored: true. Previously the return was silent, and a partner following a deletion had no way to learn the listing was back. Treat the event as an upsert on thelistingrelationship id rather than an insert.
2026-08-05¶
Added
- Market Insights is released and available to all Personal Users: benchmark a listing's daily occupancy and booked/posted rates against its neighborhood or market using a Personal Access Token with the
insights:readscope. See Market Insights.
2026-08-04¶
Added
- Take over pricing for specific dates with the new manual overrides customization: pin a fixed nightly price that Beyond will not reprice, or apply a percentage adjustment that keeps moving with the model, for a date range or selected weekdays. This is the same control the Beyond web calendar's "Manual Override" panel offers. See Manual Overrides.
- Calendar entries now include
price-override-type, telling you whether a date'spriceis purely modeled (null), pinned to a fixed override (fixed), or a modeled price carrying a percentage override (percentage). See Calendar.
2026-07-24¶
Added
- Configure your own webhook delivery with the new
webhooks:writescope: choose which event types you receive and change your destination URL, without contacting Beyond. Applications keep receiving every event type by default. See Webhook Configuration.
2026-07-21¶
Added
- Calendar entries now include
metadataon the pricing factors that carry it, explaining what drove the factor: listing and market occupancy for occupancy factors, bedroom count for pacing factors, and the triggering review date for reputation discounts. The object is omitted for factors that carry none. See Calendar.
2026-07-20¶
Added
- Read back the webhook events Beyond has delivered to you, with their delivery status, using the new
webhooks:readscope. Useful for reconciling and reprocessing events missed while your receiver was down. See Webhook Events.
2026-07-16¶
Added
- New
listing.in_active_market_changedwebhook: fires when a listing'sin-active-marketattribute changes in either direction — the listing leaves or re-enters the state where its calendar endpoint is guaranteed to work and automated price refresh is on. See Listing In Active Market Changed.
2026-07-14¶
Changed
- The account refresh endpoint (
POST /users/{user_id}/accounts/{account_id}/refresh/) now returns409 Conflictwhen a sync is already in progress for the account, instead of accepting the request with202and silently dropping it. Wait for the in-progress sync to finish (or for theaccount.refreshedwebhook) and retry shortly. See Accounts.
2026-07-10¶
Added
- Webhooks are live for partners: register an endpoint to receive signed, real-time event notifications instead of polling. The initial events are
account.created,account.refreshed,listing.created,listing.refreshed, andlisting.base_price_changed. See Webhooks.
2026-06-30¶
Added
- List users now supports
filter[email]=<email>to look up a user by email (exact, case-insensitive). Useful for recovering a user'sidwhen you only have the email. See Users.
Changed
- The listing calendar endpoint (
GET /api/v1/listings/{id}/calendar/) now requires thereservations:readscope instead oflistings:read. Existing tokens that hadlistings:readwere grantedreservations:readso calendar access is uninterrupted; new tokens must requestreservations:readto read the calendar. See Calendar.
2026-06-19¶
Added
- Calendar entries now include
amounton each pricing factor: the factor's dollar contribution to the modeled price. See Calendar. - Calendar entries now include
effective-min-priceandeffective-max-price: the binding price floor and ceiling for each date. See Calendar.
2026-06-15¶
Added
- List comp sets now supports
filter[owner]=<user_id>to narrow results to a single user (useful for full-access partner tokens). - List comp sets now supports compound documents via
?include=owner,listing, sideloading the owning user and the anchored Beyond listing (listingisnullfor custom comp sets). See Compsets.
Changed
- The listing refresh endpoint (
POST /listings/{id}/refresh/) now also refreshes the listing's details and availability, not just its reservations.
2026-06-13¶
Changed
- The optional
X-Request-IDheader now accepts any value made of letters, digits, and-_.:separators (up to 128 chars), not just UUIDs. Values outside that set no longer return400— the API falls back to a generated request id instead.
2026-06-09¶
Added
- Compsets are live: list and retrieve competitive sets for your listings. See Compsets.
2026-06-08¶
Changed
- Deleting a user or a managed account now disables its listings.
2026-06-05¶
Fixed
- Retrieving min-stay customizations no longer fails for listings that have year-round last-minute (lead-time) min-stay rules configured.