Review Item
Creates or updates a review for the specified item. More information around the caching surrounding item ratings and reviews can be found here: https://learn.microsoft.com/en-us/gaming/playfab/features/economy-v2/catalog/ratings#ratings-design-and-caching
Allowed entity token types: title, master_player_account, title_player_account
Error codes
This operation may return the following PlayFab errors:
| Error | Code |
|---|---|
| DatabaseThroughputExceeded | 1113 |
| ItemNotFound | 1047 |
curl --request POST \
--url https://{titleId}.playfabapi.com/Catalog/ReviewItem \
--header 'Content-Type: application/json' \
--header 'X-EntityToken: <api-key>' \
--data @- <<EOF
{
"Review": {
"ItemVersion": "2.4.1",
"Title": "Best Game Ever",
"ReviewText": "I play this game every day. It's my favorite game yet.",
"Rating": 5,
"IsInstalled": true
},
"Id": "dddddddd-dddd-dddd-dddd-dddddddddddd"
}
EOFimport requests
url = "https://{titleId}.playfabapi.com/Catalog/ReviewItem"
payload = {
"Review": {
"ItemVersion": "2.4.1",
"Title": "Best Game Ever",
"ReviewText": "I play this game every day. It's my favorite game yet.",
"Rating": 5,
"IsInstalled": True
},
"Id": "dddddddd-dddd-dddd-dddd-dddddddddddd"
}
headers = {
"X-EntityToken": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-EntityToken': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
Review: {
ItemVersion: '2.4.1',
Title: 'Best Game Ever',
ReviewText: 'I play this game every day. It\'s my favorite game yet.',
Rating: 5,
IsInstalled: true
},
Id: 'dddddddd-dddd-dddd-dddd-dddddddddddd'
})
};
fetch('https://{titleId}.playfabapi.com/Catalog/ReviewItem', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{titleId}.playfabapi.com/Catalog/ReviewItem",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'Review' => [
'ItemVersion' => '2.4.1',
'Title' => 'Best Game Ever',
'ReviewText' => 'I play this game every day. It\'s my favorite game yet.',
'Rating' => 5,
'IsInstalled' => true
],
'Id' => 'dddddddd-dddd-dddd-dddd-dddddddddddd'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-EntityToken: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{titleId}.playfabapi.com/Catalog/ReviewItem"
payload := strings.NewReader("{\n \"Review\": {\n \"ItemVersion\": \"2.4.1\",\n \"Title\": \"Best Game Ever\",\n \"ReviewText\": \"I play this game every day. It's my favorite game yet.\",\n \"Rating\": 5,\n \"IsInstalled\": true\n },\n \"Id\": \"dddddddd-dddd-dddd-dddd-dddddddddddd\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-EntityToken", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{titleId}.playfabapi.com/Catalog/ReviewItem")
.header("X-EntityToken", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"Review\": {\n \"ItemVersion\": \"2.4.1\",\n \"Title\": \"Best Game Ever\",\n \"ReviewText\": \"I play this game every day. It's my favorite game yet.\",\n \"Rating\": 5,\n \"IsInstalled\": true\n },\n \"Id\": \"dddddddd-dddd-dddd-dddd-dddddddddddd\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Catalog/ReviewItem")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-EntityToken"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"Review\": {\n \"ItemVersion\": \"2.4.1\",\n \"Title\": \"Best Game Ever\",\n \"ReviewText\": \"I play this game every day. It's my favorite game yet.\",\n \"Rating\": 5,\n \"IsInstalled\": true\n },\n \"Id\": \"dddddddd-dddd-dddd-dddd-dddddddddddd\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"status": "OK",
"data": {}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}Authorizations
This API requires an Entity Session Token, available from the Entity GetEntityToken method.
Body
An alternate ID associated with this item.
Show child attributes
Show child attributes
The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
The entity to perform this action on.
Show child attributes
Show child attributes
The unique ID of the item.
The review to submit.
Show child attributes
Show child attributes
Was this page helpful?
curl --request POST \
--url https://{titleId}.playfabapi.com/Catalog/ReviewItem \
--header 'Content-Type: application/json' \
--header 'X-EntityToken: <api-key>' \
--data @- <<EOF
{
"Review": {
"ItemVersion": "2.4.1",
"Title": "Best Game Ever",
"ReviewText": "I play this game every day. It's my favorite game yet.",
"Rating": 5,
"IsInstalled": true
},
"Id": "dddddddd-dddd-dddd-dddd-dddddddddddd"
}
EOFimport requests
url = "https://{titleId}.playfabapi.com/Catalog/ReviewItem"
payload = {
"Review": {
"ItemVersion": "2.4.1",
"Title": "Best Game Ever",
"ReviewText": "I play this game every day. It's my favorite game yet.",
"Rating": 5,
"IsInstalled": True
},
"Id": "dddddddd-dddd-dddd-dddd-dddddddddddd"
}
headers = {
"X-EntityToken": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-EntityToken': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
Review: {
ItemVersion: '2.4.1',
Title: 'Best Game Ever',
ReviewText: 'I play this game every day. It\'s my favorite game yet.',
Rating: 5,
IsInstalled: true
},
Id: 'dddddddd-dddd-dddd-dddd-dddddddddddd'
})
};
fetch('https://{titleId}.playfabapi.com/Catalog/ReviewItem', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{titleId}.playfabapi.com/Catalog/ReviewItem",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'Review' => [
'ItemVersion' => '2.4.1',
'Title' => 'Best Game Ever',
'ReviewText' => 'I play this game every day. It\'s my favorite game yet.',
'Rating' => 5,
'IsInstalled' => true
],
'Id' => 'dddddddd-dddd-dddd-dddd-dddddddddddd'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-EntityToken: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{titleId}.playfabapi.com/Catalog/ReviewItem"
payload := strings.NewReader("{\n \"Review\": {\n \"ItemVersion\": \"2.4.1\",\n \"Title\": \"Best Game Ever\",\n \"ReviewText\": \"I play this game every day. It's my favorite game yet.\",\n \"Rating\": 5,\n \"IsInstalled\": true\n },\n \"Id\": \"dddddddd-dddd-dddd-dddd-dddddddddddd\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-EntityToken", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{titleId}.playfabapi.com/Catalog/ReviewItem")
.header("X-EntityToken", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"Review\": {\n \"ItemVersion\": \"2.4.1\",\n \"Title\": \"Best Game Ever\",\n \"ReviewText\": \"I play this game every day. It's my favorite game yet.\",\n \"Rating\": 5,\n \"IsInstalled\": true\n },\n \"Id\": \"dddddddd-dddd-dddd-dddd-dddddddddddd\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Catalog/ReviewItem")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-EntityToken"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"Review\": {\n \"ItemVersion\": \"2.4.1\",\n \"Title\": \"Best Game Ever\",\n \"ReviewText\": \"I play this game every day. It's my favorite game yet.\",\n \"Rating\": 5,\n \"IsInstalled\": true\n },\n \"Id\": \"dddddddd-dddd-dddd-dddd-dddddddddddd\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"status": "OK",
"data": {}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}