The /ratings endpoint records guest star ratings for employees, departments, and outlets. Ratings are used for employee performance analytics, service recovery alerts, and leaderboards.
Create a Rating
POST /v2/ratings
Content-Type: application/json
Authentication is optional. If a valid token is provided, the rating is attributed to the authenticated user.
Request
{
"recipientType": "outlet",
"recipientId": "outlet222",
"value": 5,
"guestId": "guest333",
"visitId": "visit444",
"source": "kiosk",
"submissionState": "in_progress",
"environment": "live"
}
Required Fields
| Field | Type | Rules |
|---|---|---|
recipientType | string | Required; employee, outlet, or department |
recipientId | string | Required; ID of that exact destination |
value | integer | Required; must be 1, 2, 3, 4, or 5 |
The server resolves property, department, and outlet context from the canonical destination. Do not substitute an employee for an outlet or department.
Response
{
"success": true,
"ratingId": "rating_xxxxxxxxxxx",
"feedbackToken": "short_lived_continuation_token",
"rating": {
"ratingId": "rating_xxxxxxxxxxx",
"recipientType": "outlet",
"recipientId": "outlet222",
"value": 5,
"source": "kiosk",
"submissionState": "in_progress",
"environment": "live"
}
}
Update the Same Rating
Webkiosk creates the rating as soon as the guest selects a star. If the guest
changes the value, completes the flow, or adds an optional comment, update the
same ratingId with the returned token:
PATCH /v2/ratings
Content-Type: application/json
{
"ratingId": "rating_xxxxxxxxxxx",
"feedbackToken": "short_lived_continuation_token",
"value": 5,
"comment": "The whole team was excellent.",
"submissionState": "completed"
}
The comment is stored on the rating. Aplauso does not create a separate survey or comment record for this flow.
Linking Ratings to Tips
When a guest rates and tips in the same session, include the ratingId in the
tip request. The tip points back to the existing rating; it does not copy the
comment or change the canonical destination.
Linking Ratings to Visits
Include visitId to link the rating to a hotel stay record. This powers the tipping adoption funnel analytics: what percentage of checked-in guests left a rating or tip.
Query Ratings
GET /v2/ratings?recipientType=outlet&recipientId=outlet222&environment=live
Query Parameters
| Parameter | Description |
|---|---|
recipientType + recipientId | Filter by the exact employee, outlet, or department destination |
departmentId | Roll up records in a department |
propertyId | Filter by property |
organizationId | Filter by organization |
guestId | Filter by guest |
visitId | Filter by visit/stay |
startDate | ISO8601 start of date range |
endDate | ISO8601 end of date range |
limit | Max records (default 100, max 500) |
environment | live / sandbox / demo |
Response
{
"ratings": [
{
"ratingId": "rating_xxxxxxxxxxx",
"recipientType": "outlet",
"recipientId": "outlet222",
"value": 5,
"comment": "The whole team was excellent.",
"source": "kiosk",
"environment": "live",
"metadata": { "created": "2026-03-25T14:00:00Z" }
}
],
"count": 1,
"avgRating": 5.0
}
The response includes count and avgRating calculated across all results matching the filters (not just the current limit page).
Hierarchy filters provide reporting roll-ups. They do not relabel collective ratings as employee ratings.
Service Recovery
Ratings with value of 1 or 2 can trigger automatic service recovery alerts for managers, depending on the property's Insights alert configuration. The rating is stored normally regardless of alert configuration.