HTTP APIReference
Live offers
Live, bookable offers for up to 15 hotels and one stay.
The full rules agents follow for this call are on its MCP tool's page, get_hotel_offers.
POST
bearerAuthheader
AuthorizationBearer <token>A Fortrip OAuth access token from the device authorization flow (RFC 8628). GET /v1/auth/config returns the flow's endpoints.
application/json- body
hotelIds*array<>Hotels to price, 1 to 15, no repeats.
Items
1 <= items <= 15stay*Dates and party. One party per call: every room must be the same.
filters?Filters every offer must pass.
limitPerHotel?integerOffers per hotel, 1 to 20. Default 10.
Range
1 <= value <= 20Default
10locale?stringLanguage for names and text in the response: en or zh.
Value in
"en""zh"displayCurrency?stringCurrency to show prices in, USD or CNY. It never changes what is charged: payment is in USD.
Value in
"USD""CNY"Live offers
application/json- response
stay*hotels*array<>unavailable*array<>[key: string]?unknowncurl -X POST 'https://api.fortrip.ai/v1/hotels/offers' \ -H 'Content-Type: application/json' \ -d '{ "hotelIds": [ "string" ], "stay": { "checkIn": "string", "checkOut": "string", "rooms": [ { "adults": 1, "childrenAges": [ 0 ] } ] }}'Example Response
{ "stay": { "checkIn": "string", "checkOut": "string", "rooms": [ { "adults": -9007199254740991, "childrenAges": [ -9007199254740991 ], "property1": null, "property2": null } ], "property1": null, "property2": null }, "hotels": [ { "hotel": { "hotelId": "string", "name": "string", "names": { "en": "string", "zh": "string", "property1": null, "property2": null }, "property1": null, "property2": null }, "offers": [ { "offerId": "string", "type": "hotel", "expiresAt": "string", "hotel": { "hotelId": "string", "room": { "name": { "text": "string", "locale": "en", "property1": null, "property2": null }, "beds": { "text": "string", "locale": "en", "property1": null, "property2": null }, "areaSqm": { "min": 0, "max": 0, "property1": null, "property2": null }, "maxOccupancy": -9007199254740991, "window": "yes", "property1": null, "property2": null }, "roomCount": -9007199254740991, "meals": { "known": true, "included": [ "breakfast" ], "unspecifiedMainMeals": -9007199254740991, "allInclusive": true, "guestsCoveredPerRoom": -9007199254740991, "label": { "text": "string", "locale": "en", "property1": null, "property2": null }, "property1": null, "property2": null }, "property1": null, "property2": null }, "price": { "total": { "amount": "string", "currency": "string", "property1": null, "property2": null }, "perNightAllRooms": { "amount": "string", "currency": "string", "property1": null, "property2": null }, "approx": { "total": { "amount": "string", "currency": "string", "property1": null, "property2": null }, "perNightAllRooms": { "amount": "string", "currency": "string", "property1": null, "property2": null }, "rateDate": "string", "property1": null, "property2": null }, "payAtProperty": { "disclosure": "complete", "items": [ { "label": { "text": "string", "locale": "en", "property1": null, "property2": null }, "amount": { "amount": "string", "currency": "string", "property1": null, "property2": null }, "mandatory": true, "basis": "per_stay", "collectedAt": "property", "property1": null, "property2": null } ], "property1": null, "property2": null }, "property1": null, "property2": null }, "cancellation": { "status": "free", "asOf": "string", "freeCancellationEndsAt": "string", "penalties": [ { "startsAt": "string", "amount": { "amount": "string", "currency": "string", "property1": null, "property2": null }, "property1": null, "property2": null } ], "timeZone": "string", "property1": null, "property2": null }, "confirmation": { "mode": "instant", "withinMinutes": -9007199254740991, "property1": null, "property2": null }, "property1": null, "property2": null } ], "omitted": { "byNationality": -9007199254740991, "byFilters": -9007199254740991, "dominated": -9007199254740991, "unreadable": -9007199254740991, "byLimit": -9007199254740991, "property1": null, "property2": null }, "property1": null, "property2": null } ], "unavailable": [ { "hotelId": "string", "reason": "sold_out", "omitted": { "byNationality": -9007199254740991, "byFilters": -9007199254740991, "dominated": -9007199254740991, "unreadable": -9007199254740991, "byLimit": -9007199254740991, "property1": null, "property2": null }, "property1": null, "property2": null } ], "property1": null, "property2": null}