Reviews
Ingest and manage guest reviews from TripAdvisor, Google, Booking.com, Airbnb, and direct channels. Track response status, sentiment, and sub-ratings to understand and act on guest feedback at scale.
The Review object
idstringUnique review ID. Prefixed rev_.
property_idstringProperty this review belongs to.
guest_idstring?Linked guest profile, if matched.
sourceenumtripadvisor · google · booking · airbnb · internal · direct
sentimentenumpositive · neutral · negative
overall_ratingfloatOverall rating (1.0–5.0).
cleanliness_ratingfloat?Cleanliness sub-rating (1.0–5.0).
service_ratingfloat?Service sub-rating (1.0–5.0).
location_ratingfloat?Location sub-rating (1.0–5.0).
value_ratingfloat?Value sub-rating (1.0–5.0).
titlestring?Review headline.
bodystring?Full review text.
responsestring?Management response text.
responded_atdatetime?When the management response was posted.
review_datedateDate the review was written (YYYY-MM-DD).
is_publishedbooleanWhether the review is visible in the dashboard.
created_atdatetimeISO 8601 timestamp.
Endpoints
/v1/reviewsIngest a reviewCreate a review record from an OTA or direct channel.
Request Body
sourcestringrequiredReview source: tripadvisor, google, booking, airbnb, internal, or direct.overall_ratingnumberrequiredOverall rating from 1.0 to 5.0.review_datestringrequiredDate of the review (YYYY-MM-DD).sentimentstringpositive, neutral, or negative.titlestringReview headline.bodystringFull review content.cleanliness_ratingnumberCleanliness sub-score (1.0–5.0).service_ratingnumberService sub-score (1.0–5.0).guest_idstringLink to a guest profile.curl -X POST https://api.escapelife.ai/v1/reviews \
-H "X-API-Key: sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"source": "tripadvisor",
"overall_rating": 5,
"cleanliness_rating": 5,
"service_rating": 5,
"title": "Exceptional stay — best resort experience",
"body": "The spa team went above and beyond.",
"review_date": "2026-03-15",
"sentiment": "positive"
}'{
"id": "rev_ghi789",
"property_id": "pty_xyz",
"source": "tripadvisor",
"sentiment": "positive",
"overall_rating": 5.0,
"cleanliness_rating": 5.0,
"service_rating": 5.0,
"title": "Exceptional stay — best resort experience",
"body": "The spa team went above and beyond.",
"response": null,
"responded_at": null,
"review_date": "2026-03-15",
"is_published": true,
"created_at": "2026-03-16T10:00:00Z"
}/v1/reviewsList reviewsReturn reviews for the property, sorted by review_date descending.
Path / Query Parameters
sourcestringFilter by source platform.sentimentstringFilter by sentiment: positive, neutral, negative.min_ratingnumberMinimum overall_rating to include.max_ratingnumberMaximum overall_rating to include.respondedbooleantrue returns only responded reviews; false returns unanswered.limitintegerMax results (1–100). Default 20.offsetintegerPagination offset. Default 0./v1/reviews/summaryReview summaryReturn aggregate statistics: average ratings, sentiment distribution, and source breakdown.
{
"total": 124,
"average_overall": 4.6,
"average_cleanliness": 4.7,
"average_service": 4.5,
"by_sentiment": {
"positive": 98,
"neutral": 20,
"negative": 6
},
"by_source": {
"tripadvisor": 45,
"google": 38,
"booking": 27,
"airbnb": 14
},
"unanswered": 12
}/v1/reviews/{id}Retrieve a reviewFetch a single review by ID.
Path / Query Parameters
idstringrequiredReview ID (rev_...)./v1/reviews/{id}/respondPost a management responseAdd or update the management response for a review. Sets responded_at to the current time.
Path / Query Parameters
idstringrequiredReview ID (rev_...).Request Body
responsestringrequiredThe management response text to post.curl -X PATCH https://api.escapelife.ai/v1/reviews/rev_ghi789/respond \
-H "X-API-Key: sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"response": "Thank you so much — we are thrilled the spa experience was the highlight of your stay. We look forward to welcoming you back!"}'