Back to Woocommerce

Product reviews

docs/apis/rest-api/v3/product-reviews.mdx

10.9.0-dev23.9 KB
Original Source

import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';

Product reviews

The product reviews API allows you to create, view, update, and delete individual, or a batch, of product reviews.

Product review properties

AttributeTypeDescription
idintegerUnique identifier for the resource. READ-ONLY
date_createdstringThe date the review was created, in the site's timezone. READ-ONLY
date_created_gmtstringThe date the review was created, as GMT. READ-ONLY
product_idintegerUnique identifier for the product that the review belongs to.
statusstringStatus of the review. Options: approved, hold, spam, unspam, trash and untrash. Defaults to approved.
reviewerstringReviewer name.
reviewer_emailstringReviewer email.
reviewstringThe content of the review.
ratingintegerReview rating (0 to 5).
verifiedbooleanShows if the reviewer bought the product or not.

Create a product review

This API helps you to create a new product review.

http
POST /wp-json/wc/v3/products/reviews

Example of how to create a product review:

<Tabs> <TabItem value="curl" label="cURL">
shell
curl -X POST https://example.com/wp-json/wc/v3/products/reviews \
	-u consumer_key:consumer_secret \
	-H "Content-Type: application/json" \
	-d '{
  "product_id": 22,
  "review": "Nice album!",
  "reviewer": "John Doe",
  "reviewer_email": "[email protected]",
  "rating": 5
}'
</TabItem> <TabItem value="js" label="JavaScript">
javascript
const data = {
	product_id: 22,
	review: 'Nice album!',
	reviewer: 'John Doe',
	reviewer_email: '[email protected]',
	rating: 5,
};

WooCommerce.post( 'products/reviews', data )
	.then( ( response ) => {
		console.log( response.data );
	} )
	.catch( ( error ) => {
		console.log( error.response.data );
	} );
</TabItem> <TabItem value="php" label="PHP">
php
<?php
$data = [
    'product_id' => 22,
    'review' => 'Nice album!',
    'reviewer' => 'John Doe',
    'reviewer_email' => '[email protected]',
    'rating' => 5
];

print_r($woocommerce->post('products/reviews', $data));
?>
</TabItem> <TabItem value="python" label="Python">
python
data = {
    "product_id": 22,
    "review": "Nice album!",
    "reviewer": "John Doe",
    "reviewer_email": "[email protected]",
    "rating": 5,
}

print(wcapi.post("products/reviews", data).json())
</TabItem> <TabItem value="ruby" label="Ruby">
ruby
data = {
  product_id: 22,
  review: "Nice album!",
  reviewer: "John Doe",
  reviewer_email: "[email protected]",
  rating: 5
}

woocommerce.post("products/reviews", data).parsed_response
</TabItem> <TabItem value="response" label="JSON Response">
json
{
	"id": 22,
	"date_created": "2018-10-18T17:59:17",
	"date_created_gmt": "2018-10-18T20:59:17",
	"product_id": 22,
	"status": "approved",
	"reviewer": "John Doe",
	"reviewer_email": "[email protected]",
	"review": "Nice album!",
	"rating": 5,
	"verified": false,
	"reviewer_avatar_urls": {
		"24": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=24&d=mm&r=g",
		"48": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=48&d=mm&r=g",
		"96": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=96&d=mm&r=g"
	},
	"_links": {
		"self": [
			{
				"href": "https://example.com/wp-json/wc/v3/products/reviews/22"
			}
		],
		"collection": [
			{
				"href": "https://example.com/wp-json/wc/v3/products/reviews"
			}
		],
		"up": [
			{
				"href": "https://example.com/wp-json/wc/v3/products/22"
			}
		]
	}
}
</TabItem> </Tabs>

Retrieve a product review

This API lets you retrieve a product review by ID.

http
GET /wp-json/wc/v3/products/reviews/<id>
<Tabs> <TabItem value="curl" label="cURL">
shell
curl https://example.com/wp-json/wc/v3/products/reviews/22 \
	-u consumer_key:consumer_secret
</TabItem> <TabItem value="js" label="JavaScript">
javascript
WooCommerce.get( 'products/reviews/22' )
	.then( ( response ) => {
		console.log( response.data );
	} )
	.catch( ( error ) => {
		console.log( error.response.data );
	} );
