GetMyHotels Price Watches API
The price-watches API from GetMyHotels — 7 operation(s) for price-watches.
The price-watches API from GetMyHotels — 7 operation(s) for price-watches.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/getmyhotels-com:getmyhotels-com-price-watches-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: GetMyHotels REST Price Watches API
version: 1.0.0
description: REST surface for the native GetMyHotels apps. Every route is a thin transport over the shared tRPC routers — inputs are validated with the same Zod schemas the web client uses, and responses are returned verbatim. Authentication uses Better Auth bearer session tokens issued by the /api/auth/* endpoints (not part of this spec). Native clients send X-GMH-App-Version and X-GMH-Platform on every request; versions below the configured floor receive a typed 426 UpgradeRequiredError.
servers:
- url: https://api.getmyhotels.com
description: Production API
tags:
- name: price-watches
paths:
/v1/price-watches:
post:
tags:
- price-watches
summary: Create a price watch
description: Runs `priceWatch.create` for the signed-in user.
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
ref:
type: string
minLength: 1
checkIn:
type:
- string
- 'null'
checkOut:
type:
- string
- 'null'
rooms:
type: integer
minimum: 1
maximum: 9
default: 1
adults:
type: integer
minimum: 1
maximum: 9
default: 2
children:
type: integer
minimum: 0
maximum: 6
default: 0
childrenAges:
type: array
items:
type: integer
minimum: 0
maximum: 18
maxItems: 6
default: []
currency:
type: string
minLength: 3
maxLength: 3
currentPrice:
type: number
exclusiveMinimum: 0
targetPrice:
type: number
exclusiveMinimum: 0
viewedRoomName:
type: string
maxLength: 255
viewedBoard:
type: string
maxLength: 100
viewedRoomPrice:
type: number
exclusiveMinimum: 0
hotelName:
type: string
maxLength: 255
hotelImageUrl:
type: string
maxLength: 2000
format: uri
city:
type: string
maxLength: 255
starRating:
type: number
minimum: 0
maximum: 5
source:
type: string
enum:
- chat
- hotel_page
- search_card
default: hotel_page
required:
- ref
- checkIn
- checkOut
- currency
responses:
'200':
description: Success
content:
application/json:
schema:
description: Verbatim JSON output of the `priceWatch.create` tRPC procedure. Response shapes are intentionally not modeled in this spec; the native client types them by hand.
'400':
description: Request validation failed or the router rejected the input
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Missing or invalid bearer session token
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'426':
description: Reported X-GMH-App-Version is below the supported minimum — the app must update
content:
application/json:
schema:
$ref: '#/components/schemas/UpgradeRequiredError'
'500':
description: Unexpected server error (opaque; details stay in logs)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
operationId: postV1PriceWatches
x-operation-id-source: derived
get:
tags:
- price-watches
summary: List my price watches
description: Runs `priceWatch.list` for the signed-in user.
security:
- bearerAuth: []
parameters:
- schema:
type: string
enum:
- active
- paused
- expired
- cancelled
required: false
name: status
in: query
responses:
'200':
description: Success
content:
application/json:
schema:
description: Verbatim JSON output of the `priceWatch.list` tRPC procedure. Response shapes are intentionally not modeled in this spec; the native client types them by hand.
'400':
description: Request validation failed or the router rejected the input
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Missing or invalid bearer session token
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'426':
description: Reported X-GMH-App-Version is below the supported minimum — the app must update
content:
application/json:
schema:
$ref: '#/components/schemas/UpgradeRequiredError'
'500':
description: Unexpected server error (opaque; details stay in logs)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
operationId: getV1PriceWatches
x-operation-id-source: derived
/v1/price-watches/{publicId}:
get:
tags:
- price-watches
summary: Price watch detail
description: Runs `priceWatch.detail`; owner-only.
security:
- bearerAuth: []
parameters:
- schema:
type: string
minLength: 1
required: true
name: publicId
in: path
responses:
'200':
description: Success
content:
application/json:
schema:
description: Verbatim JSON output of the `priceWatch.detail` tRPC procedure. Response shapes are intentionally not modeled in this spec; the native client types them by hand.
'400':
description: Request validation failed or the router rejected the input
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Missing or invalid bearer session token
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'426':
description: Reported X-GMH-App-Version is below the supported minimum — the app must update
content:
application/json:
schema:
$ref: '#/components/schemas/UpgradeRequiredError'
'500':
description: Unexpected server error (opaque; details stay in logs)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
operationId: getV1PriceWatchesByPublicId
x-operation-id-source: derived
delete:
tags:
- price-watches
summary: Cancel a price watch
description: Runs `priceWatch.remove`; owner-only.
security:
- bearerAuth: []
parameters:
- schema:
type: string
minLength: 1
required: true
name: publicId
in: path
responses:
'200':
description: Success
content:
application/json:
schema:
description: Verbatim JSON output of the `priceWatch.remove` tRPC procedure. Response shapes are intentionally not modeled in this spec; the native client types them by hand.
'400':
description: Request validation failed or the router rejected the input
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Missing or invalid bearer session token
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'426':
description: Reported X-GMH-App-Version is below the supported minimum — the app must update
content:
application/json:
schema:
$ref: '#/components/schemas/UpgradeRequiredError'
'500':
description: Unexpected server error (opaque; details stay in logs)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
operationId: deleteV1PriceWatchesByPublicId
x-operation-id-source: derived
/v1/price-watches/{publicId}/pause:
post:
tags:
- price-watches
summary: Pause a price watch
description: Runs `priceWatch.pause`; owner-only. Idempotent — pausing a watch that is not active returns its current status unchanged.
security:
- bearerAuth: []
parameters:
- schema:
type: string
minLength: 1
required: true
name: publicId
in: path
responses:
'200':
description: Success
content:
application/json:
schema:
description: Verbatim JSON output of the `priceWatch.pause` tRPC procedure. Response shapes are intentionally not modeled in this spec; the native client types them by hand.
'400':
description: Request validation failed or the router rejected the input
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Missing or invalid bearer session token
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'426':
description: Reported X-GMH-App-Version is below the supported minimum — the app must update
content:
application/json:
schema:
$ref: '#/components/schemas/UpgradeRequiredError'
'500':
description: Unexpected server error (opaque; details stay in logs)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
operationId: postV1PriceWatchesByPublicIdPause
x-operation-id-source: derived
/v1/price-watches/{publicId}/resume:
post:
tags:
- price-watches
summary: Resume a paused price watch
description: Runs `priceWatch.resume`; owner-only. Rejects with 400 when the stay's check-in has already passed — that watch can only be replaced, not revived.
security:
- bearerAuth: []
parameters:
- schema:
type: string
minLength: 1
required: true
name: publicId
in: path
responses:
'200':
description: Success
content:
application/json:
schema:
description: Verbatim JSON output of the `priceWatch.resume` tRPC procedure. Response shapes are intentionally not modeled in this spec; the native client types them by hand.
'400':
description: Request validation failed or the router rejected the input
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Missing or invalid bearer session token
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'426':
description: Reported X-GMH-App-Version is below the supported minimum — the app must update
content:
application/json:
schema:
$ref: '#/components/schemas/UpgradeRequiredError'
'500':
description: Unexpected server error (opaque; details stay in logs)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
operationId: postV1PriceWatchesByPublicIdResume
x-operation-id-source: derived
/v1/price-watches/{publicId}/target:
patch:
tags:
- price-watches
summary: Set or clear a price watch's target
description: Runs `priceWatch.updateTarget`; owner-only. A null `targetPrice` clears the target. Rejects with 400 when the target is not below the baseline the watch started at.
security:
- bearerAuth: []
parameters:
- schema:
type: string
minLength: 1
required: true
name: publicId
in: path
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
targetPrice:
type:
- number
- 'null'
exclusiveMinimum: 0
required:
- targetPrice
responses:
'200':
description: Success
content:
application/json:
schema:
description: Verbatim JSON output of the `priceWatch.updateTarget` tRPC procedure. Response shapes are intentionally not modeled in this spec; the native client types them by hand.
'400':
description: Request validation failed or the router rejected the input
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Missing or invalid bearer session token
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'426':
description: Reported X-GMH-App-Version is below the supported minimum — the app must update
content:
application/json:
schema:
$ref: '#/components/schemas/UpgradeRequiredError'
'500':
description: Unexpected server error (opaque; details stay in logs)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
operationId: patchV1PriceWatchesByPublicIdTarget
x-operation-id-source: derived
/v1/price-watches/destinations:
post:
tags:
- price-watches
summary: Watch the cheapest price for a whole destination search
description: Runs `priceWatch.createSearchWatch`. Tracks the cheapest hotel for `destination` and the stay, rather than one hotel. Send `currentPrice` (the cheapest price on screen, a stay total) when creating from live results so it becomes the baseline; `targetPrice` must be below it. `source` defaults to `saved_page`; native search results should send `search_results`. 400 for past or reversed dates, or when the account already tracks the maximum number of destinations; 409 when this destination and stay are already tracked. Returns `{ watch }`, the same shape the destination entries of `GET /v1/price-watches` carry.
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
destination:
type: string
minLength: 2
maxLength: 255
checkIn:
type: string
format: date
checkOut:
type: string
format: date
rooms:
type: integer
minimum: 1
maximum: 9
default: 1
adults:
type: integer
minimum: 1
maximum: 9
default: 2
children:
type: integer
minimum: 0
maximum: 6
default: 0
currency:
type: string
minLength: 3
maxLength: 3
currentPrice:
type: number
exclusiveMinimum: 0
targetPrice:
type: number
exclusiveMinimum: 0
source:
type: string
enum:
- chat
- search_results
- saved_page
default: saved_page
required:
- destination
- checkIn
- checkOut
- currency
responses:
'200':
description: Success
content:
application/json:
schema:
description: Verbatim JSON output of the `priceWatch.createSearchWatch` tRPC procedure. Response shapes are intentionally not modeled in this spec; the native client types them by hand.
'400':
description: Request validation failed or the router rejected the input
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Missing or invalid bearer session token
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'409':
description: The request conflicts with the resource's current state
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'426':
description: Reported X-GMH-App-Version is below the supported minimum — the app must update
content:
application/json:
schema:
$ref: '#/components/schemas/UpgradeRequiredError'
'500':
description: Unexpected server error (opaque; details stay in logs)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
operationId: postV1PriceWatchesDestinations
x-operation-id-source: derived
/v1/price-watches/destinations/{publicId}:
delete:
tags:
- price-watches
summary: Cancel a destination price watch
description: Runs `priceWatch.removeSearchWatch`; owner-only. Idempotent — cancelling an already-cancelled watch succeeds.
security:
- bearerAuth: []
parameters:
- schema:
type: string
minLength: 1
required: true
name: publicId
in: path
responses:
'200':
description: Success
content:
application/json:
schema:
description: Verbatim JSON output of the `priceWatch.removeSearchWatch` tRPC procedure. Response shapes are intentionally not modeled in this spec; the native client types them by hand.
'400':
description: Request validation failed or the router rejected the input
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Missing or invalid bearer session token
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'426':
description: Reported X-GMH-App-Version is below the supported minimum — the app must update
content:
application/json:
schema:
$ref: '#/components/schemas/UpgradeRequiredError'
'500':
description: Unexpected server error (opaque; details stay in logs)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
operationId: deleteV1PriceWatchesDestinationsByPublicId
x-operation-id-source: derived
get:
tags:
- price-watches
summary: Destination price watch detail
description: Runs `priceWatch.searchWatchDetail`; owner-only.
security:
- bearerAuth: []
parameters:
- schema:
type: string
minLength: 1
required: true
name: publicId
in: path
responses:
'200':
description: Success
content:
application/json:
schema:
description: Verbatim JSON output of the `priceWatch.searchWatchDetail` tRPC procedure. Response shapes are intentionally not modeled in this spec; the native client types them by hand.
'400':
description: Request validation failed or the router rejected the input
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Missing or invalid bearer session token
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'426':
description: Reported X-GMH-App-Version is below the supported minimum — the app must update
content:
application/json:
schema:
$ref: '#/components/schemas/UpgradeRequiredError'
'500':
description: Unexpected server error (opaque; details stay in logs)
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
operationId: getV1PriceWatchesDestinationsByPublicId
x-operation-id-source: derived
components:
schemas:
UpgradeRequiredError:
type: object
properties:
error:
type: object
properties:
code:
type: string
enum:
- UPGRADE_REQUIRED
message:
type: string
minVersion:
type: string
example: 1.2.0
platform:
type:
- string
- 'null'
required:
- code
- message
- minVersion
- platform
required:
- error
ApiError:
type: object
properties:
error:
type: object
properties:
code:
type: string
example: NOT_FOUND
message:
type: string
example: Booking not found
domainCode:
type: string
example: NON_REFUNDABLE_CONSENT_REQUIRED
issues:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
required:
- path
- message
required:
- code
- message
required:
- error
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'Better Auth session token. Obtain it from the native /api/auth/* endpoints (Better Auth bearer plugin — out of scope for this spec, see #922).'
x-provenance:
method: harvested
publisher: GetMyHotels
source: https://api.getmyhotels.com/v1/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)