Track updates to the PriceLabs Customer API and related developer resources.
Use the entries below to see what changed in each release. Tags on individual entries help filter by area (e.g. listings, pricing, reservations).
Added Actions endpoint 🎉
GET /v1/actions
Returns the Action Center alerts and recommendations for your listings — missing listing information, configuration issues, availability alerts, and pricing recommendations — so you can surface what needs attention in your own tools.
The response is grouped per listing: each entry has listing_details and an actions array ordered most important first, where every action carries an action_type, a human-readable title, and metadata with the detail for that action. Listings with nothing to report are omitted.
Added endpoint to create groups
POST /v1/groups
Create a new group by passing group_name in the request body. The response returns the numeric id of the newly created group.
Added group and subgroup assignment to listings update
POST /v1/listings
You can now assign a listing to a group or subgroup when updating listings. Pass optional group_id and subgroup_id (numeric IDs) on each listing in the request body. The response contains the updated group_id and subgroup_id for each listing.
Per-listing errors may be returned when group or subgroup updates fail, alongside existing tag and sync failures.
Added guest count and OTA commission to reservations endpoint
GET /v1/reservation_data
Responses now include guest_count and ota_commission when the PMS provides them in booking info.
Added Customization Profiles discovery endpoint
You can now list the customization profiles on your account via the Customer API.
GET /v1/customization_profiles
Returns your min-stay, pricing, and check-in/check-out profiles grouped by type. Each entry exposes the profile’s id, name, and archived flag.
Use this endpoint to find the exact profile ids that Custom Seasonal Profile (custom_seasonal_profile) seasons reference — the ids returned are exactly the set that minstay_profile_id, pricing_profile_id, and checkincheckout_profile_id season writes accept.
Added Mapping endpoints 🎉
Manage parent-child listing mappings programmatically — link the same property’s listings across channels (Airbnb, Vrbo, Booking.com, …) so they are managed and priced together.
POST /v1/mappings/map
Maps (links) child listings under a parent listing. By default mapping only links the listings; optional copy flags (all default false) copy the parent’s min/base/max prices, customizations, group, notes, or tags to the children at map time. Enforces the same validation as the dashboard: mapping permission, max child listings, distance limit, and the same-PMS rule.
Added Group Date Specific Overrides endpoints 🎉
You can now fetch, add/update, and delete date specific overrides (DSOs) at the group level via the Customer API.
GET /v1/group_overrides
Returns all group DSOs from today onwards for a given group id. Each override includes pricing fields plus created_at and updated_at.
POST /v1/group_overrides
Adds or updates group DSOs for one or more dates. Valid dates are from today through 2 years from today. Successfully validated dates are saved even if other dates in the same request fail — failures are returned in failed_dates.
Customizations - Added Custom Seasonal Profile
The Customizations API now supports Custom Seasonal Profile (custom_seasonal_profile) at the listing, group, and account level.
Define seasons with their own price settings — as percentage adjustments or fixed prices — and optionally attach min-stay, pricing, or check-in/check-out profiles per season. Both yearly-repeating seasons and one-off seasons for specific calendar dates are supported.
Expose listing and metrics currencies
Currency is now returned explicitly so monetary values can be interpreted correctly.
GET /v1/listings and GET /v1/listings/{listing_id}
- Each listing now includes
currency: the listing’s current pricing currency (used for min/base/max and related pricing fields).
New endpoint: minimal listings
Added GET /v1/listings_minimal — a minimal, lightweight way to fetch your listings, as a fast companion to GET /v1/listings.
- Returns just each listing’s core fields (
listing_id,pms_name,listing_name,property_name,parent_key,group_id) pluschannel_listing_details: the listing’s IDs on each booking channel/OTA it is published on (Airbnb, Vrbo, Booking.com, Expedia, etc.). - No performance metrics or pricing, so it stays fast for large accounts that just need a quick listing directory or to map PriceLabs listings to their channel listing IDs.
- Supports the
search_query,listing_name,listings,pms,cities,groups, andsubgroupsfilters.
Added Listing Optimizer endpoints 🎉
Three new endpoints to read Listing Optimizer data programmatically:
GET /v1/listing_optimizer/summary
Returns Listing Optimizer scores across your account — overall score, status, and basic info for each Airbnb listing, along with whether the listing can be manually rerun. Use this first to get a portfolio-wide overview.
Added Nudge endpoints 🎉
Price nudges recommend base price or minimum price adjustments for listings. You can now list available nudges and accept them programmatically via the Customer API.
GET /v1/nudges/available
Returns pending, non-expired nudges for listings accessible to the authenticated user. Results can be filtered by nudge_type (base_price or min_price), listing_id, and pms.
Added Bookings Report endpoint 🎉
POST /v1/bookings_report
Returns a paginated bookings report with flexible date and portfolio-level filtering. Supports:
- Date filters — filter by booked date range or check-in date range
- Listing filters — filter by specific listing ID + PMS combinations
- Portfolio filters — filter by tags, groups, subgroups, cities, bedroom count, sync status
- Booking status — include booked, cancelled, and/or blocked reservations
- Pagination — configurable
limit(max 500) andoffset
Added Logs endpoint
POST /v1/logs
Retrieve paginated activity logs for your PriceLabs account. Supports filtering by log type (listing, group, account), entity identifiers, actions, team members, and date range.
See Logs — Retrieve activity logs for full request and response details.
Team member API access
Account owners can now grant Customer API access to team members (sub-users) from Account Settings → Team Settings.
- Team members can generate their own API key from Account Settings → API Details
- Requests made using a team member’s API key adhere to the same permissions assigned by the account owner on the UI
Added Performance Metrics endpoint 🎉
GET /v1/listing_metrics
Returns listing-level and market-level performance KPIs for a single listing, including occupancy, revenue, ADR, RevPAR, adjusted occupancy, base price ratio, minimum price percentages, and same-time-last-year (STLY) comparisons.
See Listings — Get listing performance metrics for full request and response details.
Added new endpoints for groups management 🎉
GET /v1/groups
Added a new endpoint to fetch all groups available in the account.
GET /v1/group_listings
Added a new endpoint to fetch listings assigned to a specific group_id or subgroup_id.
Added optional lead_time_expiry field to the overrides body
GET /v1/listings/{listing_id}/overridesPOST /v1/listings/{listing_id}/overrides
lead_time_expiry: The DSO expires within this many days of the stay date. Allowed values are 1 to 999. Using this, you can now setup a DSO that can expire set days before the stay date.
Added Customizations APIs
You can now read and update pricing customizations programmatically at the listing, group, and account level. Use GET to fetch current values and POST to write one or more customizations in a single atomic request.
GET /v1/customizations/listingandPOST /v1/customizations/listingGET /v1/customizations/groupandPOST /v1/customizations/groupGET /v1/customizations/accountandPOST /v1/customizations/account
DSO - Added start and end date filters for listing level overrides
GET /v1/listings/{listing_id}/overrides
Added optional start_date and end_date query parameters to filter the date range of returned overrides. This makes it possible to view historical overrides.
start_date(YYYY-MM-DD): Returns overrides from this date onwards. Defaults to today if omitted.end_date(YYYY-MM-DD): Returns overrides up to and including this date. If omitted, all overrides fromstart_dateonwards are returned.