The Hostex API provides comprehensive management of property and reservation systems for property managers and hosts. This Python library wraps the Hostex API v3.0.0 (Beta).
Base URL: https://api.hostex.io/v3
Each API request must include a valid Hostex-Access-Token in the request header:
Hostex-Access-Token: your_access_token_here
For software partners building SaaS platforms or third-party tools, OAuth 2.0 authentication is required.
- Endpoint:
GET /properties - Description: Retrieves a comprehensive list of properties with details
- Parameters:
offset(int): Starting point for results (default: 0)limit(int): Maximum results to return, max 100 (default: 20)id(int): Filter by specific property ID
Response Structure:
{
"request_id": "string",
"error_code": 200,
"error_msg": "Success",
"data": {
"properties": [
{
"id": 12345,
"title": "Beautiful Apartment",
"channels": [
{
"channel_type": "airbnb",
"listing_id": "airbnb_listing_123"
}
],
"address": "123 Main St",
"longitude": "-122.4194",
"latitude": "37.7749"
}
],
"total": 1
}
}- Endpoint:
GET /room_types - Description: Fetches details and lists of room types
- Parameters:
offset(int): Starting point (default: 0)limit(int): Maximum results, max 100 (default: 20)
- Endpoint:
GET /reservations - Description: Provides detailed lookup of reservation information
- Parameters:
reservation_code(string): Filter by reservation codeproperty_id(int): Filter by property IDstatus(string): Filter by reservation statusstart_check_in_date(date): Check-in date range start (YYYY-MM-DD)end_check_in_date(date): Check-in date range end (YYYY-MM-DD)start_check_out_date(date): Check-out date range start (YYYY-MM-DD)end_check_out_date(date): Check-out date range end (YYYY-MM-DD)order_by(string): Sort field (default: 'booked_at')offset(int): Starting index (default: 0)limit(int): Maximum results, max 100 (default: 20)
Reservation Status Values:
wait_accept- Waiting for acceptancewait_pay- Waiting for paymentaccepted- Acceptedcancelled- Cancelleddenied- Deniedtimeout- Timed out
- Endpoint:
POST /reservations - Description: Creates a direct booking reservation in Hostex
- Required Fields:
property_id(string): Property IDcustom_channel_id(int): Custom channel IDcheck_in_date(date): Check-in date (YYYY-MM-DD)check_out_date(date): Check-out date (YYYY-MM-DD)guest_name(string): Primary guest namecurrency(string): Currency coderate_amount(int): Total rate amountcommission_amount(int): Commission amountreceived_amount(int): Total received amountincome_method_id(int): Income method identifier
- Endpoint:
DELETE /reservations/{reservation_code} - Description: Cancel a direct booking reservation (channel bookings not supported)
- Endpoint:
PATCH /reservations/{stay_code}/check_in_details - Description: Update lock code for a stay
- Body:
{"lock_code": "string"}
- Endpoint:
GET /availabilities - Description: Retrieves availability information for properties
- Parameters:
property_ids(string): Comma-separated property IDs (max 100)start_date(date): Start date (YYYY-MM-DD, within 1 year)end_date(date): End date (YYYY-MM-DD, within 3 years)
- Endpoint:
POST /availabilities - Description: Updates property availability status
- Body Parameters:
property_ids(array): Property IDs to updatestart_date(date): Update start date (YYYY-MM-DD)end_date(date): Update end date (YYYY-MM-DD)dates(array): Specific dates list (alternative to date range)available(boolean): Availability status
- Endpoint:
POST /listings/calendar - Description: Retrieves calendar information for multiple listings
- Body Parameters:
start_date(date): Calendar start date (YYYY-MM-DD)end_date(date): Calendar end date (YYYY-MM-DD)listings(array): List of listing objects with channel_type and listing_id
- Endpoint:
POST /listings/inventories - Description: Updates inventory levels for channel listings
- Body Parameters:
channel_type(string): Channel typelisting_id(string): Channel listing IDinventories(array): Inventory update objects
- Endpoint:
POST /listings/prices - Description: Modifies listing prices for channel listings
- Body Parameters:
channel_type(string): Channel typelisting_id(string): Channel listing IDprices(array): Price update objects
- Endpoint:
POST /listings/restrictions - Description: Alters listing restrictions for channel listings
- Body Parameters:
channel_type(string): Channel typelisting_id(string): Channel listing IDrestrictions(array): Restriction update objects
- Endpoint:
GET /conversations - Description: Retrieves list of guest conversations and inquiries
- Parameters:
offset(int): Starting index (default: 0)limit(int): Maximum results, max 100 (default: 20)
- Endpoint:
GET /conversations/{conversation_id} - Description: Provides messages and conversation details
- Endpoint:
POST /conversations/{conversation_id} - Description: Sends a text or image message to a guest
- Body Parameters:
message(string): Text contentjpeg_base64(string): Base64 encoded JPEG image
- Endpoint:
GET /reviews - Description: Queries reviews similar to Hostex Reviews Page
- Parameters:
reservation_code(string): Filter by reservation codeproperty_id(int): Filter by property IDreview_status(string): Filter by review status (default: 'reviewed')start_check_out_date(date): Check-out date range startend_check_out_date(date): Check-out date range endoffset(int): Starting index (default: 0)limit(int): Maximum results, max 100 (default: 20)
- Endpoint:
POST /reviews/{reservation_code} - Description: Submits a review or reply for a reservation
- Body Parameters:
host_review_score(number): Rating score (0-5)host_review_content(string): Review commenthost_reply_content(string): Reply to guest review
- Endpoint:
GET /reservations/{stay_code}/custom_fields - Description: Query custom fields for a stay
- Endpoint:
PATCH /reservations/{stay_code}/custom_fields - Description: Update custom fields for a stay
- Body:
{"custom_fields": {"field_name": "field_value"}}
- Endpoint:
GET /webhooks - Description: Lists configured webhooks
- Endpoint:
POST /webhooks - Description: Creates a new webhook
- Body:
{"url": "https://your-endpoint.com/webhook"}
- Endpoint:
DELETE /webhooks/{id} - Description: Deletes a webhook (only manageable ones)
- Endpoint:
GET /custom_channels - Description: Retrieves custom channels from Custom Options Page
- Endpoint:
GET /income_methods - Description: Retrieves income methods from Custom Options Page
- Endpoint:
POST /oauth/authorizations - Description: Obtain new access token or refresh existing token
- Body Parameters:
client_id(string): Client application IDclient_secret(string): Client secretgrant_type(string): 'authorization_code' or 'refresh_token'code(string): Authorization code (for authorization_code grant)refresh_token(string): Refresh token (for refresh_token grant)
- Endpoint:
POST /oauth/revoke - Description: Revokes access or refresh token
- Body Parameters:
client_id(string): Client application IDclient_secret(string): Client secrettoken(string): Token to revoke
The following booking channels are supported:
airbnb- Airbnbbooking.com- Booking.comagoda- Agodaexpedia- Expediavrbo- VRBOtrip.com- Trip.combooking_site- Hostex BookingSitetujia_intl- Tujia Internationalhostex_direct- Direct bookings via Hostextujia- Tujiaxiaozhu- Xiaozhumeituan_bnb- Meituan BnBmeituan_hotel- Meituan Hotelmuniao- Muniaofliggy- Fliggyzhukeyun- Zhukeyuntiktok- TikTokxiaohongshu- Xiaohongshu (RED)ctrip- Ctriphoufy- Houfy
Uses ISO 4217 currency codes. Supported currencies include: AED, ARS, AUD, AWG, BAM, BBD, BGN, BHD, BND, BRL, BTN, BZD, CAD, CHF, CLP, CNY, COP, CRC, CZK, DKK, EUR, FJD, GBP, GTQ, GYD, HKD, HNL, HRK, HUF, IDR, ILS, INR, JMD, JOD, JPY, KRW, LAK, LKR, MAD, MOP, MXN, MYR, NOK, NZD, OMR, PEN, PGK, PHP, PLN, RON, RUB, SAR, SEK, SGD, THB, TRY, TTD, TWD, UAH, USD, UYU, VND, ZAR
200- Success400- Validation error401- Invalid API key or access token403- Insufficient permissions404- Resource not found405- Method not allowed420- User account issue429- Rate limit exceeded500/503- Internal server error
- 1 minute: 1,200 requests (600 per endpoint)
- 5 minutes: 12,000 requests (6,000 per endpoint)
- 1 hour: 20,000 requests (10,000 per endpoint)
- 1 day: 100,000 requests (50,000 per endpoint)
POST /availabilities: 120/min per hostPOST /listings/*: 120/min per hostPOST /reservations: 60/min per hostPOST /conversations/*: 5/5 sec per host, 1,000/hr per host
Supported webhook event types:
reservation_created- New reservation madereservation_updated- Existing reservation updatedproperty_availability_updated- Property availability changedlisting_calendar_updated- Listing calendar updatedmessage_created- New message createdreview_created- Review createdreview_updated- Review updated
- Always include
Hostex-Access-Tokenheader for authentication - Set
User-Agentheader to your application name - Verify
Hostex-Webhook-Secret-Tokenfor webhook authenticity - Webhook endpoints must respond within 3 seconds
- Use HTTPS for all API requests
- Never expose client secrets or access tokens in client-side code