---
title: "Review a stay"
method: POST
path: "/v1/bookings/{publicId}/review"
tags: ["bookings"]
---

# Review a stay

`POST /v1/bookings/{publicId}/review`

## Request

- Base URL: `https://api.getmyhotels.com`
- URL: `https://api.getmyhotels.com/v1/bookings/{publicId}/review`
- Auth: HTTP bearer

Runs `review.create` for the booking in the path. Returns `{ publicId, status: "pending" }` — reviews are moderated before they are shown. 403 when the booking belongs to someone else. A second review of the same booking is a 409 whose `domainCode` is `"REVIEW_ALREADY_EXISTS"`; branch on that, not the message.

## Path parameters

- `publicId` string, required

## Request body

- object
  - `hotelId` string
  - `overallRating` integer, required
  - `title` string
  - `content` string
  - `dimensions` object[]
    - `dimension` string, required
    - `rating` integer, required

## Response `200`

Success

- unknown

## Other responses

- `400`: Request validation failed or the router rejected the input
- `401`: Missing or invalid bearer session token
- `403`: The booking belongs to another account
- `404`: Resource not found
- `409`: The request conflicts with the resource's current state
- `426`: Reported X-GMH-App-Version is below the supported minimum — the app must update
- `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)
