GetMyHotels Support API

The support API from GetMyHotels — 4 operation(s) for support.

GitHub OpenAPI

Operations 5

POST /v1/support/tickets Create a support ticket #
GET /v1/support/tickets List my support tickets #
POST /v1/support/guest-tickets Contact support without an account #
GET /v1/support/tickets/{publicId} Support ticket detail #
POST /v1/support/tickets/{publicId}/comments Reply to a support ticket #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/getmyhotels-com:getmyhotels-com-support-api"
All apis
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.

Get an API 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 Specification

getmyhotels-com-support-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GetMyHotels REST Support 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: Support
paths:
  /v1/support/tickets:
    post:
      tags:
      - Support
      summary: Create a support ticket
      description: Runs `support.createTicket` for the signed-in user. `priority` is optional and defaults to `medium`; customer clients should omit it. `message` becomes the first reply on the thread.
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                subject:
                  type: string
                  minLength: 1
                  maxLength: 500
                message:
                  type: string
                  minLength: 1
                  maxLength: 5000
                bookingType:
                  type: string
                  enum:
                  - hotel
                  - flight
                bookingPublicId:
                  type: string
                  minLength: 1
                  maxLength: 36
                priority:
                  type: string
                  enum:
                  - low
                  - medium
                  - high
                  - urgent
                  default: medium
                contactEmail:
                  type: string
                  maxLength: 255
                  format: email
                contactPhone:
                  anyOf:
                  - type: string
                    maxLength: 80
                  - type: string
                    minLength: 0
                    maxLength: 0
                channel:
                  type: string
                  enum:
                  - web
                  - mobile
                  - email
                  - phone
                  - chat
                  - social
                category:
                  type: string
                  enum:
                  - booking
                  - payment
                  - refund
                  - account
                  - technical
                  - complaint
                  - suggestion
                  - other
              required:
              - subject
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                description: Verbatim JSON output of the `support.createTicket` 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: postV1SupportTickets
      x-operation-id-source: derived
    get:
      tags:
      - Support
      summary: List my support tickets
      description: Runs `support.listTickets` for the signed-in user.
      security:
      - bearerAuth: []
      parameters:
      - schema:
          type: integer
          minimum: 1
          default: 1
          example: 1
        required: false
        name: page
        in: query
      - schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 20
          example: 20
        required: false
        name: limit
        in: query
      - schema:
          type: string
          enum:
          - open
          - in_progress
          - resolved
          - closed
        required: false
        name: status
        in: query
      - schema:
          type: string
          enum:
          - all
          - low
          - medium
          - high
          - urgent
          default: all
        required: false
        name: priority
        in: query
      - schema:
          type: string
          maxLength: 255
        required: false
        name: search
        in: query
      - schema:
          type: string
          description: Comma-separated ticket statuses. A client tab is a SET (Open = open,in_progress; Resolved = resolved,closed), which the single-valued `status` cannot express.
          example: open,in_progress
        required: false
        description: Comma-separated ticket statuses. A client tab is a SET (Open = open,in_progress; Resolved = resolved,closed), which the single-valued `status` cannot express.
        name: statuses
        in: query
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                description: Verbatim JSON output of the `support.listTickets` 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: getV1SupportTickets
      x-operation-id-source: derived
  /v1/support/guest-tickets:
    post:
      tags:
      - Support
      summary: Contact support without an account
      description: 'Runs `support.guestCreateTicket` (public). For a signed-out guest — typically one who booked without an account (critical decision #4). Stores the ticket against `email` and returns only `{ publicId }`: the link to read and reply to the thread is emailed to that address, so opening it proves the guest owns the inbox. The response is the same whether or not an account uses that email. Signed-in callers get 400 and must use `POST /v1/support/tickets`. Rate limited to 5 tickets per 10 minutes per IP and 3 per email address per hour (429). Native callers send no Turnstile token. `locale` picks the email language and falls back to English.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  maxLength: 255
                  format: email
                subject:
                  type: string
                  minLength: 1
                  maxLength: 500
                message:
                  type: string
                  minLength: 1
                  maxLength: 5000
                category:
                  type: string
                  enum:
                  - booking
                  - payment
                  - refund
                  - account
                  - technical
                  - complaint
                  - suggestion
                  - other
                locale:
                  type: string
                  maxLength: 10
              required:
              - email
              - subject
              - message
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                description: Verbatim JSON output of the `support.guestCreateTicket` 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'
        '426':
          description: Reported X-GMH-App-Version is below the supported minimum — the app must update
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpgradeRequiredError'
        '429':
          description: Rate limit reached for this caller. Show the message and let the customer retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Unexpected server error (opaque; details stay in logs)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      operationId: postV1SupportGuestTickets
      x-operation-id-source: derived
  /v1/support/tickets/{publicId}:
    get:
      tags:
      - Support
      summary: Support ticket detail
      description: Runs `support.getTicket`; owner-only.
      security:
      - bearerAuth: []
      parameters:
      - schema:
          type: string
          minLength: 1
          maxLength: 36
        required: true
        name: publicId
        in: path
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                description: Verbatim JSON output of the `support.getTicket` 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: getV1SupportTicketsByPublicId
      x-operation-id-source: derived
  /v1/support/tickets/{publicId}/comments:
    post:
      tags:
      - Support
      summary: Reply to a support ticket
      description: Runs `support.addComment`; owner-only.
      security:
      - bearerAuth: []
      parameters:
      - schema:
          type: string
          minLength: 1
          maxLength: 36
        required: true
        name: publicId
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  type: string
                  minLength: 1
                  maxLength: 5000
              required:
              - content
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                description: Verbatim JSON output of the `support.addComment` 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: postV1SupportTicketsByPublicIdComments
      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)