Reviews

Create and update a review from a custom partner

Changed on

This endpoint lets you push into Partoo the reviews you collect on your own platform, through a custom review partner enabled on your organization.

A review is identified by the pair (partner_slug, external_id):

  • the first call with a given pair creates the review,
  • every later call with the same pair updates it in place.

Sending the same payload twice is therefore safe: the second call is a no-op and still answers 200. Pushing a review you previously deleted restores it.

You can push for partners that are flagged as is_custom by List review partners. Reviews created this way behave like any other review: they are returned by Search for reviews, they can be replied to, and they trigger the review_created / review_updated webhooks.

You must use an API key with ORG_ADMIN rights and the review_edit permission, and the business must belong to the organization of the API key's.

post/reviews

Request

Request body

partner_slugstring required

Slug of the custom partner the review comes from.

It must be a partner enabled on your organization, returned with is_custom: true by List review partners.

external_idstring required

The review's unique id on the source platform. This is the key of the upsert: re-sending the same external_id for the same partner_slug updates the review instead of creating a new one.

It is returned as key and partner_id on the review. An external_id already used by a review of another partner is rejected with a 409.

business_idstring required

Business id

ratinginteger required

Star rating given by the author.

contentstring nullable

Body of the review. Omit it for a rating-only review.

datestring date-time required

When the review was posted on the source platform.

The offset is required (for example +02:00 or Z); Partoo stores the date in UTC and renders it in the business timezone.

Two reviews of the same business cannot share the same date and author.display_name: such a push answers 409.

update_datestring date-time

Last update of the review on the source platform. Defaults to date, and cannot be earlier than it.

linkstring uri nullable

Public URL of the review on the source platform.

Example request

{
  "partner_slug": "custom_partner",
  "external_id": "ue-review-8f21c0",
  "business_id": "5409c35a97bbc544d8e26737",
  "rating": 4,
  "content": "Fast delivery, meal was still hot. Thanks !",
  "author": {
    "display_name": "Camille D."
  },
  "date": "2026-09-15T18:32:11+02:00",
  "update_date": "2026-09-16T09:04:55+02:00",
  "link": "https://www.custom_partner.com/reviews/8f21c0",
  "reply": {
    "content": "Thank you for your review!",
    "date": "2026-09-16T09:04:55+02:00"
  }
}

Response

The review that was created or updated

keystring

Identifier of the review on the partner platform. For a review pushed through a custom partner, this is the external_id you sent.

org_idinteger

Unique identifier of an organization in Partoo.

idinteger

Review id

business_idstring

Business id

partnerstring

Review partner slug

partner_idstring

Review id on publisher

author_namestring

The author name of the review.

Note: Replies don't have an author.

datestring datetime

Review creation date

update_datestring datetime

Review update date

delete_datestring datetime

Review deletion date (only specified if the review has been deleted)

ratinginteger

Review rating (can be null)

recommendedboolean

Review recommended (can be null)

titlestring

Review title

contentstring

Review body content

state'treated' | 'not_treated' | 'deleted'

Reply state

linkstring uri

Link to review on publisher platform

media_linksstring[]

Array of Google photo URLs associated with the review.

Populated when with_media_links=true query parameter is used. Empty array if no associated media found or if with_media_links=false.

Example response

{
  "org_id": 42,
  "id": 34,
  "business_id": "5409c35a97bbc544d8e26737",
  "partner": "google_my_business",
  "partner_id": "accounts/114063712393225091258/locations/74805271119400652054",
  "author_name": "Castorche",
  "date": "2017-07-01T16:10:23.156000+02:00",
  "update_date": "2017-08-01T19:15:54.256000+02:00",
  "rating": 3,
  "content": "Magasin un peu vieillot , mais personnel très sympathique, nombreuses références en rayons , un très bon choix côté vin...",
  "comments": [
    {
      "id": 82938,
      "partner_id": "accounts/114063712393225091258/locations/74805271119400652054",
      "created": "2019-08-01T19:15:54.256000+02:00",
      "author_name": "Castorche",
      "content": "Merci ❤️",
      "date": "2017-08-01T19:15:54.256000+02:00",
      "update_date": "2017-08-01T19:15:54.256000+02:00",
      "can_edit": true,
      "review_id": 34,
      "user_id": "123456789abcdef2f60c42ff"
    }
  ],
  "tags": [
    {
      "id": 25,
      "label": "food",
      "color": "#808080"
    }
  ],
  "media_links": [
    "https://lh3.googleusercontent.com/gpms...",
    "https://lh3.googleusercontent.com/gpms-cs-s/AB8u6HYwO..."
  ]
}

Changes