</TabItem> <TabItem value="php" label="PHP">
php
<?php print_r($woocommerce->get('products/reviews/22')); ?>
</TabItem> <TabItem value="python" label="Python">
python
print(wcapi.get("products/reviews/22").json())
</TabItem> <TabItem value="ruby" label="Ruby">
ruby
woocommerce.get("products/reviews/22").parsed_response
</TabItem> <TabItem value="response" label="JSON Response">
json
{
	"id": 22,
	"date_created": "2018-10-18T17:59:17",
	"date_created_gmt": "2018-10-18T20:59:17",
	"product_id": 22,
	"status": "approved",
	"reviewer": "John Doe",
	"reviewer_email": "[email protected]",
	"review": "Nice album!",
	"rating": 5,
	"verified": false,
	"reviewer_avatar_urls": {
		"24": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=24&d=mm&r=g",
		"48": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=48&d=mm&r=g",
		"96": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=96&d=mm&r=g"
	},
	"_links": {
		"self": [
			{
				"href": "https://example.com/wp-json/wc/v3/products/reviews/22"
			}
		],
		"collection": [
			{
				"href": "https://example.com/wp-json/wc/v3/products/reviews"
			}
		],
		"up": [
			{
				"href": "https://example.com/wp-json/wc/v3/products/22"
			}
		]
	}
}
</TabItem> </Tabs>

List all product reviews

This API lets you retrieve all product review.

http
GET /wp-json/wc/v3/products/reviews
<Tabs> <TabItem value="curl" label="cURL">
shell
curl https://example.com/wp-json/wc/v3/products/reviews \
	-u consumer_key:consumer_secret
</TabItem> <TabItem value="js" label="JavaScript">
javascript
WooCommerce.get( 'products/reviews' )
	.then( ( response ) => {
		console.log( response.data );
	} )
	.catch( ( error ) => {
		console.log( error.response.data );
	} );
</TabItem> <TabItem value="php" label="PHP">
php
<?php print_r($woocommerce->get('products/reviews')); ?>
</TabItem> <TabItem value="python" label="Python">
python
print(wcapi.get("products/reviews").json())
</TabItem> <TabItem value="ruby" label="Ruby">
ruby
woocommerce.get("products/reviews").parsed_response
</TabItem> <TabItem value="response" label="JSON Response">
json
[
	{
		"id": 22,
		"date_created": "2018-10-18T17:59:17",
		"date_created_gmt": "2018-10-18T20:59:17",
		"product_id": 22,
		"status": "approved",
		"reviewer": "John Doe",
		"reviewer_email": "[email protected]",
		"review": "<p>Nice album!</p>\n",
		"rating": 5,
		"verified": false,
		"reviewer_avatar_urls": {
			"24": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=24&d=mm&r=g",
			"48": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=48&d=mm&r=g",
			"96": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=96&d=mm&r=g"
		},
		"_links": {
			"self": [
				{
					"href": "https://example.com/wp-json/wc/v3/products/reviews/22"
				}
			],
			"collection": [
				{
					"href": "https://example.com/wp-json/wc/v3/products/reviews"
				}
			],
			"up": [
				{
					"href": "https://example.com/wp-json/wc/v3/products/22"
				}
			]
		}
	},
	{
		"id": 20,
		"date_created": "2018-09-08T21:47:19",
		"date_created_gmt": "2018-09-09T00:47:19",
		"product_id": 31,
		"status": "approved",
		"reviewer": "Claudio Sanches",
		"reviewer_email": "[email protected]",
		"review": "<p>Now works just fine.</p>\n",
		"rating": 1,
		"verified": true,
		"reviewer_avatar_urls": {
			"24": "https://secure.gravatar.com/avatar/908480753c07509e76322dc17d305c8b?s=24&d=mm&r=g",
			"48": "https://secure.gravatar.com/avatar/908480753c07509e76322dc17d305c8b?s=48&d=mm&r=g",
			"96": "https://secure.gravatar.com/avatar/908480753c07509e76322dc17d305c8b?s=96&d=mm&r=g"
		},
		"_links": {
			"self": [
				{
					"href": "https://example.com/wp-json/wc/v3/products/reviews/20"
				}
			],
			"collection": [
				{
					"href": "https://example.com/wp-json/wc/v3/products/reviews"
				}
			],
			"up": [
				{
					"href": "https://example.com/wp-json/wc/v3/products/31"
				}
			],
			"reviewer": [
				{
					"embeddable": true,
					"href": "https://example.com/wp-json/wp/v2/users/1"
				}
			]
		}
	}
]
</TabItem> </Tabs>

