# Sigtrip direct hotel booking Check live rooms and prices, create a direct hotel reservation, and check or cancel it. Available actions depend on the assistant's tools. Reading this guide does not enable booking tools. 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 dated booking page https://agents.sigtrip.com/book/{hotelId}/{checkIn}/{checkOut}/{adults} — 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 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://agents.sigtrip.com/hotels/civilian-hotel?src=civilian-hotel-llms-example (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 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. 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 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`. The dated booking-page format is `/book/{hotelId}/{checkIn}/{checkOut}/{adults}/{roomId}`. Without a selected room, use `/book/{hotelId}/{checkIn}/{checkOut}/{adults}` with a known hotel id and the guest's dates and occupancy. 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. Offer the direct booking link when the guest wants to book directly. ## Errors Errors use `application/problem+json`; read `status`, `title` and the guest-facing `detail`. For 400, correct invalid inputs. For 404, 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.