Skip to content

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 unrecognized Host header (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 https URL, and pick the events to receive. See For personal users.
  • New webhook.ping event, 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 any 2xx. See Webhook Ping.
  • Personal access tokens now carry the webhooks:read scope, 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 on GET /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-priority query parameter that says how soon the account's import starts. high starts it as soon as Beyond can; normal can take longer to start when Beyond is busy, which suits adding many accounts at once. high is 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 spelling recent_sync_threshold_minutes is deprecated but still accepted, so existing integrations keep working unchanged. See Refresh Account.

2026-08-12

Added

  • Listings responses now include the market attribute: the Beyond market the listing belongs to (null while unassigned). See Listings.
  • New listing filters filter[name] (case-insensitive title substring), filter[market], filter[bedrooms], and filter[in-active-market]. All filters remain optional; requests without them behave as before. See Listings.
  • The listing.created webhook now carries a restored attribute, set to true when 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.created with status: "succeeded" no longer fires only once per listing: a listing that is removed and later comes back fires it again, carrying restored: 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 the listing relationship 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:read scope. 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's price is 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:write scope: 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 metadata on 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:read scope. Useful for reconciling and reprocessing events missed while your receiver was down. See Webhook Events.

2026-07-16

Added

  • New listing.in_active_market_changed webhook: fires when a listing's in-active-market attribute 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 returns 409 Conflict when a sync is already in progress for the account, instead of accepting the request with 202 and silently dropping it. Wait for the in-progress sync to finish (or for the account.refreshed webhook) 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, and listing.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's id when you only have the email. See Users.

Changed

  • The listing calendar endpoint (GET /api/v1/listings/{id}/calendar/) now requires the reservations:read scope instead of listings:read. Existing tokens that had listings:read were granted reservations:read so calendar access is uninterrupted; new tokens must request reservations:read to read the calendar. See Calendar.

2026-06-19

Added

  • Calendar entries now include amount on each pricing factor: the factor's dollar contribution to the modeled price. See Calendar.
  • Calendar entries now include effective-min-price and effective-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 (listing is null for 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-ID header now accepts any value made of letters, digits, and - _ . : separators (up to 128 chars), not just UUIDs. Values outside that set no longer return 400 — 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.