Available parameters

ParameterTypeDescription
contextstringScope under which the request is made; determines fields present in response. Options: view and edit. Default is view.
pageintegerCurrent page of the collection. Default is 1.
per_pageintegerMaximum number of items to be returned in result set. Default is 10.
searchstringLimit results to those matching a string.
afterstringLimit response to reviews published after a given ISO8601 compliant date.
beforestringLimit response to reviews published before a given ISO8601 compliant date.
dates_are_gmtbooleanInterpret after and before as UTC dates when true.
excludearrayEnsure result set excludes specific ids.
includearrayLimit result set to specific ids.
offsetintegerOffset the result set by a specific number of items.
orderstringOrder sort attribute ascending or descending. Options: asc and desc. Default is desc.
orderbystringSort collection by resource attribute. Options: date, date_gmt, id, slug, include and product. Default is date_gmt.
reviewerarrayLimit result set to reviews assigned to specific user IDs.
reviewer_excludearrayEnsure result set excludes reviews assigned to specific user IDs.
reviewer_emailarrayLimit result set to that from a specific author email.
productarrayLimit result set to reviews assigned to specific product IDs.
statusstringLimit result set to reviews assigned a specific status. Options: all, hold, approved, spam and trash. Default is approved.

Update a product review

This API lets you make changes to a product review.

http
PUT /wp-json/wc/v3/products/reviews/<id>
<Tabs> <TabItem value="curl" label="cURL">
shell
curl -X PUT https://example.com/wp-json/wc/v3/products/reviews/20 \
	-u consumer_key:consumer_secret \
	-H "Content-Type: application/json" \
	-d '{
  "rating": 5
}'
</TabItem> <TabItem value="js" label="JavaScript">
javascript
const data = {
	rating: 5,
};

WooCommerce.put( 'products/reviews/20', data )
	.then( ( response ) => {
		console.log( response.data );
	} )
	.catch( ( error ) => {
		console.log( error.response.data );
	} );
</TabItem> <TabItem value="php" label="PHP">
php
<?php
$data = [
    'rating' => 5
];

print_r($woocommerce->put('products/reviews/20', $data));
?>
</TabItem> <TabItem value="python" label="Python">
python
data = {
    "rating": 5
}

print(wcapi.put("products/reviews/20", data).json())
</TabItem> <TabItem value="ruby" label="Ruby">
ruby
data = {
  rating: 5
}

woocommerce.put("products/reviews/20", data).parsed_response
</TabItem> <TabItem value="response" label="JSON Response">
json
{
	"id": 20,
	"date_created": "2018-09-08T21:47:19",
	"date_created_gmt": "2018-09-09T00:47:19",
	"product_id": 31,
	"status": "approved",
	"reviewer": "Claudio Sanches",
	"reviewer_email": "[email protected]",
	"review": "Now works just fine.",
	"rating": 5,
	"verified": true,
	"reviewer_avatar_urls": {
		"24": "https://secure.gravatar.com/avatar/908480753c07509e76322dc17d305c8b?s=24&d=mm&r=g",
		"48": "https://secure.gravatar.com/avatar/908480753c07509e76322dc17d305c8b?s=48&d=mm&r=g",
		"96": "https://secure.gravatar.com/avatar/908480753c07509e76322dc17d305c8b?s=96&d=mm&r=g"
	},
	"_links": {
		"self": [
			{
				"href": "https://example.com/wp-json/wc/v3/products/reviews/20"
			}
		],
		"collection": [
			{
				"href": "https://example.com/wp-json/wc/v3/products/reviews"
			}
		],
		"up": [
			{
				"href": "https://example.com/wp-json/wc/v3/products/31"
			}
		],
		"reviewer": [
			{
				"embeddable": true,
				"href": "https://example.com/wp-json/wp/v2/users/1"
			}
		]
	}
}
</TabItem> </Tabs>

Delete a product review

This API helps you delete a product review.

http
DELETE /wp-json/wc/v3/products/reviews/<id>
<Tabs> <TabItem value="curl" label="cURL">
shell
curl -X DELETE https://example.com/wp-json/wc/v3/products/reviews/34?force=true \
	-u consumer_key:consumer_secret
</TabItem> <TabItem value="js" label="JavaScript">
javascript
WooCommerce.delete( 'products/reviews/20', {
	force: true,
} )
	.then( ( response ) => {
		console.log( response.data );
	} )
	.catch( ( error ) => {
		console.log( error.response.data );
	} );
