---
title: "Contact support without an account"
method: POST
path: "/v1/support/guest-tickets"
tags: ["support"]
---

# Contact support without an account

`POST /v1/support/guest-tickets`

## Request

- Base URL: `https://api.getmyhotels.com`
- URL: `https://api.getmyhotels.com/v1/support/guest-tickets`
- Auth: none declared

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.

## Request body

- object
  - `email` string, email, required
  - `subject` string, required
  - `message` string, required
  - `category` 'booking' | 'payment' | 'refund' | 'account' | 'technical' | 'complaint' | 'suggestion' | 'other'
  - `locale` string

## Response `200`

Success

- unknown

## Other responses

- `400`: Request validation failed or the router rejected the input
- `426`: Reported X-GMH-App-Version is below the supported minimum — the app must update
- `429`: Rate limit reached for this caller. Show the message and let the customer retry later.
- `500`: Unexpected server error (opaque; details stay in logs)

---

[API](https://skmtc.dev/getmyhotels/apis/getmyhotels-rest-api.md) · [All operations](https://skmtc.dev/getmyhotels/apis/getmyhotels-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getmyhotels/apis/getmyhotels-rest-api/revisions/cba24a9c13f0?raw)
