{"openapi":"3.1.0","info":{"title":"CoHostBnB public read API (shared SupportAI engine)","description":"Public read routes (no auth) plus the /v1/agent API, /v1/usage and /v1/export for scoped agent API keys. Dashboard-only, token-bearing and billing-mutation routes are excluded. SupportAI has separate tenants; the public OAuth MCP tools expose only CoHostBnB public information.","version":"1.0.0","x-rate-limit":{"requests_per_minute_per_key":60}},"paths":{"/v1/host-os":{"get":{"summary":"Console","operationId":"console_v1_host_os_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/cohost/state-rules":{"get":{"summary":"Public Rules","operationId":"public_rules_v1_cohost_state_rules_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"dbpr_license_number","in":"query","required":false,"schema":{"type":"string","default":"","title":"Dbpr License Number"}},{"name":"dbpr_attested","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dbpr Attested"}}],"responses":{"200":{"description":"Exact public handler response","content":{"application/json":{"schema":{"type":"object","properties":{"states":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"],"additionalProperties":true}},"policy":{"type":"object","properties":{"state":{"type":"string"},"city":{"type":"string"},"status":{"type":"string","enum":["GREEN","YELLOW","RED","UNKNOWN"]},"version":{"type":"string"},"rules_sha256":{"type":"string"},"state_verified":{"type":"boolean"},"flat_tiers":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"max_bedrooms":{"type":"integer"},"cents":{"type":"integer"}},"required":["label","cents"]}},"managed_allowed":{"type":"boolean"},"requirements_missing":{"type":"array","items":{"type":"string"}},"qualification_notice":{"type":"string"},"fee_model":{"type":"string","enum":["software_only","none","percentage","flat_monthly"]},"percentage":{"type":"number"},"flat_monthly_cents":{"type":"integer"},"airbnb_payout_allowed":{"type":"boolean"},"host_publishes":{"type":"boolean"},"city_rule":{"type":"object","additionalProperties":true},"reasons":{"type":"array","items":{"type":"string"}},"tax_warning":{"type":"string"},"disclosure":{"type":"string"}},"required":["state","city","status","version","rules_sha256","state_verified","flat_tiers","managed_allowed","requirements_missing","qualification_notice","fee_model","percentage","flat_monthly_cents","airbnb_payout_allowed","host_publishes","city_rule","reasons","tax_warning","disclosure"],"additionalProperties":true},"ga_conditions":{"type":"object","additionalProperties":{"type":"string"}}},"required":["states","policy","ga_conditions"],"additionalProperties":true}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[],"description":"Exact policy snapshot, including all gates and notices. State verification is required before ordering. This public endpoint does not accept verification or create an order. GREEN may downgrade to YELLOW; RED and UNKNOWN block managed service. Inspect managed_allowed, requirements_missing and reasons."}},"/v1/admin/cohost/state-rules/dashboard":{"get":{"summary":"Admin Dashboard","operationId":"admin_dashboard_v1_admin_cohost_state_rules_dashboard_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/team-seat/workspace":{"get":{"summary":"Workspace","operationId":"workspace_v1_team_seat_workspace_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/public-api/guide":{"get":{"summary":"Guide","operationId":"guide_v1_public_api_guide_get","responses":{"200":{"description":"Exact public handler response","content":{"text/plain":{"schema":{"type":"string"}}}}},"security":[]}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Exact public handler response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string"},"version":{"type":"string"},"sentinel":{"type":"string"},"docs":{"type":"string"},"status":{"type":"string"}},"required":["service","version","sentinel","docs","status"],"additionalProperties":true}},"text/html":{"schema":{"type":"string"}}}}},"security":[],"description":"API host returns JSON; marketing hosts return the landing page or a redirect."}},"/v1/status":{"get":{"summary":"Status Endpoint","description":"Source of truth for build status — matches cohostbnb.xyz/pricing badges.","operationId":"status_endpoint_v1_status_get","responses":{"200":{"description":"Exact public handler response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string"},"version":{"type":"string"},"sentinel":{"type":"string"},"features":{"type":"object","additionalProperties":true},"connectors":{"type":"object","additionalProperties":true}},"required":["service","version","sentinel","features","connectors"],"additionalProperties":true}}}}},"security":[]}},"/v1/health":{"get":{"summary":"Health","operationId":"health_v1_health_get","responses":{"200":{"description":"Exact public handler response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"service":{"type":"string"},"version":{"type":"string"},"llm":{"type":"object","properties":{"day":{"type":"string"},"drafts_failed":{"type":"integer"},"drafts_total":{"type":"integer"},"failure_rate":{"type":"number"},"degraded":{"type":"boolean"}},"required":["day","drafts_failed","drafts_total","failure_rate","degraded"],"additionalProperties":true},"retention":{"type":"object","properties":{"enabled":{"type":"boolean"},"status":{"type":"string"},"last_completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["enabled","status","last_completed_at"],"additionalProperties":true}},"required":["ok","service","version","llm","retention"],"additionalProperties":true}}}}},"security":[]}},"/v1/usage":{"get":{"tags":["agent"],"summary":"Credit usage plus metered agent/MCP calls, free quota and per-key breakdown","operationId":"get_usage_v1_usage_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x_empire_tenant_id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X Empire Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Usage V1 Usage Get"}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key lacks the required scope (detail insufficient_scope:<scope>)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}}},"x-pricing":{"unit":"api_or_mcp_call","price_usd_per_call":0,"free_quota_per_month_per_account":1000,"overage":"metered_not_billed","note":"Included with every plan. Usage over the free quota is recorded at /v1/usage; no per-call price is charged until a metered price is published here."},"x-scope":"billing","security":[{"AgentKey":["billing"]},{"TenantToken":[]}]}},"/v1/pricing-tiers":{"get":{"summary":"Pricing Tiers","description":"Public tier table — single source of truth for cohostbnb.xyz/pricing.","operationId":"pricing_tiers_v1_pricing_tiers_get","responses":{"200":{"description":"Exact public handler response","content":{"application/json":{"schema":{"type":"object","properties":{"tiers":{"type":"array","items":{"type":"object","required":["key"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"amount_cents":{"anyOf":[{"type":"integer"},{"type":"null"}]},"interval":{"type":"string"},"category":{"type":"string"},"stripe_price_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"lookup_key":{"anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"type":"integer"},"ai_reply_cap":{"anyOf":[{"type":"integer"},{"type":"null"}]},"autosend_allowed":{"type":"boolean"},"legacy":{"type":"boolean"},"grandfathered_until":{"type":"string"},"maps_to":{"type":"array","items":{"type":"string"}},"extra_property_cents":{"type":"integer"},"revenue_share_pct":{"type":"number"},"setup_fee_cents":{"type":"integer"},"min_fee_per_listing_cents":{"type":"integer"},"founding_pct":{"type":"number"},"founding_units":{"type":"integer"},"founding_months":{"type":"integer"},"volume_units":{"type":"integer"},"discount_points":{"type":"number"},"annual_discount_points":{"type":"number"},"discounted_setup_waived":{"type":"boolean"},"per_listing":{"type":"boolean"},"tiers":{"type":"array","items":{"type":"object","additionalProperties":true}},"features":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"array","items":{"type":"string"}}]}},"additionalProperties":true}},"addons":{"type":"array","items":{"type":"object","required":["key"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"amount_cents":{"anyOf":[{"type":"integer"},{"type":"null"}]},"interval":{"type":"string"},"category":{"type":"string"},"stripe_price_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"lookup_key":{"anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"type":"integer"},"ai_reply_cap":{"anyOf":[{"type":"integer"},{"type":"null"}]},"autosend_allowed":{"type":"boolean"},"legacy":{"type":"boolean"},"grandfathered_until":{"type":"string"},"maps_to":{"type":"array","items":{"type":"string"}},"extra_property_cents":{"type":"integer"},"revenue_share_pct":{"type":"number"},"setup_fee_cents":{"type":"integer"},"min_fee_per_listing_cents":{"type":"integer"},"founding_pct":{"type":"number"},"founding_units":{"type":"integer"},"founding_months":{"type":"integer"},"volume_units":{"type":"integer"},"discount_points":{"type":"number"},"annual_discount_points":{"type":"number"},"discounted_setup_waived":{"type":"boolean"},"per_listing":{"type":"boolean"},"tiers":{"type":"array","items":{"type":"object","additionalProperties":true}},"features":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"array","items":{"type":"string"}}]}},"additionalProperties":true}},"managed":{"type":"array","items":{"type":"object","required":["key"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"amount_cents":{"anyOf":[{"type":"integer"},{"type":"null"}]},"interval":{"type":"string"},"category":{"type":"string"},"stripe_price_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"lookup_key":{"anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"type":"integer"},"ai_reply_cap":{"anyOf":[{"type":"integer"},{"type":"null"}]},"autosend_allowed":{"type":"boolean"},"legacy":{"type":"boolean"},"grandfathered_until":{"type":"string"},"maps_to":{"type":"array","items":{"type":"string"}},"extra_property_cents":{"type":"integer"},"revenue_share_pct":{"type":"number"},"setup_fee_cents":{"type":"integer"},"min_fee_per_listing_cents":{"type":"integer"},"founding_pct":{"type":"number"},"founding_units":{"type":"integer"},"founding_months":{"type":"integer"},"volume_units":{"type":"integer"},"discount_points":{"type":"number"},"annual_discount_points":{"type":"number"},"discounted_setup_waived":{"type":"boolean"},"per_listing":{"type":"boolean"},"tiers":{"type":"array","items":{"type":"object","additionalProperties":true}},"features":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"array","items":{"type":"string"}}]}},"additionalProperties":true}},"pricing_version":{"type":"string"},"competitors":{"type":"array","items":{"type":"object","additionalProperties":true}}},"required":["tiers","addons","managed","pricing_version","competitors"],"additionalProperties":true}}}}},"security":[]}},"/api/support_chat/health":{"get":{"summary":"Support Chat Health","operationId":"support_chat_health_api_support_chat_health_get","responses":{"200":{"description":"Exact public handler response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"brand":{"type":"string"},"sentinel":{"type":"string"},"kb_sentinel":{"type":"string"},"kb_files":{"type":"integer"},"kb_chunks":{"type":"integer"},"f4586_sentinel":{"type":"string"},"engine":{"type":"string"}},"required":["ok","brand","sentinel","kb_sentinel","kb_files","kb_chunks","f4586_sentinel","engine"],"additionalProperties":true}}}}},"security":[]}},"/privacy":{"get":{"summary":"Privacy","operationId":"privacy_privacy_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/legal/privacy":{"get":{"summary":"Privacy","operationId":"privacy_legal_privacy_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/terms":{"get":{"summary":"Terms","operationId":"terms_terms_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/legal/terms":{"get":{"summary":"Terms","operationId":"terms_legal_terms_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/refund":{"get":{"summary":"Refund","operationId":"refund_refund_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/legal/refund":{"get":{"summary":"Refund","operationId":"refund_legal_refund_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/support":{"get":{"summary":"Contact","operationId":"contact_support_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/contact":{"get":{"summary":"Contact","operationId":"contact_contact_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/dpa":{"get":{"summary":"Dpa","operationId":"dpa_dpa_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/legal/dpa":{"get":{"summary":"Dpa","operationId":"dpa_legal_dpa_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/inbox/verticals":{"get":{"summary":"Verticals","operationId":"verticals_v1_inbox_verticals_get","responses":{"200":{"description":"Exact public handler response","content":{"application/json":{"schema":{"type":"object","properties":{"verticals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"intents":{"type":"array","items":{"type":"string"}},"default_tone":{"type":"string"}},"required":["id","label","intents","default_tone"],"additionalProperties":true}},"default":{"type":"string"},"sentinel":{"type":"string"}},"required":["verticals","default","sentinel"],"additionalProperties":true}}}}},"security":[]}},"/v1/inbox/webpush/manifest.json":{"get":{"summary":"Get Pwa Manifest","description":"Static PWA manifest — no auth, this is a public asset browsers fetch\ndirectly (same as any site's manifest.json).","operationId":"get_pwa_manifest_v1_inbox_webpush_manifest_json_get","responses":{"200":{"description":"Exact public handler response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"security":[]}},"/v1/inbox/webpush/service-worker.js":{"get":{"summary":"Get Service Worker","operationId":"get_service_worker_v1_inbox_webpush_service_worker_js_get","responses":{"200":{"description":"Exact public handler response","content":{"application/javascript":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/inbox/chatwoot/health":{"get":{"summary":"Chatwoot Health","description":"Booleans only — proves the push path is wired without leaking anything.","operationId":"chatwoot_health_v1_inbox_chatwoot_health_get","responses":{"200":{"description":"Exact public handler response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"webhook_secret_configured":{"type":"boolean"},"chatwoot_token_configured":{"type":"boolean"},"inboxes_mapped":{"type":"integer"},"draft_only":{"type":"boolean"},"base_url_host":{"type":"string"},"sentinel":{"type":"string"}},"required":["status","webhook_secret_configured","chatwoot_token_configured","inboxes_mapped","draft_only","base_url_host","sentinel"],"additionalProperties":true}}}}},"security":[]}},"/v1/pricing/dashboard":{"get":{"summary":"Dashboard","operationId":"dashboard_v1_pricing_dashboard_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/channels":{"get":{"summary":"List Channels","operationId":"list_channels_v1_channels_get","responses":{"200":{"description":"Exact public handler response","content":{"application/json":{"schema":{"type":"object","properties":{"channels":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"where":{"type":"string"}},"required":["key","label","where"],"additionalProperties":true}},"calendar_sync":{"type":"string"},"messaging":{"type":"string"},"sentinel":{"type":"string"}},"required":["channels","calendar_sync","messaging","sentinel"],"additionalProperties":true}}}}},"security":[]}},"/v1/onboarding/city-rules":{"get":{"summary":"City Rules Card","operationId":"city_rules_card_v1_onboarding_city_rules_get","parameters":[{"name":"zip","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zip"}}],"responses":{"200":{"description":"Exact public handler response","content":{"application/json":{"schema":{"type":"object","properties":{"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"tax":{"type":"string"},"permit":{"type":"string"},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"jurisdiction":{"anyOf":[{"type":"string"},{"type":"null"}]},"zip":{"anyOf":[{"type":"string"},{"type":"null"}]},"checked":{"type":"string"},"you_are_host_and_operator":{"type":"boolean"},"disclaimer":{"type":"string"},"attestation_text":{"type":"string"},"sentinel":{"type":"string"}},"required":["city","tax","permit","source","jurisdiction","zip","checked","you_are_host_and_operator","disclaimer","attestation_text","sentinel"],"additionalProperties":true}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/v1/templates/channels":{"get":{"summary":"Template Channels","operationId":"template_channels_v1_templates_channels_get","responses":{"200":{"description":"Exact public handler response","content":{"application/json":{"schema":{"type":"object","properties":{"channels":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"scheduled":{"type":"string"},"saved":{"type":"string"},"guide":{"type":"array","items":{"type":"string"}}},"required":["key","label","scheduled","saved","guide"],"additionalProperties":true}},"other_channels":{"type":"string"},"placeholders":{"type":"array","items":{"type":"string"}},"sentinel":{"type":"string"}},"required":["channels","other_channels","placeholders","sentinel"],"additionalProperties":true}}}}},"security":[]}},"/v1/host-os/push-sw.js":{"get":{"summary":"Push Worker","operationId":"push_worker_v1_host_os_push_sw_js_get","responses":{"200":{"description":"Exact public handler response","content":{"application/javascript":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/ops/ui":{"get":{"summary":"Ops Ui","operationId":"ops_ui_v1_ops_ui_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/books/workspace":{"get":{"summary":"Books Workspace","operationId":"books_workspace_v1_books_workspace_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/guidebook/ui":{"get":{"summary":"Guidebook Ui","operationId":"guidebook_ui_v1_guidebook_ui_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/messaging/ui":{"get":{"summary":"Messaging Ui","operationId":"messaging_ui_v1_messaging_ui_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/claims/ui":{"get":{"summary":"Claims Ui","operationId":"claims_ui_v1_claims_ui_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/books/ui":{"get":{"summary":"Books Ui","operationId":"books_ui_v1_books_ui_get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/agent/keys":{"post":{"tags":["agent"],"summary":"Create an agent API key (dashboard token required; key shown once)","operationId":"create_key_v1_agent_keys_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x_empire_tenant_id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X Empire Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"400":{"description":"confirm_required or invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"State conflict or idempotency_conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"TenantToken":[]}]},"get":{"tags":["agent"],"summary":"List agent API keys (prefix only; the key itself is never returned again)","operationId":"list_keys_v1_agent_keys_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x_empire_tenant_id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X Empire Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"TenantToken":[]}]}},"/v1/agent/keys/{key_id}":{"delete":{"tags":["agent"],"summary":"Revoke an agent API key","operationId":"revoke_key_v1_agent_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x_empire_tenant_id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X Empire Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"400":{"description":"confirm_required or invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"State conflict or idempotency_conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"TenantToken":[]}]}},"/v1/agent/listings":{"get":{"tags":["agent"],"summary":"List listings (cohostbnb_list_listings)","operationId":"r_listings_v1_agent_listings_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key lacks the required scope (detail insufficient_scope:<scope>)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}}},"x-pricing":{"unit":"api_or_mcp_call","price_usd_per_call":0,"free_quota_per_month_per_account":1000,"overage":"metered_not_billed","note":"Included with every plan. Usage over the free quota is recorded at /v1/usage; no per-call price is charged until a metered price is published here."},"x-scope":"read","security":[{"AgentKey":["read"]}]}},"/v1/agent/bookings":{"get":{"tags":["agent"],"summary":"List bookings (cohostbnb_list_bookings)","operationId":"r_bookings_v1_agent_bookings_get","parameters":[{"name":"listing_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Listing Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key lacks the required scope (detail insufficient_scope:<scope>)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}}},"x-pricing":{"unit":"api_or_mcp_call","price_usd_per_call":0,"free_quota_per_month_per_account":1000,"overage":"metered_not_billed","note":"Included with every plan. Usage over the free quota is recorded at /v1/usage; no per-call price is charged until a metered price is published here."},"x-scope":"read","security":[{"AgentKey":["read"]}]}},"/v1/agent/messages":{"get":{"tags":["agent"],"summary":"List guest messages (cohostbnb_list_messages)","operationId":"r_messages_v1_agent_messages_get","parameters":[{"name":"listing_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Listing Id"}},{"name":"direction","in":"query","required":false,"schema":{"type":"string","default":"","title":"Direction"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key lacks the required scope (detail insufficient_scope:<scope>)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}}},"x-pricing":{"unit":"api_or_mcp_call","price_usd_per_call":0,"free_quota_per_month_per_account":1000,"overage":"metered_not_billed","note":"Included with every plan. Usage over the free quota is recorded at /v1/usage; no per-call price is charged until a metered price is published here."},"x-scope":"read","security":[{"AgentKey":["read"]}]}},"/v1/agent/drafts":{"get":{"tags":["agent"],"summary":"List AI reply drafts awaiting approval (cohostbnb_list_drafts)","operationId":"r_drafts_v1_agent_drafts_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"pending_review","title":"State"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key lacks the required scope (detail insufficient_scope:<scope>)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}}},"x-pricing":{"unit":"api_or_mcp_call","price_usd_per_call":0,"free_quota_per_month_per_account":1000,"overage":"metered_not_billed","note":"Included with every plan. Usage over the free quota is recorded at /v1/usage; no per-call price is charged until a metered price is published here."},"x-scope":"read","security":[{"AgentKey":["read"]}]}},"/v1/agent/pricing/suggestions":{"get":{"tags":["agent"],"summary":"List nightly price suggestions (cohostbnb_list_pricing_suggestions)","operationId":"r_pricing_v1_agent_pricing_suggestions_get","parameters":[{"name":"listing_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Listing Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key lacks the required scope (detail insufficient_scope:<scope>)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}}},"x-pricing":{"unit":"api_or_mcp_call","price_usd_per_call":0,"free_quota_per_month_per_account":1000,"overage":"metered_not_billed","note":"Included with every plan. Usage over the free quota is recorded at /v1/usage; no per-call price is charged until a metered price is published here."},"x-scope":"read","security":[{"AgentKey":["read"]}]}},"/v1/agent/connections":{"get":{"tags":["agent"],"summary":"PMS connection status, no credentials (cohostbnb_list_pms_connections)","operationId":"r_connections_v1_agent_connections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key lacks the required scope (detail insufficient_scope:<scope>)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}}},"security":[{"AgentKey":["read"]}],"x-pricing":{"unit":"api_or_mcp_call","price_usd_per_call":0,"free_quota_per_month_per_account":1000,"overage":"metered_not_billed","note":"Included with every plan. Usage over the free quota is recorded at /v1/usage; no per-call price is charged until a metered price is published here."},"x-scope":"read"}},"/v1/agent/drafts/{draft_id}/approve":{"post":{"tags":["agent"],"summary":"Approve and send a draft to the guest (cohostbnb_approve_draft)","operationId":"r_approve_v1_agent_drafts__draft_id__approve_post","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"integer","title":"Draft Id"}},{"name":"idempotency-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key lacks the required scope (detail insufficient_scope:<scope>)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"400":{"description":"confirm_required or invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"State conflict or idempotency_conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-pricing":{"unit":"api_or_mcp_call","price_usd_per_call":0,"free_quota_per_month_per_account":1000,"overage":"metered_not_billed","note":"Included with every plan. Usage over the free quota is recorded at /v1/usage; no per-call price is charged until a metered price is published here."},"x-scope":"write","security":[{"AgentKey":["write"]}],"x-requires-confirm":true}},"/v1/agent/drafts/{draft_id}/reject":{"post":{"tags":["agent"],"summary":"Discard a draft (cohostbnb_reject_draft)","operationId":"r_reject_v1_agent_drafts__draft_id__reject_post","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"integer","title":"Draft Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key lacks the required scope (detail insufficient_scope:<scope>)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"400":{"description":"confirm_required or invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"State conflict or idempotency_conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-pricing":{"unit":"api_or_mcp_call","price_usd_per_call":0,"free_quota_per_month_per_account":1000,"overage":"metered_not_billed","note":"Included with every plan. Usage over the free quota is recorded at /v1/usage; no per-call price is charged until a metered price is published here."},"x-scope":"write","security":[{"AgentKey":["write"]}],"x-requires-confirm":true}},"/v1/agent/listings/{listing_id}/price":{"post":{"tags":["agent"],"summary":"Set a listing's nightly price (cohostbnb_set_listing_price)","operationId":"r_price_v1_agent_listings__listing_id__price_post","parameters":[{"name":"listing_id","in":"path","required":true,"schema":{"type":"string","title":"Listing Id"}},{"name":"idempotency-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key lacks the required scope (detail insufficient_scope:<scope>)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"400":{"description":"confirm_required or invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"State conflict or idempotency_conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-pricing":{"unit":"api_or_mcp_call","price_usd_per_call":0,"free_quota_per_month_per_account":1000,"overage":"metered_not_billed","note":"Included with every plan. Usage over the free quota is recorded at /v1/usage; no per-call price is charged until a metered price is published here."},"x-scope":"write","security":[{"AgentKey":["write"]}],"x-requires-confirm":true}},"/v1/export":{"get":{"tags":["agent"],"summary":"Export your data in an open format (JSON, or CSV for one object)","operationId":"export_data_v1_export_get","parameters":[{"name":"object","in":"query","required":false,"schema":{"type":"string","description":"comma list of: listings,bookings,messages,drafts,pricing_suggestions","default":"","title":"Object"},"description":"comma list of: listings,bookings,messages,drafts,pricing_suggestions"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","default":"json","title":"Format"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x_empire_tenant_id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X Empire Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing, invalid or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key lacks the required scope (detail insufficient_scope:<scope>)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute per key"},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window frees a slot"}}}},"x-pricing":{"unit":"api_or_mcp_call","price_usd_per_call":0,"free_quota_per_month_per_account":1000,"overage":"metered_not_billed","note":"Included with every plan. Usage over the free quota is recorded at /v1/usage; no per-call price is charged until a metered price is published here."},"x-scope":"read","security":[{"AgentKey":["read"]},{"TenantToken":[]}]}},"/compare/cohostbnb-vs-hospitable/":{"get":{"summary":" View","operationId":"_view_compare_cohostbnb_vs_hospitable__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/alternatives/hospitable/":{"get":{"summary":" View","operationId":"_view_alternatives_hospitable__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/compare/cohostbnb-vs-hostaway/":{"get":{"summary":" View","operationId":"_view_compare_cohostbnb_vs_hostaway__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/alternatives/hostaway/":{"get":{"summary":" View","operationId":"_view_alternatives_hostaway__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/compare/cohostbnb-vs-guesty/":{"get":{"summary":" View","operationId":"_view_compare_cohostbnb_vs_guesty__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/alternatives/guesty/":{"get":{"summary":" View","operationId":"_view_alternatives_guesty__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/compare/cohostbnb-vs-hostfully/":{"get":{"summary":" View","operationId":"_view_compare_cohostbnb_vs_hostfully__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/alternatives/hostfully/":{"get":{"summary":" View","operationId":"_view_alternatives_hostfully__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/compare/cohostbnb-vs-besty-ai/":{"get":{"summary":" View","operationId":"_view_compare_cohostbnb_vs_besty_ai__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/alternatives/besty-ai/":{"get":{"summary":" View","operationId":"_view_alternatives_besty_ai__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/compare/cohostbnb-vs-conduit-hostai/":{"get":{"summary":" View","operationId":"_view_compare_cohostbnb_vs_conduit_hostai__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/alternatives/conduit-hostai/":{"get":{"summary":" View","operationId":"_view_alternatives_conduit_hostai__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/use-cases/answering-the-same-guest-questions-without-copy-pasting/":{"get":{"summary":" View","operationId":"_view_use_cases_answering_the_same_guest_questions_without_copy_pasting__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/use-cases/keeping-replies-fast-while-you-are-asleep-or-at-work/":{"get":{"summary":" View","operationId":"_view_use_cases_keeping_replies_fast_while_you_are_asleep_or_at_work__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/how-to/how-to-write-airbnb-message-templates-that-still-sound-human/":{"get":{"summary":" View","operationId":"_view_how_to_how_to_write_airbnb_message_templates_that_still_sound_human__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/how-to/how-to-reduce-your-airbnb-response-time/":{"get":{"summary":" View","operationId":"_view_how_to_how_to_reduce_your_airbnb_response_time__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/for/single-listing-hosts/":{"get":{"summary":" View","operationId":"_view_for_single_listing_hosts__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/for/multi-listing-hosts/":{"get":{"summary":" View","operationId":"_view_for_multi_listing_hosts__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/for/co-hosts/":{"get":{"summary":" View","operationId":"_view_for_co_hosts__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/for/property-managers/":{"get":{"summary":" View","operationId":"_view_for_property_managers__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/for/cabin-and-cottage-rentals/":{"get":{"summary":" View","operationId":"_view_for_cabin_and_cottage_rentals__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/for/city-apartment-rentals/":{"get":{"summary":" View","operationId":"_view_for_city_apartment_rentals__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/resources/":{"get":{"summary":" View","operationId":"_view_resources__get","responses":{"200":{"description":"Exact public handler response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/sitemap-gtm.xml":{"get":{"summary":" Gtm Sitemap","operationId":"_gtm_sitemap_sitemap_gtm_xml_get","responses":{"200":{"description":"Exact public handler response","content":{"application/xml":{"schema":{"type":"string"}}}}},"security":[]}},"/6648eb0a9d19317c4a0b56a656015acd.txt":{"get":{"summary":" Keyfile","operationId":"_keyfile_6648eb0a9d19317c4a0b56a656015acd_txt_get","responses":{"200":{"description":"Exact public handler response","content":{"text/plain":{"schema":{"type":"string"}}}}},"security":[]}},"/sitemap.xml":{"get":{"summary":" Gtm Sitemap","operationId":"_gtm_sitemap_sitemap_xml_get","responses":{"200":{"description":"Exact public handler response","content":{"application/xml":{"schema":{"type":"string"}}}}},"security":[]}}},"components":{"schemas":{"ApproveReq":{"properties":{"confirm":{"type":"boolean","title":"Confirm","description":"Must be true. Sends the reply to the guest via your connected PMS.","default":false},"edited_reply":{"anyOf":[{"type":"string","maxLength":8000},{"type":"null"}],"title":"Edited Reply"}},"type":"object","title":"ApproveReq"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"KeyReq":{"properties":{"label":{"type":"string","maxLength":255,"title":"Label","default":"agent key"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes","description":"Any of read, write, billing","default":["read"]}},"type":"object","title":"KeyReq"},"PriceReq":{"properties":{"nightly_price_usd":{"type":"number","maximum":100000.0,"exclusiveMinimum":0.0,"title":"Nightly Price Usd"},"currency":{"type":"string","title":"Currency","default":"USD"},"confirm":{"type":"boolean","title":"Confirm","description":"Must be true. Changes the live nightly price.","default":false}},"type":"object","required":["nightly_price_usd"],"title":"PriceReq"},"RejectReq":{"properties":{"confirm":{"type":"boolean","title":"Confirm","description":"Must be true. Discards the draft.","default":false}},"type":"object","title":"RejectReq"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"Error":{"type":"object","required":["error","detail"],"properties":{"error":{"type":"string","example":"http_error"},"detail":{"type":"string","example":"insufficient_scope:write"}}}},"securitySchemes":{"AgentKey":{"type":"http","scheme":"bearer","bearerFormat":"cbnb_ak_*","description":"Per-customer agent key with scopes read, write, billing. Create with POST /v1/agent/keys."},"TenantToken":{"type":"http","scheme":"bearer","description":"Dashboard token for the account."}}},"servers":[{"url":"https://api.cohostbnb.xyz"}],"x-pricing":{"unit":"api_or_mcp_call","price_usd_per_call":0,"free_quota_per_month_per_account":1000,"overage":"metered_not_billed","note":"Included with every plan. Usage over the free quota is recorded at /v1/usage; no per-call price is charged until a metered price is published here."}}