</TabItem> <TabItem value="php" label="PHP">
php
<?php print_r($woocommerce->delete('products/reviews/20', ['force' => true])); ?>
</TabItem> <TabItem value="python" label="Python">
python
print(wcapi.delete("products/reviews/20", params={"force": True}).json())
</TabItem> <TabItem value="ruby" label="Ruby">
ruby
woocommerce.delete("products/reviews/20", force: true).parsed_response
</TabItem> <TabItem value="response" label="JSON Response">
json
{
	"deleted": true,
	"previous": {
		"id": 20,
		"date_created": "2018-09-08T21:47:19",
		"date_created_gmt": "2018-09-09T00:47:19",
		"product_id": 31,
		"status": "trash",
		"reviewer": "Claudio Sanches",
		"reviewer_email": "[email protected]",
		"review": "Now works just fine.",
		"rating": 5,
		"verified": true,
		"reviewer_avatar_urls": {
			"24": "https://secure.gravatar.com/avatar/908480753c07509e76322dc17d305c8b?s=24&d=mm&r=g",
			"48": "https://secure.gravatar.com/avatar/908480753c07509e76322dc17d305c8b?s=48&d=mm&r=g",
			"96": "https://secure.gravatar.com/avatar/908480753c07509e76322dc17d305c8b?s=96&d=mm&r=g"
		}
	}
}
</TabItem> </Tabs>

Available parameters

ParameterTypeDescription
forcestringRequired to be true, as resource does not support trashing.

Batch update product reviews

This API helps you to batch create, update and delete multiple product reviews.

:::note Note: By default it's limited to up to 100 objects to be created, updated or deleted. :::

http
POST /wp-json/wc/v3/products/reviews/batch
<Tabs> <TabItem value="curl" label="cURL">
shell
curl -X POST https://example.com/wp-json/wc/v3/products/reviews/batch \
	-u consumer_key:consumer_secret \
	-H "Content-Type: application/json" \
	-d '{
  "create": [
    {
      "product_id": 22,
      "review": "Looks fine",
      "reviewer": "John Doe",
      "reviewer_email": "[email protected]",
      "rating": 4
    },
    {
      "product_id": 22,
      "review": "I love this album",
      "reviewer": "John Doe",
      "reviewer_email": "[email protected]",
      "rating": 5
    }
  ],
  "update": [
    {
      "id": 7,
      "reviewer": "John Doe",
      "reviewer_email": "[email protected]"
    }
  ],
  "delete": [
    22
  ]
}'
</TabItem> <TabItem value="js" label="JavaScript">
javascript
const data = {
	create: [
		{
			product_id: 22,
			review: 'Looks fine',
			reviewer: 'John Doe',
			reviewer_email: '[email protected]',
			rating: 4,
		},
		{
			product_id: 22,
			review: 'I love this album',
			reviewer: 'John Doe',
			reviewer_email: '[email protected]',
			rating: 5,
		},
	],
	update: [
		{
			id: 7,
			reviewer: 'John Doe',
			reviewer_email: '[email protected]',
		},
	],
	delete: [ 22 ],
};

WooCommerce.post( 'products/reviews/batch', data )
	.then( ( response ) => {
		console.log( response.data );
	} )
	.catch( ( error ) => {
		console.log( error.response.data );
	} );
</TabItem> <TabItem value="php" label="PHP">
php
<?php
$data = [
    'create' => [
        [
            'product_id' => 22,
            'review' => 'Looks fine',
            'reviewer' => 'John Doe',
            'reviewer_email' => '[email protected]',
            'rating' => 4
        ],
        [
            'product_id' => 22,
            'review' => 'I love this album',
            'reviewer' => 'John Doe',
            'reviewer_email' => '[email protected]',
            'rating' => 5
        ]
    ],
    'update' => [
        [
            'id' => 7,
            'reviewer' => 'John Doe',
            'reviewer_email' => '[email protected]',
        ]
    ],
    'delete' => [
        22
    ]
];

print_r($woocommerce->post('products/reviews/batch', $data));
?>
</TabItem> <TabItem value="python" label="Python">
python
data = {
    "create": [
        {
            "product_id": 22,
            "review": "Looks fine",
            "reviewer": "John Doe",
            "reviewer_email": "[email protected]",
            "rating": 4
        },
        {
            "product_id": 22,
            "review": "I love this album",
            "reviewer": "John Doe",
            "reviewer_email": "[email protected]",
            "rating": 5
        }
    ],
    "update": [
        {
            "id": 7,
            "reviewer": "John Doe",
            "reviewer_email": "[email protected]"
        }
    ],
    "delete": [
        22
    ]
}

