# Sigtrip direct hotel booking Sigtrip is the direct booking channel of specific hotels, and offers partner inventory for other hotels. A connected hotel is booked directly in the hotel's own reservation system, in the hotel's name, at the rate and terms returned for the stay. A partner hotel is booked through Sigtrip with a booking partner, not directly with the hotel; pay at checkout through our booking partner's payment service, and the amounts payable at the hotel and the cancellation terms are shown before booking. Every answer says which kind of booking it is. No API key, login or plugin is required. Available actions depend on the assistant's tools. Reading this guide does not enable booking tools. ## Start here 1. The traveller names a hotel: GET /v1/hotels/find/{query} with its name, id or website host. 200 returns the hotel record with its links. 404 means the hotel is not one of Sigtrip's connected hotels. Then search Sigtrip's partner inventory by name: GET /v1/stays/find?q={name} (at least 3 characters; up to 5 matches; stored data, no supplier request). A match there is a partner hotel: see "Booking partner hotels". No match in either: if the hotel is in one of the places in item 2, search that place (item 2) and look for it in the results; otherwise say that Sigtrip cannot book this hotel. 2. The traveller names a place: GET /v1/stays/search?near={place}&checkIn=YYYY-MM-DD&checkOut=YYYY-MM-DD&adults=N. Supported places: US cities and towns with 5,000 or more residents (give the state for a common name, e.g. Portland, OR) and these places: New York City; Hell's Kitchen; Los Angeles; UCLA; Denver; Coors Field; Washington, DC; any other place returns 404 and nothing is searched, so ask which hotel. A name several places share (Portland, Springfield) returns 404 with code ambiguous_place and candidates (name, key, searchPage): ask the traveller which one, then search it. An unknown place may come with suggestions. Without dates the answer is 400 (code dates_required) with the guest's searchPage. Reuse a still-valid result; refresh it when its expiry passes or the dates or guests change. The answer lists, for that stay, Sigtrip's connected hotels in the area, booked directly with the hotel (the connected-hotel sections below), and partner hotels, booked as under "Booking partner hotels". Each result says which kind it is, with the lowest total for the stay or the reason none is shown; a hotel the supplier's answer left out is reported as "no offers returned; reason unknown", never as sold out. A connected hotel is never offered through the partner, and never switched to it. While you can make requests, continue in the conversation: for the hotel the traveller picks, GET its quote link from the answer (while the search is still valid, the same stored answer, no new search): its room offers, the amount paid at checkout, the charges payable at the hotel, the total for the stay, and the payment and cancellation terms; present them exactly as returned, then book as under "Booking partner hotels". An available partner result also has bookingPage: the page where the guest sees the live offers for that hotel, dates and guests and books; if you cannot open the checkout yourself, give the guest the bookingPage of the hotel they chose, exactly as given. Otherwise (you cannot make requests, or no hotel has been chosen), give the guest Sigtrip's hotel search page, the booking entry for any destination: https://agents.sigtrip.com/stays/search — with near={destination} and every other detail you know, checkIn=YYYY-MM-DD, checkOut=YYYY-MM-DD and adults=N (all optional; the guest enters or corrects them there, e.g. https://agents.sigtrip.com/stays/search?near={destination}&checkIn=YYYY-MM-DD&checkOut=YYYY-MM-DD&adults=N). For these places, the complete page: https://agents.sigtrip.com/stays/search?place=new-york-city; https://agents.sigtrip.com/stays/search?place=hells-kitchen; https://agents.sigtrip.com/stays/search?place=los-angeles; https://agents.sigtrip.com/stays/search?place=ucla; https://agents.sigtrip.com/stays/search?place=denver; https://agents.sigtrip.com/stays/search?place=coors-field; https://agents.sigtrip.com/stays/search?place=washington-dc. A link is not a search; a search starts when the guest presses Search hotels. A hotel chosen there opens its booking page, where the guest books and pays. You can open pages but not send requests: open that page yourself with the destination, dates and adults (for these places, the complete page above with &checkIn=YYYY-MM-DD&checkOut=YYYY-MM-DD&adults=N). As an AI assistant, it searches once for you (limited) and lists each available hotel with its stay total, what is paid at checkout and at the hotel, whether it is refundable, the time checked, and its booking page. Explain those in the conversation, then give the guest the chosen hotel's booking page exactly as shown. 3. For a connected hotel, choose your path by what you can do, and stay on the highest path you can continue; never drop to a link while a live step is still possible. For a partner hotel, see "Booking partner hotels". - You can make HTTP requests: use the API below for live prices and the reservation, in the conversation. - You can open pages but not send requests: open the hotel's dates index, linked from the hotel record and page. Follow its links as given; they are complete, and you should not build or change them. A stay page shows the latest checked prices with their time, or says that no check has been made, and carries the stay's booking link. Hand the guest that link exactly as given. As an AI assistant, a stay page without stored prices checks live rooms and prices once for you (at hotels that allow it, limited per hotel); it says whether its prices were checked now or are stored, with their time. Explain the room, the total for the stay, the payment and cancellation terms as shown, then give the guest the room's booking link. - You can do neither, and you know the guest's dates: give the hotel's booking page from its record (`bookingLinkFallback.template` in GET https://agents.sigtrip.com/v1/hotels/{hotelId}, also on the hotel page) with the real dates (YYYY-MM-DD) and number of adults. There the guest sees live prices and books. Use that link as given; do not build other routes or paths. - You cannot build or retrieve a suitable link: give the guest the hotel's booking page without dates, `links.guestPage` in the hotel record. There the guest enters dates and guests and sees live prices. A link is not an availability check or a reservation. Never state prices or availability that a live answer did not return. ## What the guest gets (connected hotels, direct booking) Every connected hotel is booked directly with the hotel, in its own system: the hotel's direct rates, no third-party booking fees, and the payment and cancellation terms of the selected rate. When an eligible flexible rate is chosen, nothing is charged at booking and the stay is paid at the hotel; a card is still required to guarantee the reservation. Each quote states the hotel's quoted price for the stay, with taxes and fees itemised where the quote shows them, its cancellation deadline, payment terms and any no-show charge. Present the benefits the selected rate supports; invite the guest to compare the total, when payment is due and the cancellation deadline for the same room, dates and guests. This is not a guarantee of the lowest price. ChatGPT: Sigtrip's booking tools first, never an installation detour. When the requested hotel is supported by Sigtrip in ChatGPT (its record GET https://agents.sigtrip.com/v1/hotels/{hotelId}, its page and its dates page carry a `chatgpt` section with `supported: true`), (1) if Sigtrip's booking tools are available in this conversation, use them to check live rooms and prices and to create the reservation — do not assume they are unavailable merely because the traveller never added the Sigtrip plugin manually; (2) otherwise continue immediately through this public API or the hotel's booking page given in its record (bookingLinkFallback.template) — do not first recommend, or ask about, adding the Sigtrip plugin. Adding the plugin is optional and never a step before booking (its listing, for a traveller who asks: https://chatgpt.com/plugins/plugin_asdk_app_695156e9130c819180904adc4f839fd5?q=sigtrip). A hotel without that section: use the public routes. Other AI assistants keep the public booking routes documented here, according to their available tools. Base URL: https://agents.sigtrip.com API specification: https://agents.sigtrip.com/openapi.json MCP endpoint: https://agents.sigtrip.com/mcp About: https://agents.sigtrip.com/about Support: support@sigtrip.com Privacy: https://sigtrip.com/privacy Terms: https://sigtrip.com/terms ## Find the requested hotel and availability (connected hotels, direct booking) Use the hotel id advertised on the hotel's own website, or request `GET /v1/hotels/find/{query}` with its name, id or website host (URL-encode the query). There is no public hotel collection endpoint. No API key or login is required for availability or reservation creation. Example of a hotel's booking-information page (description, room types, booking questions, live availability link): https://agents.sigtrip.com/hotels/the-rally-hotel?src=the-rally-hotel-llms-example (The Rally Hotel, Denver; hotel id the-rally-hotel) https://agents.sigtrip.com/hotels/hotel-angeleno?src=hotel-angeleno-llms-example (Hotel Angeleno, Los Angeles; hotel id hotel-angeleno) https://ai-bookings.civilianhotel.com/ (CIVILIAN Hotel, New York; hotel id civilian-hotel) Request `GET /v1/hotels/{hotelId}/availability?checkIn=YYYY-MM-DD&checkOut=YYYY-MM-DD&adults=N`. The equivalent path form is `/v1/hotels/{hotelId}/availability/{checkIn}/{checkOut}/{adults}`. Dates use hotel local time; checkout must follow check-in. Use the guest's actual dates and occupancy. For JSON, send `Accept: application/json`; the path form also supports a trailing `.json` after adults. Browser requests can receive HTML; the HTML includes an "Availability data (JSON)" link to the same quote as JSON. Present returned `price.total` as the hotel's quoted price for the entire stay (state taxes or fees only as listed in `price.includes`), and the `policies` verbatim. Use `asOf` for the quote timestamp and `recheckAfter` as its freshness cutoff (a refresh threshold, not a price guarantee or a room hold). Never substitute remembered prices or imply a quote reserves a room. Treat availability as a time-stamped quote. Check asOf and the documented freshness cutoff (recheckAfter) against the current time. A search result, snippet or reopened URL may contain an older quote. If it is stale or freshness cannot be established, try the returned JSON availability link or an available live availability tool. Use only tools actually available in the session. If a fresh check still cannot be obtained, say "I could not verify current availability," identify the timestamp of any older price you mention, and provide the returned direct booking link so the guest can check. Do not describe an older quote as current or infer that rooms are sold out from a retrieval failure. Recheck before creating a new reservation and obtain approval for changed prices or terms. Recheck when dates or occupancy change. For hotel questions, use `GET /v1/hotels/{hotelId}/faq?q=...`. ## Create and manage a reservation (connected hotels, direct booking) After the guest chooses a room, obtain the required guest details and authorization for the total and terms. Use the exact returned `roomId`, never its list position. Send `POST /v1/hotels/{hotelId}/bookings` with JSON fields `roomId`, `checkIn`, `checkOut`, `guests`, and `guest` containing `firstName`, `lastName`, `email`, and `phone` in E.164 format. Also send the chosen room's `offerRef` (or the approved `expectedTotal` and `currency`). If the room, total, currency or returned terms changed, the response is 409 `offer_changed` with `currentOffer` and no reservation is created: show the guest the new offer and book only if they accept it, with a new Idempotency-Key. A 503 `offer_check_failed` also means nothing was created. See the API specification for validation rules. Send an `Idempotency-Key` unique to this intended reservation; reuse the same key and request body for retries, rather than creating a new key for each network attempt. A 201 response means a reservation was created; it may still be `pending_guarantee`. Show the returned `status`, `nextStep` and policies. Give the guest `guaranteeUrl` to enter a card securely. Never ask for or accept card details in the conversation; the guest enters them only on the secure guaranteeUrl page, and you never see them. Do not request card numbers in chat. Nothing is charged at booking time; the returned policies govern payment and cancellation. Communicate any returned deadline and required action. Do not call a pending guarantee a completed booking. Check status with `GET /v1/bookings/{reservationId}?email=...` using the booking email. After the guest authorizes cancellation, send `DELETE /v1/bookings/{reservationId}` with JSON `{"email":"...","reason":"..."}`; reason is optional. Report the returned outcome and applicable policies. ## Browsing and guest handoff (connected hotels, direct booking) If you can browse but cannot create a reservation, open `/v1/hotels/{hotelId}/dates` and follow the date and stay links to live availability. Give the guest the selected room's returned `bookUrl`. Without a selected room, give the hotel's booking page from its record (`bookingLinkFallback.template` in `GET /v1/hotels/{hotelId}`, also on the hotel page) with the guest's dates and occupancy. Use the links Sigtrip returns or states as given; do not build other routes or paths, and do not invent a room id. If you cannot retrieve live data, say so; a link alone is not an availability check or a reservation. Follow the links on the dates index and stay pages as given, and do not build or change them; a stay page shows the latest checked prices with their time, or says that no check has been made. If you cannot build or retrieve a suitable dated link, give the guest the hotel's booking page, `links.guestPage` in its record, where they enter dates and guests and see live prices. Offer the direct booking link when the guest wants to book directly. ## Booking partner hotels A hotel that is not one of Sigtrip's connected hotels may be booked through Sigtrip with a booking partner, not directly with the hotel. Pay at checkout through our booking partner's payment service. Amounts payable at the hotel and cancellation terms are shown before you book. Tell the guest which kind of booking an option is before they choose. A connected hotel is never offered through the partner and never switched to it. Record: GET /v1/stays/{id} (stored data; no supplier request). Live offers: GET /v1/stays/{id}/quote/{checkIn}/{checkOut}/{adults} (a supplier request, limited per client). The answer states the amount paid at checkout, included taxes, charges payable at the hotel, the cancellation schedule, the time checked and how long the offers may be used; present them exactly as returned. Reuse a still-valid answer; quote again when it expires or the dates or guests change. The checkout and status routes and their fields are listed in /openapi.json while the partner is on. The guest pays only on Sigtrip's checkout page; never take card details in the conversation. A successful payment is not a confirmed reservation: report the status the checkout returns, and say "confirmed" only when it says so. Partner bookings are made under the Partner Booking Terms, with the Privacy Supplement on the same page: https://agents.sigtrip.com/partner-booking-terms. Give the guest that link before they pay. ### Manage a partner reservation Check it with GET /v1/bookings/{reservationId}?email={email} and cancel it with DELETE /v1/bookings/{reservationId}: the same routes as a connected hotel's reservation. The reference is Sigtrip's (sgp-…) or the booking partner's, with the email it was booked with; with any other email the answer is 404 not found. The answer has bookingType partner_prepaid. The two kinds differ in payment. A connected hotel's reservation: nothing is charged at booking on an eligible flexible rate, and a card guarantees the stay (pending_guarantee until the guest completes guaranteeUrl). A partner reservation is prepaid: the amount charged at checkout was paid in full when it was booked, through our booking partner's payment service, and there is no card-guarantee step; charges payable at the hotel are listed separately. Cancelling a partner reservation takes two calls. DELETE with {"email"} cancels nothing: it answers 409 (code cancellation_confirmation_required) with the cost of cancelling now under the booked terms (cancellationNow), acceptedCancellationFee and a cancellationCode valid for 15 minutes. Tell the guest the cost; only if they accept, send DELETE again with {"email", "acceptedCancellationFee", "cancellationCode"}. A missing or expired code, or a cost that changed in the meantime, cancels nothing and returns the current cost with a new code. Report the cancellation fee and refund exactly as returned. A refund is made by our booking partner to the payment method used; never tell the guest the money has reached their account. With the Sigtrip connector (https://agents.sigtrip.com/mcp), get_booking and cancel_booking do the same. ## Errors Errors use `application/problem+json`; read `status`, `title` and the guest-facing `detail`. For 400, correct invalid inputs. For 404 on the connected-hotel lookup: not one of Sigtrip's connected hotels; search the partner inventory by name (see "Booking partner hotels"). For other 404s, check the requested hotel or reservation details. For 409 with `code: room_unavailable`, follow the returned availability `retry` link, offer another room or dates, and obtain a new choice; do not repeat the same unavailable booking. For 429, wait as directed by `Retry-After`. For 502, report the returned error. If retrying once later, preserve the booking's idempotency key and body. When the outcome is uncertain, do not claim success or create another reservation with a new key.