Reviews
Review records collected for the project across its connected sources; list, moderate, share, tag, mark replied, or remove as integrations require.
Retrieve project reviews with facet, source, location, score, and tag filters, optional sorting by rating or timestamps, and calendar bounds on a chosen review datetime column.
Inclusive lower calendar date (YYYY-MM-DD) for the column chosen by date_key, defaulting to created_at when date_key is omitted.
Review datetime column paired with date_from and date_to (defaults to created_at when omitted).
Inclusive upper calendar date (YYYY-MM-DD) for the column chosen by date_key; must be on or after date_from when both bounds are provided.
Review list facet aligned with console filters (non-duplicates unless duplicate is selected).
Maximum number of records to return.
Unique numeric identifier for the location.
URL-friendly identifier for the location.
Stable UUID for the location.
Numeric rating score for the review.
Identifier for the source system or review platform.
Source slug for this resource.
Source uuid for this resource.
Sort direction applied when sort_key is set (defaults to desc when omitted).
Review attribute to sort by; omit to use newest-first by creation time.
URL-friendly identifier for the review tag.
Success
Object containing response data for this resource.
Indicates whether the request completed successfully.
Short code or application-level status code for this resource.
GET /project/reviews HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Success
{
"success": true,
"code": 200,
"data": [
{
"id": 77,
"uuid": "c2928ac9-8c0a-4e8a-b3b0-6dbd12d4d1ce",
"score": 5,
"review": "The staff was friendly and the appointment started right on time.",
"review_html": "<p>The staff was friendly and the appointment started right on time.</p>",
"reply": "Thank you for sharing your experience, Alex!",
"is_hidden": false,
"is_duplicate": false,
"has_highlights": true,
"can_reply": true,
"has_reply": true,
"external_url": "https://www.google.com/maps/reviews/acme-dental-77",
"platform_url": "https://app.example.com/projects/42/reviews/77",
"replied_at": 1714680000,
"created_at": 1714593600,
"customer": {
"id": 101,
"uuid": "c53958ca-dfa3-4804-b711-0b7e61e7d8de",
"name": "Alex Johnson",
"color": "#4F46E5",
"platform_url": "https://app.example.com/projects/42/customers/101"
},
"location": {
"id": 12,
"project_id": 42,
"uuid": "51987517-6a48-4e4d-87d5-934147e46234",
"name": "Downtown",
"display_name": "Acme Dental Downtown",
"slug": "downtown",
"store_code": "CHI-DTN",
"title": "Downtown Office",
"address": "123 Main St, Chicago, IL 60601",
"address1": "123 Main St",
"address2": "Suite 400",
"city": "Chicago",
"state": "IL",
"postal_code": "60601"
},
"rating": {
"id": 5,
"score": 5,
"label": "Excellent"
},
"reviewer": {
"id": 14,
"name": "Alex Johnson",
"photo_url": "https://lh3.googleusercontent.com/a-/alex"
},
"source": {
"id": 5,
"uuid": "59fd6c84-2955-4ef7-a665-48a87b79f35b",
"name": "Google",
"slug": "google",
"sprite": "fab fa-google",
"color": "#DB4437",
"icon": null
},
"fields": [
{
"name": "service",
"value": "Cleaning"
}
],
"tags": [
{
"id": 9,
"uuid": "719c34f3-30fd-4d9e-82dd-172ce6d554af",
"name": "VIP",
"slug": "vip"
}
]
}
],
"pagination": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "https://api.example.com/project/reviews",
"per_page": 50,
"to": 1,
"total": 1
}
}Create a review for a customer identified by email or phone, creating the customer when needed, with optional source, location, tags, and review date.
Payload for creating a review and optionally finding or creating the customer.
Customer first name.
Star rating from 1 to 5.
Customer last name.
Email address used to find or create the customer.
Phone number used to find or create the customer.
Public image URL downloaded and stored as the customer photo before the review is created. Returns 400 if the URL cannot be fetched or is not a valid image.
Company or organization name associated with the customer.
Plain-text review body; HTML is derived server-side.
Public URL of the review on an external site (for example Google or Yelp).
Optional instant for request bodies: Unix timestamp as integer (seconds), or a date/time string of at most 50 characters that PHP Carbon can parse. For strings, ISO-8601 / RFC 3339 (for example 2026-04-28T15:30:00Z) is the recommended format in examples and client integrations. Invalid values fail validation. When the field is omitted or null, the API uses the current server time where that behavior is documented on the operation.
Unix timestamp in seconds since the Unix epoch.
Date/time string parseable by Carbon; prefer ISO-8601 / RFC 3339; maximum 50 characters.
Slug of an existing project location. Returns 404 if the slug is not found.
Slug of an existing review source. Returns 404 if the slug is not found.
Review tag slugs to assign after create.
Success
Object containing response data for this resource.
Indicates whether the request completed successfully.
Short code or application-level status code for this resource.
POST /project/reviews HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 455
{
"first_name": "Alex",
"last_name": "Johnson",
"email": "alex.johnson@example.com",
"phone": "+15551234567",
"customer_photo_url": "https://cdn.example.com/photos/alex-johnson.jpg",
"company": "Acme Corp",
"score": 5,
"review": "The staff was friendly and the appointment started right on time.",
"external_url": "https://www.google.com/maps/reviews/acme-dental-77",
"location_slug": "downtown",
"source_slug": "google",
"tag_slugs": [
"vip"
],
"created_at": "2026-04-28T15:30:00Z"
}Success
{
"success": true,
"code": 200,
"data": {
"id": 77,
"uuid": "c2928ac9-8c0a-4e8a-b3b0-6dbd12d4d1ce",
"score": 5,
"review": "The staff was friendly and the appointment started right on time.",
"review_html": "<p>The staff was friendly and the appointment started right on time.</p>",
"reply": "Thank you for sharing your experience, Alex!",
"is_hidden": false,
"is_duplicate": false,
"has_highlights": true,
"can_reply": true,
"has_reply": true,
"external_url": "https://www.google.com/maps/reviews/acme-dental-77",
"platform_url": "https://app.example.com/projects/42/reviews/77",
"replied_at": 1714680000,
"created_at": 1714593600,
"customer": {
"id": 101,
"uuid": "c53958ca-dfa3-4804-b711-0b7e61e7d8de",
"name": "Alex Johnson",
"color": "#4F46E5",
"platform_url": "https://app.example.com/projects/42/customers/101"
},
"location": {
"id": 12,
"project_id": 42,
"uuid": "51987517-6a48-4e4d-87d5-934147e46234",
"name": "Downtown",
"display_name": "Acme Dental Downtown",
"slug": "downtown",
"store_code": "CHI-DTN",
"title": "Downtown Office",
"address": "123 Main St, Chicago, IL 60601",
"address1": "123 Main St",
"address2": "Suite 400",
"city": "Chicago",
"state": "IL",
"postal_code": "60601"
},
"rating": {
"id": 5,
"score": 5,
"label": "Excellent"
},
"reviewer": {
"id": 14,
"name": "Alex Johnson",
"photo_url": "https://lh3.googleusercontent.com/a-/alex"
},
"source": {
"id": 5,
"uuid": "59fd6c84-2955-4ef7-a665-48a87b79f35b",
"name": "Google",
"slug": "google",
"sprite": "fab fa-google",
"color": "#DB4437",
"icon": null
},
"fields": [
{
"name": "service",
"value": "Cleaning"
}
],
"tags": [
{
"id": 9,
"uuid": "719c34f3-30fd-4d9e-82dd-172ce6d554af",
"name": "VIP",
"slug": "vip"
}
]
}
}Remove a review that should no longer be reconciled.
Unique numeric identifier for this resource.
Success
Object containing response data for this resource.
Indicates whether the request completed successfully.
Short code or application-level status code for this resource.
DELETE /project/reviews/{id} HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Success
{
"success": true,
"code": 200
}Assign an existing project location to a review by slug. Returns 404 if the location slug is not found.
Unique numeric identifier for this review.
Request body with the location slug to assign.
Slug of an existing project location. Returns 404 if the slug is not found.
Success
Object containing response status for the request.
Indicates whether the request completed successfully.
Application-level status code returned by this API.
PUT /project/reviews/{id}/location HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 28
{
"location_slug": "downtown"
}Success
{
"success": true,
"code": 200
}Assign an existing review source to a review by slug. Returns 404 if the source slug is not found.
Unique numeric identifier for this review.
Request body with the source slug to assign.
Slug of an existing review source. Returns 404 if the slug is not found.
Success
Object containing response status for the request.
Indicates whether the request completed successfully.
Application-level status code returned by this API.
PUT /project/reviews/{id}/source HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 24
{
"source_slug": "google"
}Success
{
"success": true,
"code": 200
}Show or hide a review in public displays.
Unique numeric identifier for this review.
Request body containing the desired review visibility flag.
Whether this review should be hidden from public displays.
Success
Object containing response status for the request.
Indicates whether the request completed successfully.
Application-level status code returned by this API.
PUT /project/reviews/{id}/flag-hidden HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 18
{
"is_hidden": true
}Success
{
"success": true,
"code": 200
}Mark whether a review is a duplicate record.
Unique numeric identifier for this review.
Request body containing the desired duplicate flag.
Whether this review should be marked as a duplicate.
Success
Object containing response status for the request.
Indicates whether the request completed successfully.
Application-level status code returned by this API.
PUT /project/reviews/{id}/flag-duplicate HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 21
{
"is_duplicate": true
}Success
{
"success": true,
"code": 200
}Set or clear replied_at when a reply was handled outside the platform without changing stored reply text.
Unique numeric identifier for the review.
Request body toggling whether the review counts as replied.
When true, records the current time as replied_at; when false, clears replied_at.
Success
Object containing response status for the request.
Indicates whether the request completed successfully.
Application-level status code returned by this API.
PUT /project/reviews/{id}/mark-replied HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 16
{
"replied": true
}Success
{
"success": true,
"code": 200
}Publish or replace the business owner's reply on the review's connected platform (such as Google Business Profile or Facebook) using the project's active integration credentials; accepts manual reply text only and does not invoke AI drafting.
Unique numeric identifier for the review.
Request body with the owner reply to send to the third-party review platform API.
Reply text to post or update on the external platform (for example Google or Facebook).
Success
Object containing response status for the request.
Indicates whether the request completed successfully.
Application-level status code returned by this API.
PUT /project/reviews/{id}/reply HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 65
{
"reply": "Thank you for visiting—we appreciate your feedback."
}Success
{
"success": true,
"code": 200
}Replace the tag assignments for a review using the provided slug list.
Unique numeric identifier for the review.
Request body listing tag slugs to apply; omitting unrelated tags removes them from the review.
Tag slugs to assign; send an empty array to clear all tags from this review.
Success
Object containing response status for the request.
Indicates whether the request completed successfully.
Application-level status code returned by this API.
PUT /project/reviews/{id}/tags HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 43
{
"tag_slugs": [
"great-service",
"five-star"
]
}Success
{
"success": true,
"code": 200
}Render a share-card PNG using optional template styling and aspect ratio, persist the image, and return CDN-backed metadata.
Unique numeric identifier for the review.
Optionally pick a saved share template and export aspect ratio; send an empty object for built-in defaults at 1:1.
Export aspect ratio; when set, overrides the ratio saved on the chosen template or the default preset.
Numeric id of a share template on this project; omit to merge only built-in defaults.
Generated share PNG exposed as Image metadata with a full HTTPS link matching other API image fields.
Standard success envelope with ImageTransformer fields flattened into data like other singleton resources.
Indicates whether the request completed successfully.
Application-level status code mirroring HTTP 200 on success.
POST /project/reviews/{id}/share-image HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 32
{
"ratio": "4:5",
"template_id": 12
}Generated share PNG exposed as Image metadata with a full HTTPS link matching other API image fields.
{
"success": true,
"code": 200,
"data": {
"id": 9821,
"uuid": "fa4dce10-71c3-4725-9146-6d92c4b501d4",
"link": "https://cdn.example.com/images/shares/review-share-9821.webp"
}
}Last updated