print(wcapi.post("products/reviews/batch", data).json())
</TabItem> <TabItem value="ruby" label="Ruby">
ruby
data = {
  create: [
    {
      product_id: "22",
      review: "Looks fine",
      reviewer: "John Doe",
      reviewer_email: "[email protected]",
      rating: "4"
    },
    {
      product_id: "22",
      review: "I love this album",
      reviewer: "John Doe",
      reviewer_email: "[email protected]",
      rating: "5"
    }
  ],
  update: [
    {
      id: 7,
      reviewer: "John Doe",
      reviewer_email: "[email protected]"
    }
  ],
  delete: [
    22
  ]
}

woocommerce.post("products/reviews/batch", data).parsed_response
</TabItem> <TabItem value="response" label="JSON Response">
json
{
	"create": [
		{
			"id": 25,
			"date_created": "2018-10-18T18:37:35",
			"date_created_gmt": "2018-10-18T21:37:35",
			"product_id": 22,
			"status": "approved",
			"reviewer": "John Doe",
			"reviewer_email": "[email protected]",
			"review": "Looks fine",
			"rating": 4,
			"verified": false,
			"reviewer_avatar_urls": {
				"24": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=24&d=mm&r=g",
				"48": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=48&d=mm&r=g",
				"96": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=96&d=mm&r=g"
			},
			"_links": {
				"self": [
					{
						"href": "https://example.com/wp-json/wc/v3/products/reviews/25"
					}
				],
				"collection": [
					{
						"href": "https://example.com/wp-json/wc/v3/products/reviews"
					}
				],
				"up": [
					{
						"href": "https://example.com/wp-json/wc/v3/products/22"
					}
				]
			}
		},
		{
			"id": 26,
			"date_created": "2018-10-18T18:37:35",
			"date_created_gmt": "2018-10-18T21:37:35",
			"product_id": 22,
			"status": "approved",
			"reviewer": "John Doe",
			"reviewer_email": "[email protected]",
			"review": "I love this album",
			"rating": 5,
			"verified": false,
			"reviewer_avatar_urls": {
				"24": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=24&d=mm&r=g",
				"48": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=48&d=mm&r=g",
				"96": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=96&d=mm&r=g"
			},
			"_links": {
				"self": [
					{
						"href": "https://example.com/wp-json/wc/v3/products/reviews/26"
					}
				],
				"collection": [
					{
						"href": "https://example.com/wp-json/wc/v3/products/reviews"
					}
				],
				"up": [
					{
						"href": "https://example.com/wp-json/wc/v3/products/22"
					}
				]
			}
		}
	],
	"update": [
		{
			"id": 7,
			"date_created": "2018-07-26T19:29:21",
			"date_created_gmt": "2018-07-26T22:29:21",
			"product_id": 66,
			"status": "approved",
			"reviewer": "John Doe",
			"reviewer_email": "[email protected]",
			"review": "Not so bad :(",
			"rating": 3,
			"verified": false,
			"reviewer_avatar_urls": {
				"24": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=24&d=mm&r=g",
				"48": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=48&d=mm&r=g",
				"96": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=96&d=mm&r=g"
			},
			"_links": {
				"self": [
					{
						"href": "https://example.com/wp-json/wc/v3/products/reviews/7"
					}
				],
				"collection": [
					{
						"href": "https://example.com/wp-json/wc/v3/products/reviews"
					}
				],
				"up": [
					{
						"href": "https://example.com/wp-json/wc/v3/products/66"
					}
				]
			}
		}
	],
	"delete": [
		{
			"deleted": true,
			"previous": {
				"id": 22,
				"date_created": "2018-10-18T17:59:17",
				"date_created_gmt": "2018-10-18T20:59:17",
				"product_id": 22,
				"status": "approved",
				"reviewer": "John Doe",
				"reviewer_email": "[email protected]",
				"review": "Nice album!",
				"rating": 5,
				"verified": false,
				"reviewer_avatar_urls": {
					"24": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=24&d=mm&r=g",
					"48": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=48&d=mm&r=g",
					"96": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=96&d=mm&r=g"
				}
			}
		}
	]
}
</TabItem> </Tabs>