For the complete documentation index, see llms.txt. This page is also available as Markdown.

Reviews

Review records collected for the project across its connected sources; list, moderate, share, tag, mark replied, or remove as integrations require.

List Reviews

get

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.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
date_fromstring · date · nullableOptional

Inclusive lower calendar date (YYYY-MM-DD) for the column chosen by date_key, defaulting to created_at when date_key is omitted.

date_keystring · enum · nullableOptional

Review datetime column paired with date_from and date_to (defaults to created_at when omitted).

Possible values:
date_tostring · date · nullableOptional

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.

filterstring · enum · nullableOptional

Review list facet aligned with console filters (non-duplicates unless duplicate is selected).

Possible values:
limitinteger · nullableOptional

Maximum number of records to return.

location_idinteger · nullableOptional

Unique numeric identifier for the location.

location_slugstring · nullableOptional

URL-friendly identifier for the location.

location_uuidstring · nullableOptional

Stable UUID for the location.

scoreinteger · min: 1 · max: 5 · nullableOptional

Numeric rating score for the review.

source_idinteger · nullableOptional

Identifier for the source system or review platform.

source_slugstring · nullableOptional

Source slug for this resource.

source_uuidstring · nullableOptional

Source uuid for this resource.

sort_dirstring · enum · nullableOptional

Sort direction applied when sort_key is set (defaults to desc when omitted).

Possible values:
sort_keystring · enum · nullableOptional

Review attribute to sort by; omit to use newest-first by creation time.

Possible values:
tag_slugstring · nullableOptional

URL-friendly identifier for the review tag.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Short code or application-level status code for this resource.

get/reviews
GET /project/reviews HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

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 Review

post

Create a review for a customer identified by email or phone, creating the customer when needed, with optional source, location, tags, and review date.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body

Payload for creating a review and optionally finding or creating the customer.

first_namestringRequired

Customer first name.

scoreinteger · min: 1 · max: 5Required

Star rating from 1 to 5.

last_namestringOptional

Customer last name.

emailstringOptional

Email address used to find or create the customer.

phonestringOptional

Phone number used to find or create the customer.

customer_photo_urlstring · uri · max: 500Optional

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.

companystringOptional

Company or organization name associated with the customer.

reviewstring · max: 5000Optional

Plain-text review body; HTML is derived server-side.

external_urlstring · uri · max: 500Optional

Public URL of the review on an external site (for example Google or Yelp).

created_atone of · nullableOptional

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.

integerOptional

Unix timestamp in seconds since the Unix epoch.

or
string · max: 50Optional

Date/time string parseable by Carbon; prefer ISO-8601 / RFC 3339; maximum 50 characters.

location_slugstring · max: 50Optional

Slug of an existing project location. Returns 404 if the slug is not found.

source_slugstring · max: 50Optional

Slug of an existing review source. Returns 404 if the slug is not found.

tag_slugsstring[]Optional

Review tag slugs to assign after create.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Short code or application-level status code for this resource.

post/reviews
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"
}
200

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"
      }
    ]
  }
}

Delete Review

delete

Remove a review that should no longer be reconciled.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for this resource.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Short code or application-level status code for this resource.

delete/reviews/{id}
DELETE /project/reviews/{id} HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Success

{
  "success": true,
  "code": 200
}

Update Review Location

put

Assign an existing project location to a review by slug. Returns 404 if the location slug is not found.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for this review.

Body

Request body with the location slug to assign.

location_slugstring · max: 50Required

Slug of an existing project location. Returns 404 if the slug is not found.

Responses
200

Success

application/json

Object containing response status for the request.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/reviews/{id}/location
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"
}
200

Success

{
  "success": true,
  "code": 200
}

Update Review Source

put

Assign an existing review source to a review by slug. Returns 404 if the source slug is not found.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for this review.

Body

Request body with the source slug to assign.

source_slugstring · max: 50Required

Slug of an existing review source. Returns 404 if the slug is not found.

Responses
200

Success

application/json

Object containing response status for the request.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/reviews/{id}/source
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"
}
200

Success

{
  "success": true,
  "code": 200
}

Update Review Visibility

put

Show or hide a review in public displays.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for this review.

Body

Request body containing the desired review visibility flag.

is_hiddenbooleanRequired

Whether this review should be hidden from public displays.

Responses
200

Success

application/json

Object containing response status for the request.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/reviews/{id}/flag-hidden
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
}
200

Success

{
  "success": true,
  "code": 200
}

Update Review Duplicate Flag

put

Mark whether a review is a duplicate record.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for this review.

Body

Request body containing the desired duplicate flag.

is_duplicatebooleanRequired

Whether this review should be marked as a duplicate.

Responses
200

Success

application/json

Object containing response status for the request.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/reviews/{id}/flag-duplicate
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
}
200

Success

{
  "success": true,
  "code": 200
}

Mark Review Replied

put

Set or clear replied_at when a reply was handled outside the platform without changing stored reply text.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the review.

Body

Request body toggling whether the review counts as replied.

repliedbooleanRequired

When true, records the current time as replied_at; when false, clears replied_at.

Responses
200

Success

application/json

Object containing response status for the request.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/reviews/{id}/mark-replied
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
}
200

Success

{
  "success": true,
  "code": 200
}

Reply to Review on Integration

put

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.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the review.

Body

Request body with the owner reply to send to the third-party review platform API.

replystring · max: 4000Required

Reply text to post or update on the external platform (for example Google or Facebook).

Responses
200

Success

application/json

Object containing response status for the request.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/reviews/{id}/reply
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."
}
200

Success

{
  "success": true,
  "code": 200
}

Update Review Tags

put

Replace the tag assignments for a review using the provided slug list.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the review.

Body

Request body listing tag slugs to apply; omitting unrelated tags removes them from the review.

tag_slugsstring[]Required

Tag slugs to assign; send an empty array to clear all tags from this review.

Responses
200

Success

application/json

Object containing response status for the request.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/reviews/{id}/tags
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"
  ]
}
200

Success

{
  "success": true,
  "code": 200
}

Create Review Share Image

post

Render a share-card PNG using optional template styling and aspect ratio, persist the image, and return CDN-backed metadata.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the review.

Body

Optionally pick a saved share template and export aspect ratio; send an empty object for built-in defaults at 1:1.

ratiostring · enumOptional

Export aspect ratio; when set, overrides the ratio saved on the chosen template or the default preset.

Possible values:
template_idintegerOptional

Numeric id of a share template on this project; omit to merge only built-in defaults.

Responses
200

Generated share PNG exposed as Image metadata with a full HTTPS link matching other API image fields.

application/json

Standard success envelope with ImageTransformer fields flattened into data like other singleton resources.

successbooleanRequired

Indicates whether the request completed successfully.

codeintegerRequired

Application-level status code mirroring HTTP 200 on success.

post/reviews/{id}/share-image
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
}
200

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