{"components":{"schemas":{"AssociatedLocation":{"additionalProperties":false,"properties":{"best_observed_search":{"$ref":"#/components/schemas/SearchEvidence"},"booking_share":{"$ref":"#/components/schemas/BookingShare"},"coordinate":{"anyOf":[{"$ref":"#/components/schemas/ReportCoordinate"},{"type":"null"}]},"coverage":{"$ref":"#/components/schemas/AssociationCoverage"},"demand":{"$ref":"#/components/schemas/AssociationDemand"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"local_visibility":{"$ref":"#/components/schemas/Metric"},"location_id":{"title":"Location Id","type":"string"},"published_at":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}],"title":"Published At"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"scored_property_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scored Property Count"},"state_or_territory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State Or Territory"},"status":{"enum":["available","unscored","unavailable"],"title":"Status","type":"string"},"visibility_change":{"$ref":"#/components/schemas/PublicationChange"},"visibility_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visibility Rank"}},"required":["location_id","status","local_visibility","best_observed_search","visibility_change","coverage","booking_share","demand"],"title":"AssociatedLocation","type":"object"},"AssociatedLocations":{"additionalProperties":false,"properties":{"complete":{"title":"Complete","type":"boolean"},"known_count":{"minimum":0,"title":"Known Count","type":"integer"},"locations":{"description":"All known associated locations, including those without scores. Location reports are requested separately.","items":{"$ref":"#/components/schemas/AssociatedLocation"},"title":"Locations","type":"array"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"status":{"enum":["available","partial","unavailable"],"title":"Status","type":"string"},"total_count":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"title":"Total Count"}},"required":["status","complete","known_count"],"title":"AssociatedLocations","type":"object"},"AssociationCoverage":{"additionalProperties":false,"properties":{"completed_contexts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completed Contexts"},"configured_contexts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Configured Contexts"},"eligible_contexts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Eligible Contexts"},"valid_contexts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Valid Contexts"}},"title":"AssociationCoverage","type":"object"},"AssociationDemand":{"additionalProperties":false,"properties":{"demand":{"$ref":"#/components/schemas/Metric"},"distance":{"$ref":"#/components/schemas/Metric"},"effective_demand":{"$ref":"#/components/schemas/Metric"},"fallback_applied":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Fallback Applied"},"normalized_weight":{"$ref":"#/components/schemas/Metric"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"status":{"default":"unavailable","enum":["available","unavailable"],"title":"Status","type":"string"}},"required":["demand","effective_demand","distance","normalized_weight"],"title":"AssociationDemand","type":"object"},"AuthenticationError":{"additionalProperties":false,"properties":{"error":{"$ref":"#/components/schemas/ErrorDetail"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},"required":["error"],"title":"AuthenticationError","type":"object"},"AvailabilityInput":{"additionalProperties":false,"properties":{"airbnb_id":{"description":"Airbnb room ID as an exact string; never a JavaScript number.","pattern":"^[1-9][0-9]{0,29}$","title":"Airbnb Id","type":"string"}},"required":["airbnb_id"],"title":"AvailabilityInput","type":"object"},"AvailabilityQuoteParameters":{"additionalProperties":false,"properties":{"airbnb_id":{"description":"Airbnb room ID as an exact string; never a JavaScript number.","pattern":"^[1-9][0-9]{0,29}$","title":"Airbnb Id","type":"string"}},"required":["airbnb_id"],"title":"AvailabilityQuoteParameters","type":"object"},"AvailabilityResponse":{"additionalProperties":false,"properties":{"api_version":{"const":"v1","default":"v1","title":"Api Version","type":"string"},"available":{"title":"Available","type":"boolean"},"coverage":{"$ref":"#/components/schemas/Coverage"},"credits":{"$ref":"#/components/schemas/Credits"},"property":{"anyOf":[{"$ref":"#/components/schemas/PropertyIdentity"},{"type":"null"}]},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"status":{"title":"Status","type":"string"}},"required":["credits","status","available","property","coverage"],"title":"AvailabilityResponse","type":"object"},"BookingShare":{"additionalProperties":false,"properties":{"basis":{"anyOf":[{"const":"known_bookings_in_observed_cohort","type":"string"},{"type":"null"}],"title":"Basis"},"cohort":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Published observed cohort capacity bucket.","title":"Cohort"},"coverage":{"additionalProperties":{"type":"integer"},"description":"Members with valid reservation counts for each period.","propertyNames":{"enum":["latest_month","previous_month","trailing_12","previous_trailing_12"]},"title":"Coverage","type":"object"},"denominators":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":"Exact known reservation totals for each period. Missing totals are null, never zero.","propertyNames":{"enum":["latest_month","previous_month","trailing_12","previous_trailing_12"]},"title":"Denominators","type":"object"},"member_count":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"title":"Member Count"},"monthly_change":{"$ref":"#/components/schemas/BookingShareChange"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"status":{"anyOf":[{"enum":["available","partial","unavailable"],"type":"string"},{"type":"null"}],"title":"Status"},"trailing_12_change":{"$ref":"#/components/schemas/BookingShareChange"},"unit":{"const":"percent","default":"percent","title":"Unit","type":"string"},"unresolved_count":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"title":"Unresolved Count"}},"required":["monthly_change","trailing_12_change"],"title":"BookingShare","type":"object"},"BookingShareChange":{"additionalProperties":false,"properties":{"absolute_change":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Current minus previous share, in percentage points.","title":"Absolute Change"},"current_value":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Current booking share as exact decimal percent.","title":"Current Value"},"direction":{"anyOf":[{"enum":["up","down","flat","unavailable"],"type":"string"},{"type":"null"}],"title":"Direction"},"percentage_change":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Relative percent change; null for an unknown or zero baseline.","title":"Percentage Change"},"previous_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Previous Value"},"status":{"anyOf":[{"enum":["available","incomplete_inputs","zero_baseline"],"type":"string"},{"type":"null"}],"title":"Status"},"unit":{"anyOf":[{"const":"percentage_points","type":"string"},{"type":"null"}],"title":"Unit"}},"title":"BookingShareChange","type":"object"},"Competitor":{"additionalProperties":false,"properties":{"adr":{"$ref":"#/components/schemas/Metric"},"annual_revenue":{"$ref":"#/components/schemas/Metric"},"booking_share":{"anyOf":[{"$ref":"#/components/schemas/BookingShare"},{"type":"null"}],"description":"Percent of known bookings within the observed cohort. Includes denominators and coverage; incomplete coverage is explicit."},"occupancy":{"$ref":"#/components/schemas/Metric"},"property":{"$ref":"#/components/schemas/PropertyDetails"},"search_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Search Rank"},"visibility_score":{"$ref":"#/components/schemas/Metric"}},"required":["property","annual_revenue","occupancy","adr","visibility_score"],"title":"Competitor","type":"object"},"Coverage":{"additionalProperties":false,"properties":{"current_airbnb_activity":{"const":"unverified","default":"unverified","title":"Current Airbnb Activity","type":"string"},"inventory_delivery":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inventory Delivery"},"published_at":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}],"description":"Actual publication time: Unix seconds or a UTC ISO-8601 timestamp; null when not published.","title":"Published At"},"reporting_end_month":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reporting End Month"},"source_observed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Observed At"}},"title":"Coverage","type":"object"},"Credits":{"additionalProperties":false,"properties":{"access_expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fixed UTC expiry, 30 minutes after successful access. Replay never extends this.","title":"Access Expires At"},"access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque account-bound access grant. Keep out of URLs/logs where possible.","title":"Access Token"},"balance_revision":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"description":"Monotonic account revision; ignore older concurrent balance updates.","title":"Balance Revision"},"balance_timestamp":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"UTC ISO-8601 time of authoritative balance observation.","title":"Balance Timestamp"},"charged":{"description":"Credits actually debited by this response, never a pending reservation.","minimum":0,"title":"Charged","type":"integer"},"configured_credit_cost":{"default":0,"minimum":0,"title":"Configured Credit Cost","type":"integer"},"credit_cost":{"description":"Effective cost for this operation; zero on an existing grant.","minimum":0,"title":"Credit Cost","type":"integer"},"free_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Free Reason"},"remaining_available_balance":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"description":"Balance less active reservations. Null only when the balance service is unavailable.","title":"Remaining Available Balance"},"reuse_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reuse Reason"}},"required":["credit_cost","charged"],"title":"Credits","type":"object"},"CustomerError":{"additionalProperties":false,"properties":{"api_version":{"const":"v1","default":"v1","title":"Api Version","type":"string"},"credits":{"$ref":"#/components/schemas/Credits"},"error":{"$ref":"#/components/schemas/ErrorDetail"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},"required":["credits","error"],"title":"CustomerError","type":"object"},"ErrorDetail":{"additionalProperties":false,"properties":{"code":{"title":"Code","type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"required":["code"],"title":"ErrorDetail","type":"object"},"HistoryEvent":{"additionalProperties":false,"properties":{"kind":{"title":"Kind","type":"string"},"location_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Id"},"published_at":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Actual committed publication time: Unix seconds or a UTC ISO-8601 timestamp.","title":"Published At"},"visibility":{"$ref":"#/components/schemas/Visibility"}},"required":["published_at","kind","visibility"],"title":"HistoryEvent","type":"object"},"LocationIdentity":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"string"},"label":{"title":"Label","type":"string"},"state_or_territory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State Or Territory"}},"required":["id","label"],"title":"LocationIdentity","type":"object"},"LocationInput":{"additionalProperties":false,"properties":{"access_quote":{"anyOf":[{"maxLength":12000,"minLength":1,"type":"string"},{"type":"null"}],"description":"Token returned by /quote for exactly these parameters.","title":"Access Quote"},"access_token":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"title":"Access Token"},"as_of":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"title":"As Of"},"capacity":{"description":"Guest capacity: 1–15, or 16 for properties accommodating 16 or more.","maximum":16,"minimum":1,"title":"Capacity","type":"integer"},"catalog_id":{"description":"Catalog identity returned by suggestions; stale catalogs are rejected.","pattern":"^[a-f0-9]{64}$","title":"Catalog Id","type":"string"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"description":"Opaque snapshot-bound next page cursor. Every additional page of 18 costs one credit unless that page grant is active.","title":"Cursor"},"deliberate_action":{"default":false,"description":"Set true after accepting the quoted price. Required for a new paid request.","title":"Deliberate Action","type":"boolean"},"location_id":{"pattern":"^[a-f0-9]{24}$","title":"Location Id","type":"string"},"sort_by":{"default":"visibility_score","enum":["search_rank","visibility_score","annual_revenue","occupancy","adr"],"title":"Sort By","type":"string"},"sort_direction":{"default":"desc","enum":["asc","desc"],"title":"Sort Direction","type":"string"}},"required":["location_id","catalog_id","capacity"],"title":"LocationInput","type":"object"},"LocationQuoteParameters":{"additionalProperties":false,"properties":{"access_token":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"title":"Access Token"},"as_of":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"title":"As Of"},"capacity":{"description":"Guest capacity: 1–15, or 16 for properties accommodating 16 or more.","maximum":16,"minimum":1,"title":"Capacity","type":"integer"},"catalog_id":{"description":"Catalog identity returned by suggestions; stale catalogs are rejected.","pattern":"^[a-f0-9]{64}$","title":"Catalog Id","type":"string"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"description":"Opaque snapshot-bound next page cursor. Every additional page of 18 costs one credit unless that page grant is active.","title":"Cursor"},"location_id":{"pattern":"^[a-f0-9]{24}$","title":"Location Id","type":"string"},"sort_by":{"default":"visibility_score","enum":["search_rank","visibility_score","annual_revenue","occupancy","adr"],"title":"Sort By","type":"string"},"sort_direction":{"default":"desc","enum":["asc","desc"],"title":"Sort Direction","type":"string"}},"required":["location_id","catalog_id","capacity"],"title":"LocationQuoteParameters","type":"object"},"LocationResponse":{"additionalProperties":false,"properties":{"api_version":{"const":"v1","default":"v1","title":"Api Version","type":"string"},"as_of":{"title":"As Of","type":"string"},"capacity":{"title":"Capacity","type":"integer"},"competitors":{"items":{"$ref":"#/components/schemas/Competitor"},"maxItems":18,"title":"Competitors","type":"array"},"coverage":{"$ref":"#/components/schemas/Coverage"},"credits":{"$ref":"#/components/schemas/Credits"},"location":{"$ref":"#/components/schemas/LocationIdentity"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"page_size":{"const":18,"default":18,"title":"Page Size","type":"integer"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"sort_by":{"title":"Sort By","type":"string"},"sort_direction":{"title":"Sort Direction","type":"string"},"statistics":{"$ref":"#/components/schemas/MarketStatistics"}},"required":["credits","location","capacity","as_of","statistics","competitors","next_cursor","sort_by","sort_direction","coverage"],"title":"LocationResponse","type":"object"},"MarketStatistics":{"additionalProperties":false,"properties":{"adr":{"$ref":"#/components/schemas/Metric"},"complete_cohort":{"default":false,"title":"Complete Cohort","type":"boolean"},"end_month":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Month"},"median_annual_revenue":{"$ref":"#/components/schemas/Metric"},"occupancy":{"$ref":"#/components/schemas/Metric"},"property_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Property Count"},"start_month":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Month"}},"required":["median_annual_revenue","occupancy","adr"],"title":"MarketStatistics","type":"object"},"Metric":{"additionalProperties":false,"properties":{"status":{"default":"unavailable","title":"Status","type":"string"},"unit":{"title":"Unit","type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Decimal value in the stated unit. Null means unavailable, not zero.","title":"Value"}},"required":["unit"],"title":"Metric","type":"object"},"PropertyDetails":{"additionalProperties":false,"properties":{"airbnb_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Airbnb Id"},"bathrooms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bathrooms"},"bedrooms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bedrooms"},"capacity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capacity"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"image_urls":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Image Urls"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"main_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Image Url"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"room_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Room Type"}},"title":"PropertyDetails","type":"object"},"PropertyIdentity":{"additionalProperties":false,"properties":{"airbnb_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Airbnb Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"title":"PropertyIdentity","type":"object"},"PropertyInput":{"additionalProperties":false,"properties":{"access_quote":{"anyOf":[{"maxLength":12000,"minLength":1,"type":"string"},{"type":"null"}],"description":"Token returned by /quote for exactly these parameters.","title":"Access Quote"},"access_token":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"title":"Access Token"},"airbnb_id":{"pattern":"^[1-9][0-9]{0,29}$","title":"Airbnb Id","type":"string"},"as_of":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"description":"UTC date; defaults to today.","title":"As Of"},"deliberate_action":{"default":false,"description":"Set true after accepting the quoted price. Required for a new paid request.","title":"Deliberate Action","type":"boolean"},"history_after_epoch":{"default":0,"description":"Continue history with next_after_epoch and the same access_token. Free within the 30-minute reuse window.","minimum":0,"title":"History After Epoch","type":"integer"}},"required":["airbnb_id"],"title":"PropertyInput","type":"object"},"PropertyQuoteParameters":{"additionalProperties":false,"properties":{"access_token":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"title":"Access Token"},"airbnb_id":{"pattern":"^[1-9][0-9]{0,29}$","title":"Airbnb Id","type":"string"},"as_of":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"description":"UTC date; defaults to today.","title":"As Of"},"history_after_epoch":{"default":0,"description":"Continue history with next_after_epoch and the same access_token. Free within the 30-minute reuse window.","minimum":0,"title":"History After Epoch","type":"integer"}},"required":["airbnb_id"],"title":"PropertyQuoteParameters","type":"object"},"PropertyResponse":{"additionalProperties":false,"properties":{"api_version":{"const":"v1","default":"v1","title":"Api Version","type":"string"},"associated_locations":{"$ref":"#/components/schemas/AssociatedLocations"},"coverage":{"$ref":"#/components/schemas/Coverage"},"credits":{"$ref":"#/components/schemas/Credits"},"overall_visibility":{"$ref":"#/components/schemas/Visibility"},"property":{"anyOf":[{"$ref":"#/components/schemas/PropertyDetails"},{"type":"null"}]},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"revenue":{"$ref":"#/components/schemas/Revenue"},"status":{"title":"Status","type":"string"},"visibility_history":{"$ref":"#/components/schemas/VisibilityHistory"}},"required":["credits","status","property","coverage","revenue","overall_visibility","visibility_history","associated_locations"],"title":"PropertyResponse","type":"object"},"PublicationChange":{"additionalProperties":false,"properties":{"basis":{"const":"since_previous_publication","default":"since_previous_publication","title":"Basis","type":"string"},"current_score":{"$ref":"#/components/schemas/Metric"},"delta":{"$ref":"#/components/schemas/Metric"},"previous_score":{"$ref":"#/components/schemas/Metric"},"published_at":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}],"title":"Published At"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"status":{"default":"unavailable","enum":["available","unavailable"],"title":"Status","type":"string"}},"required":["delta","current_score","previous_score"],"title":"PublicationChange","type":"object"},"QuoteInput":{"additionalProperties":false,"properties":{"operation":{"enum":["availability","suggestions","property","location"],"title":"Operation","type":"string"},"parameters":{"anyOf":[{"$ref":"#/components/schemas/AvailabilityQuoteParameters"},{"$ref":"#/components/schemas/SuggestionsQuoteParameters"},{"$ref":"#/components/schemas/PropertyQuoteParameters"},{"$ref":"#/components/schemas/LocationQuoteParameters"}],"description":"The exact body for the selected endpoint, excluding access_quote and deliberate_action.","title":"Parameters","type":"object"}},"required":["operation","parameters"],"title":"QuoteInput","type":"object"},"QuoteResponse":{"additionalProperties":false,"properties":{"allowed":{"default":true,"title":"Allowed","type":"boolean"},"api_version":{"const":"v1","default":"v1","title":"Api Version","type":"string"},"credit_cost":{"minimum":0,"title":"Credit Cost","type":"integer"},"credits":{"$ref":"#/components/schemas/Credits"},"expires_at":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}],"description":"Quote expiry as Unix seconds or a UTC ISO-8601 timestamp. Null for free discovery.","title":"Expires At"},"operation":{"enum":["availability","suggestions","property","location"],"title":"Operation","type":"string"},"pending":{"default":false,"title":"Pending","type":"boolean"},"quote_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quote Token"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},"required":["credits","operation","credit_cost","quote_token","expires_at"],"title":"QuoteResponse","type":"object"},"ReportCoordinate":{"additionalProperties":false,"properties":{"latitude":{"title":"Latitude","type":"number"},"longitude":{"title":"Longitude","type":"number"}},"required":["latitude","longitude"],"title":"ReportCoordinate","type":"object"},"Revenue":{"additionalProperties":false,"properties":{"adr":{"$ref":"#/components/schemas/Metric"},"annual_revenue":{"$ref":"#/components/schemas/Metric"},"basis":{"const":"airdna_estimated_property_revenue","default":"airdna_estimated_property_revenue","title":"Basis","type":"string"},"coverage":{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}]},"title":"Coverage","type":"object"},"currency":{"const":"USD","default":"USD","title":"Currency","type":"string"},"months":{"items":{"$ref":"#/components/schemas/RevenueMonth"},"maxItems":24,"title":"Months","type":"array"},"occupancy":{"$ref":"#/components/schemas/Metric"},"reporting_end_month":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reporting End Month"},"revpar":{"$ref":"#/components/schemas/Metric"},"status":{"default":"unavailable","title":"Status","type":"string"}},"required":["annual_revenue","occupancy","adr","revpar"],"title":"Revenue","type":"object"},"RevenueMonth":{"additionalProperties":false,"properties":{"metrics":{"additionalProperties":{"$ref":"#/components/schemas/Metric"},"title":"Metrics","type":"object"},"month":{"title":"Month","type":"string"},"observed":{"title":"Observed","type":"boolean"}},"required":["month","observed","metrics"],"title":"RevenueMonth","type":"object"},"SearchEvidence":{"additionalProperties":false,"properties":{"captured_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Captured At"},"check_in":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Check In"},"check_out":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Check Out"},"coverage":{"anyOf":[{"additionalProperties":{"type":"integer"},"propertyNames":{"enum":["observed_contexts","verified_contexts","observed_locations","verified_locations","missing_locations"]},"type":"object"},{"type":"null"}],"title":"Coverage"},"filters":{"anyOf":[{"additionalProperties":{"type":"string"},"propertyNames":{"const":"room_access"},"type":"object"},{"type":"null"}],"title":"Filters"},"guests":{"anyOf":[{"additionalProperties":{"type":"integer"},"propertyNames":{"enum":["adults","children","infants","pets"]},"type":"object"},{"type":"null"}],"title":"Guests"},"location_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Id"},"page":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page"},"position_within_page":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position Within Page"},"rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"status":{"default":"unavailable","title":"Status","type":"string"}},"title":"SearchEvidence","type":"object"},"Suggestion":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"string"},"label":{"title":"Label","type":"string"},"state_or_territory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State Or Territory"},"type":{"enum":["property","location"],"title":"Type","type":"string"}},"required":["type","id","label"],"title":"Suggestion","type":"object"},"SuggestionsInput":{"additionalProperties":false,"properties":{"limit":{"default":8,"description":"Short discovery list. No cursor or pagination is supported.","maximum":8,"minimum":1,"title":"Limit","type":"integer"},"query":{"maxLength":120,"minLength":2,"title":"Query","type":"string"},"type":{"enum":["property","location"],"title":"Type","type":"string"}},"required":["type","query"],"title":"SuggestionsInput","type":"object"},"SuggestionsQuoteParameters":{"additionalProperties":false,"properties":{"limit":{"default":8,"description":"Short discovery list. No cursor or pagination is supported.","maximum":8,"minimum":1,"title":"Limit","type":"integer"},"query":{"maxLength":120,"minLength":2,"title":"Query","type":"string"},"type":{"enum":["property","location"],"title":"Type","type":"string"}},"required":["type","query"],"title":"SuggestionsQuoteParameters","type":"object"},"SuggestionsResponse":{"additionalProperties":false,"properties":{"api_version":{"const":"v1","default":"v1","title":"Api Version","type":"string"},"catalog_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Catalog Id"},"credits":{"$ref":"#/components/schemas/Credits"},"has_more":{"const":false,"default":false,"title":"Has More","type":"boolean"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"suggestions":{"items":{"$ref":"#/components/schemas/Suggestion"},"maxItems":8,"title":"Suggestions","type":"array"},"type":{"enum":["property","location"],"title":"Type","type":"string"}},"required":["credits","type","suggestions"],"title":"SuggestionsResponse","type":"object"},"Visibility":{"additionalProperties":false,"properties":{"best_observed_search":{"anyOf":[{"$ref":"#/components/schemas/SearchEvidence"},{"type":"null"}]},"observed_locations":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Observed Locations"},"published_at":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}],"title":"Published At"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"score":{"$ref":"#/components/schemas/Metric"},"score_weight_coverage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score Weight Coverage"},"scored_locations":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scored Locations"},"status":{"default":"unavailable","title":"Status","type":"string"}},"required":["score"],"title":"Visibility","type":"object"},"VisibilityHistory":{"additionalProperties":false,"properties":{"complete":{"default":true,"title":"Complete","type":"boolean"},"events":{"items":{"$ref":"#/components/schemas/HistoryEvent"},"title":"Events","type":"array"},"next_after_epoch":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"description":"Continue /property with history_after_epoch and the same access_token; the history window stays pinned.","title":"Next After Epoch"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"status":{"title":"Status","type":"string"},"timezone":{"const":"UTC","default":"UTC","title":"Timezone","type":"string"},"window_end":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Pinned history window end, in Unix seconds UTC.","title":"Window End"},"window_start":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Retained history window start, in Unix seconds UTC.","title":"Window Start"}},"required":["status"],"title":"VisibilityHistory","type":"object"}},"securitySchemes":{"CustomerBearer":{"bearerFormat":"ColbyOS search API key","description":"Create and revoke keys in your account’s API keys page.","scheme":"bearer","type":"http"}}},"info":{"description":"Property reports, location statistics and competitor data. Use a Bearer API key and JSON POST requests at `https://app.colbyos.com/api/v1`.","title":"ColbyOS Customer API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/availability":{"post":{"description":"Check whether an Airbnb listing is available and when its data was observed. Free.","operationId":"customer_availability","requestBody":{"content":{"application/json":{"example":{"airbnb_id":"123456789"},"schema":{"$ref":"#/components/schemas/AvailabilityInput"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"api_version":"v1","available":true,"coverage":{"current_airbnb_activity":"unverified","inventory_delivery":"2026-09","published_at":null,"reporting_end_month":"2026-09-01","source_observed_at":"2026-09-30"},"credits":{"access_expires_at":null,"access_token":null,"balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":0,"credit_cost":0,"free_reason":"free_discovery","remaining_available_balance":9,"reuse_reason":null},"property":{"airbnb_id":"123456789","name":"Example listing"},"request_id":"example-request","status":"found"},"schema":{"$ref":"#/components/schemas/AvailabilityResponse"}}},"description":"Successful Response"},"401":{"content":{"application/json":{"example":{"error":{"code":"authentication_required","message":"A valid customer Bearer API key is required."},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/AuthenticationError"}}},"description":"Invalid or missing Bearer API key."},"402":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"insufficient_credits"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Not enough available credits."},"403":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"invalid_continuation"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Access token does not match this account or request."},"404":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"property_not_found"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Property or location was not found."},"409":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"access_expired"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Quote changed, request pending, or access expired. Review a fresh quote before trying again."},"422":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"invalid_request"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Invalid parameters."},"429":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"account_burst"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Account rate limit; respect Retry-After."},"503":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"search_recovery_required"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Data temporarily unavailable. Check the same request with a quote before retrying."}},"summary":"Availability","tags":["Customer API v1"]}},"/location":{"post":{"description":"Get location statistics and up to 18 competitors. Quote the first page to check its price or free eligibility. Each additional page costs 1 credit; repeating the exact selection and page within 30 minutes is free.","operationId":"customer_location","requestBody":{"content":{"application/json":{"example":{"access_quote":"<quote_token>","as_of":"2026-10-22","capacity":4,"catalog_id":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","deliberate_action":true,"location_id":"0123456789abcdef01234567"},"schema":{"$ref":"#/components/schemas/LocationInput"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"api_version":"v1","as_of":"2026-10-22","capacity":4,"competitors":[{"adr":{"status":"available","unit":"USD_per_booked_night","value":"236.004"},"annual_revenue":{"status":"available","unit":"USD","value":"62480.1284"},"booking_share":null,"occupancy":{"status":"available","unit":"fraction","value":"0.72341"},"property":{"airbnb_id":"123456789","bathrooms":1.5,"bedrooms":"2","capacity":"4","category":null,"image_urls":null,"latitude":34.05,"longitude":-118.25,"main_image_url":null,"name":"Example listing","room_type":"Entire home/apt"},"search_rank":2,"visibility_score":{"status":"available","unit":"score_0_100","value":"68.9040580808692"}}],"coverage":{"current_airbnb_activity":"unverified","inventory_delivery":"2026-09","published_at":null,"reporting_end_month":"2026-09-01","source_observed_at":"2026-09-30"},"credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":1,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"location":{"id":"0123456789abcdef01234567","label":"Los Angeles","state_or_territory":"CA"},"next_cursor":"<snapshot-bound-next-page-cursor>","page_size":18,"request_id":"example-request","sort_by":"visibility_score","sort_direction":"desc","statistics":{"adr":{"status":"unavailable","unit":"USD_per_booked_night","value":null},"complete_cohort":false,"end_month":null,"median_annual_revenue":{"status":"unavailable","unit":"USD","value":null},"occupancy":{"status":"unavailable","unit":"fraction","value":null},"property_count":48,"start_month":null}},"schema":{"$ref":"#/components/schemas/LocationResponse"}}},"description":"Successful Response"},"401":{"content":{"application/json":{"example":{"error":{"code":"authentication_required","message":"A valid customer Bearer API key is required."},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/AuthenticationError"}}},"description":"Invalid or missing Bearer API key."},"402":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"insufficient_credits"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Not enough available credits."},"403":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"invalid_continuation"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Access token does not match this account or request."},"404":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"property_not_found"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Property or location was not found."},"409":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"access_expired"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Quote changed, request pending, or access expired. Review a fresh quote before trying again."},"422":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"invalid_request"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Invalid parameters."},"429":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"account_burst"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Account rate limit; respect Retry-After."},"503":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"search_recovery_required"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Data temporarily unavailable. Check the same request with a quote before retrying."}},"summary":"Location","tags":["Customer API v1"]}},"/property":{"post":{"description":"Get property details, revenue, visibility, history and all known associated locations. Costs 1 credit, or is free while the property is tracked. Repeating the same request within 30 minutes is free. Missing metrics are marked unavailable.","operationId":"customer_property","requestBody":{"content":{"application/json":{"example":{"access_quote":"<quote_token>","airbnb_id":"123456789","as_of":"2026-10-22","deliberate_action":true},"schema":{"$ref":"#/components/schemas/PropertyInput"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"api_version":"v1","associated_locations":{"complete":true,"known_count":2,"locations":[{"best_observed_search":{"captured_at":"2026-10-22T10:00:00Z","check_in":"2026-11-01","check_out":"2026-11-03","coverage":null,"filters":{"room_access":"entire_home"},"guests":{"adults":2},"location_id":"0123456789abcdef01234567","page":1,"position_within_page":2,"rank":2,"reason":null,"status":"available"},"booking_share":{"basis":null,"cohort":null,"coverage":{},"denominators":{},"member_count":null,"monthly_change":{"absolute_change":null,"current_value":null,"direction":null,"percentage_change":null,"previous_value":null,"status":null,"unit":null},"reason":"booking_statistics_unavailable","status":"unavailable","trailing_12_change":{"absolute_change":null,"current_value":null,"direction":null,"percentage_change":null,"previous_value":null,"status":null,"unit":null},"unit":"percent","unresolved_count":null},"coordinate":{"latitude":34.05,"longitude":-118.25},"coverage":{"completed_contexts":4,"configured_contexts":4,"eligible_contexts":4,"valid_contexts":4},"demand":{"demand":{"status":"unavailable","unit":"demand_proxy_units","value":null},"distance":{"status":"unavailable","unit":"km","value":null},"effective_demand":{"status":"unavailable","unit":"demand_proxy_units","value":null},"fallback_applied":null,"normalized_weight":{"status":"unavailable","unit":"fraction","value":null},"reason":"pinned_full_membership_weights_unavailable","status":"unavailable"},"label":"Los Angeles","local_visibility":{"status":"available","unit":"score_0_100","value":"68.904058"},"location_id":"0123456789abcdef01234567","published_at":"2026-10-22T12:00:00Z","reason":null,"scored_property_count":48,"state_or_territory":"CA","status":"available","visibility_change":{"basis":"since_previous_publication","current_score":{"status":"unavailable","unit":"score_0_100","value":null},"delta":{"status":"unavailable","unit":"score_points","value":null},"previous_score":{"status":"unavailable","unit":"score_0_100","value":null},"published_at":null,"reason":"previous_publication_unavailable","status":"unavailable"},"visibility_rank":3},{"best_observed_search":{"captured_at":null,"check_in":null,"check_out":null,"coverage":null,"filters":null,"guests":null,"location_id":null,"page":null,"position_within_page":null,"rank":null,"reason":"search_evidence_unavailable","status":"unavailable"},"booking_share":{"basis":null,"cohort":null,"coverage":{},"denominators":{},"member_count":null,"monthly_change":{"absolute_change":null,"current_value":null,"direction":null,"percentage_change":null,"previous_value":null,"status":null,"unit":null},"reason":"booking_statistics_unavailable","status":"unavailable","trailing_12_change":{"absolute_change":null,"current_value":null,"direction":null,"percentage_change":null,"previous_value":null,"status":null,"unit":null},"unit":"percent","unresolved_count":null},"coordinate":{"latitude":34.02,"longitude":-118.49},"coverage":{"completed_contexts":0,"configured_contexts":4,"eligible_contexts":0,"valid_contexts":0},"demand":{"demand":{"status":"unavailable","unit":"demand_proxy_units","value":null},"distance":{"status":"unavailable","unit":"km","value":null},"effective_demand":{"status":"unavailable","unit":"demand_proxy_units","value":null},"fallback_applied":null,"normalized_weight":{"status":"unavailable","unit":"fraction","value":null},"reason":"pinned_full_membership_weights_unavailable","status":"unavailable"},"label":"Santa Monica","local_visibility":{"status":"unavailable","unit":"score_0_100","value":null},"location_id":"1123456789abcdef01234567","published_at":null,"reason":"local_score_not_published","scored_property_count":null,"state_or_territory":"CA","status":"unscored","visibility_change":{"basis":"since_previous_publication","current_score":{"status":"unavailable","unit":"score_0_100","value":null},"delta":{"status":"unavailable","unit":"score_points","value":null},"previous_score":{"status":"unavailable","unit":"score_0_100","value":null},"published_at":null,"reason":"previous_publication_unavailable","status":"unavailable"},"visibility_rank":null}],"reason":null,"status":"available","total_count":2},"coverage":{"current_airbnb_activity":"unverified","inventory_delivery":"2026-09","published_at":"2026-10-22T12:00:00Z","reporting_end_month":"2026-09-01","source_observed_at":"2026-09-30"},"credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":1,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"overall_visibility":{"best_observed_search":{"captured_at":null,"check_in":null,"check_out":null,"coverage":null,"filters":null,"guests":null,"location_id":null,"page":null,"position_within_page":null,"rank":null,"reason":null,"status":"unavailable"},"observed_locations":null,"published_at":"2026-10-22T12:00:00Z","reason":null,"score":{"status":"available","unit":"score_0_100","value":"68.904058"},"score_weight_coverage":null,"scored_locations":null,"status":"available"},"property":{"airbnb_id":"123456789","bathrooms":1.5,"bedrooms":"2","capacity":"4","category":null,"image_urls":null,"latitude":34.05,"longitude":-118.25,"main_image_url":null,"name":"Example listing","room_type":"Entire home/apt"},"request_id":"example-request","revenue":{"adr":{"status":"unavailable","unit":"USD_per_booked_night","value":null},"annual_revenue":{"status":"unavailable","unit":"USD","value":null},"basis":"airdna_estimated_property_revenue","coverage":{"end_month":null,"expected_months":null,"invalid_months":null,"missing_months":null,"observed_months":null,"start_month":null,"valid_months":null},"currency":"USD","months":[],"occupancy":{"status":"unavailable","unit":"fraction","value":null},"reporting_end_month":null,"revpar":{"status":"unavailable","unit":"USD_per_active_listing_night","value":null},"status":"unavailable"},"status":"selected","visibility_history":{"complete":true,"events":[],"next_after_epoch":null,"reason":null,"status":"awaiting_first_publication","timezone":"UTC","window_end":null,"window_start":null}},"schema":{"$ref":"#/components/schemas/PropertyResponse"}}},"description":"Successful Response"},"401":{"content":{"application/json":{"example":{"error":{"code":"authentication_required","message":"A valid customer Bearer API key is required."},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/AuthenticationError"}}},"description":"Invalid or missing Bearer API key."},"402":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"insufficient_credits"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Not enough available credits."},"403":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"invalid_continuation"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Access token does not match this account or request."},"404":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"property_not_found"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Property or location was not found."},"409":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"access_expired"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Quote changed, request pending, or access expired. Review a fresh quote before trying again."},"422":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"invalid_request"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Invalid parameters."},"429":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"account_burst"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Account rate limit; respect Retry-After."},"503":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"search_recovery_required"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Data temporarily unavailable. Check the same request with a quote before retrying."}},"summary":"Property","tags":["Customer API v1"]}},"/quote":{"post":{"description":"Check cost and available balance for an exact request. Free; does not reserve credits. Send quote_token as access_quote with deliberate_action: true when you accept the price. If the quote expires or changes, review a new quote before running again.","operationId":"customer_quote","requestBody":{"content":{"application/json":{"example":{"operation":"property","parameters":{"airbnb_id":"123456789","as_of":"2026-10-22"}},"schema":{"$ref":"#/components/schemas/QuoteInput"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"allowed":true,"api_version":"v1","credit_cost":1,"credits":{"access_expires_at":null,"access_token":null,"balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"expires_at":1792670700,"operation":"property","pending":false,"quote_token":"<quote_token>","reason":null,"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/QuoteResponse"}}},"description":"Successful Response"},"401":{"content":{"application/json":{"example":{"error":{"code":"authentication_required","message":"A valid customer Bearer API key is required."},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/AuthenticationError"}}},"description":"Invalid or missing Bearer API key."},"402":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"insufficient_credits"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Not enough available credits."},"403":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"invalid_continuation"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Access token does not match this account or request."},"404":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"property_not_found"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Property or location was not found."},"409":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"access_expired"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Quote changed, request pending, or access expired. Review a fresh quote before trying again."},"422":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"invalid_request"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Invalid parameters."},"429":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"account_burst"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Account rate limit; respect Retry-After."},"503":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"search_recovery_required"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Data temporarily unavailable. Check the same request with a quote before retrying."}},"summary":"Preview cost","tags":["Customer API v1"]}},"/suggestions":{"post":{"description":"Find properties or locations. Property names match whole words; numeric input matches Airbnb ID prefixes. Returns up to eight results. Free; no pagination.","operationId":"customer_suggestions","requestBody":{"content":{"application/json":{"example":{"limit":8,"query":"Los Angeles","type":"location"},"schema":{"$ref":"#/components/schemas/SuggestionsInput"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"api_version":"v1","catalog_id":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","credits":{"access_expires_at":null,"access_token":null,"balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":0,"credit_cost":0,"free_reason":"free_discovery","remaining_available_balance":9,"reuse_reason":null},"has_more":false,"request_id":"example-request","suggestions":[{"id":"0123456789abcdef01234567","label":"Los Angeles","state_or_territory":"CA","type":"location"}],"type":"location"},"schema":{"$ref":"#/components/schemas/SuggestionsResponse"}}},"description":"Successful Response"},"401":{"content":{"application/json":{"example":{"error":{"code":"authentication_required","message":"A valid customer Bearer API key is required."},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/AuthenticationError"}}},"description":"Invalid or missing Bearer API key."},"402":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"insufficient_credits"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Not enough available credits."},"403":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"invalid_continuation"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Access token does not match this account or request."},"404":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"property_not_found"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Property or location was not found."},"409":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"access_expired"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Quote changed, request pending, or access expired. Review a fresh quote before trying again."},"422":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"invalid_request"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Invalid parameters."},"429":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"account_burst"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Account rate limit; respect Retry-After."},"503":{"content":{"application/json":{"example":{"api_version":"v1","credits":{"access_expires_at":"2026-10-22T12:30:00Z","access_token":"<opaque-account-grant>","balance_revision":42,"balance_timestamp":"2026-10-22T12:00:00Z","charged":0,"configured_credit_cost":1,"credit_cost":1,"free_reason":null,"remaining_available_balance":9,"reuse_reason":null},"error":{"code":"search_recovery_required"},"request_id":"example-request"},"schema":{"$ref":"#/components/schemas/CustomerError"}}},"description":"Data temporarily unavailable. Check the same request with a quote before retrying."}},"summary":"Suggestions","tags":["Customer API v1"]}}},"security":[{"CustomerBearer":[]}],"servers":[{"url":"https://app.colbyos.com/api/v1","description":"ColbyOS public Bearer API"}]}