Update Player Statistics
Updates the values of the specified title-specific statistics for the user
Error codes
This operation may return the following PlayFab errors:
| Error | Code |
|---|---|
| DuplicateStatisticName | 1253 |
| ProductDisabledForTitle | 1609 |
| StatisticCountLimitExceeded | 1203 |
| StatisticNameConflict | 1196 |
| StatisticNotFound | 1195 |
| StatisticValueAggregationOverflow | 1308 |
| StatisticVersionClosedForWrites | 1197 |
| StatisticVersionInvalid | 1198 |
curl --request POST \
--url https://{titleId}.playfabapi.com/Server/UpdatePlayerStatistics \
--header 'Content-Type: application/json' \
--header 'X-SecretKey: <api-key>' \
--data '
{
"PlayFabId": "10931252888739651331",
"Statistics": [
{
"StatisticName": "Points",
"Version": 1,
"Value": 600
},
{
"StatisticName": "Wins",
"Version": 2,
"Value": 16
},
{
"StatisticName": "Stars",
"Value": 7
}
]
}
'import requests
url = "https://{titleId}.playfabapi.com/Server/UpdatePlayerStatistics"
payload = {
"PlayFabId": "10931252888739651331",
"Statistics": [
{
"StatisticName": "Points",
"Version": 1,
"Value": 600
},
{
"StatisticName": "Wins",
"Version": 2,
"Value": 16
},
{
"StatisticName": "Stars",
"Value": 7
}
]
}
headers = {
"X-SecretKey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-SecretKey': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
PlayFabId: '10931252888739651331',
Statistics: [
{StatisticName: 'Points', Version: 1, Value: 600},
{StatisticName: 'Wins', Version: 2, Value: 16},
{StatisticName: 'Stars', Value: 7}
]
})
};
fetch('https://{titleId}.playfabapi.com/Server/UpdatePlayerStatistics', 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/Server/UpdatePlayerStatistics",
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([
'PlayFabId' => '10931252888739651331',
'Statistics' => [
[
'StatisticName' => 'Points',
'Version' => 1,
'Value' => 600
],
[
'StatisticName' => 'Wins',
'Version' => 2,
'Value' => 16
],
[
'StatisticName' => 'Stars',
'Value' => 7
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-SecretKey: <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/Server/UpdatePlayerStatistics"
payload := strings.NewReader("{\n \"PlayFabId\": \"10931252888739651331\",\n \"Statistics\": [\n {\n \"StatisticName\": \"Points\",\n \"Version\": 1,\n \"Value\": 600\n },\n {\n \"StatisticName\": \"Wins\",\n \"Version\": 2,\n \"Value\": 16\n },\n {\n \"StatisticName\": \"Stars\",\n \"Value\": 7\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-SecretKey", "<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/Server/UpdatePlayerStatistics")
.header("X-SecretKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"PlayFabId\": \"10931252888739651331\",\n \"Statistics\": [\n {\n \"StatisticName\": \"Points\",\n \"Version\": 1,\n \"Value\": 600\n },\n {\n \"StatisticName\": \"Wins\",\n \"Version\": 2,\n \"Value\": 16\n },\n {\n \"StatisticName\": \"Stars\",\n \"Value\": 7\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Server/UpdatePlayerStatistics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-SecretKey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"PlayFabId\": \"10931252888739651331\",\n \"Statistics\": [\n {\n \"StatisticName\": \"Points\",\n \"Version\": 1,\n \"Value\": 600\n },\n {\n \"StatisticName\": \"Wins\",\n \"Version\": 2,\n \"Value\": 16\n },\n {\n \"StatisticName\": \"Stars\",\n \"Value\": 7\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"code": 123,
"status": "<string>",
"data": {}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}Authorizations
This API requires a title secret key, available to title admins, from PlayFab Game Manager.
Body
This operation is additive. Statistics not currently defined will be added, while those already defined will be updated with the given values. All other user statistics will remain unchanged.
This operation is additive. Statistics not currently defined will be added, while those already defined will be updated with the given values. All other user statistics will remain unchanged.
Unique PlayFab assigned ID of the user on whom the operation will be performed.
Statistics to be updated with the provided values
Show child attributes
Show child attributes
The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
Indicates whether the statistics provided should be set, regardless of the aggregation method set on the statistic. Default is false.
Was this page helpful?
curl --request POST \
--url https://{titleId}.playfabapi.com/Server/UpdatePlayerStatistics \
--header 'Content-Type: application/json' \
--header 'X-SecretKey: <api-key>' \
--data '
{
"PlayFabId": "10931252888739651331",
"Statistics": [
{
"StatisticName": "Points",
"Version": 1,
"Value": 600
},
{
"StatisticName": "Wins",
"Version": 2,
"Value": 16
},
{
"StatisticName": "Stars",
"Value": 7
}
]
}
'import requests
url = "https://{titleId}.playfabapi.com/Server/UpdatePlayerStatistics"
payload = {
"PlayFabId": "10931252888739651331",
"Statistics": [
{
"StatisticName": "Points",
"Version": 1,
"Value": 600
},
{
"StatisticName": "Wins",
"Version": 2,
"Value": 16
},
{
"StatisticName": "Stars",
"Value": 7
}
]
}
headers = {
"X-SecretKey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-SecretKey': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
PlayFabId: '10931252888739651331',
Statistics: [
{StatisticName: 'Points', Version: 1, Value: 600},
{StatisticName: 'Wins', Version: 2, Value: 16},
{StatisticName: 'Stars', Value: 7}
]
})
};
fetch('https://{titleId}.playfabapi.com/Server/UpdatePlayerStatistics', 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/Server/UpdatePlayerStatistics",
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([
'PlayFabId' => '10931252888739651331',
'Statistics' => [
[
'StatisticName' => 'Points',
'Version' => 1,
'Value' => 600
],
[
'StatisticName' => 'Wins',
'Version' => 2,
'Value' => 16
],
[
'StatisticName' => 'Stars',
'Value' => 7
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-SecretKey: <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/Server/UpdatePlayerStatistics"
payload := strings.NewReader("{\n \"PlayFabId\": \"10931252888739651331\",\n \"Statistics\": [\n {\n \"StatisticName\": \"Points\",\n \"Version\": 1,\n \"Value\": 600\n },\n {\n \"StatisticName\": \"Wins\",\n \"Version\": 2,\n \"Value\": 16\n },\n {\n \"StatisticName\": \"Stars\",\n \"Value\": 7\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-SecretKey", "<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/Server/UpdatePlayerStatistics")
.header("X-SecretKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"PlayFabId\": \"10931252888739651331\",\n \"Statistics\": [\n {\n \"StatisticName\": \"Points\",\n \"Version\": 1,\n \"Value\": 600\n },\n {\n \"StatisticName\": \"Wins\",\n \"Version\": 2,\n \"Value\": 16\n },\n {\n \"StatisticName\": \"Stars\",\n \"Value\": 7\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Server/UpdatePlayerStatistics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-SecretKey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"PlayFabId\": \"10931252888739651331\",\n \"Statistics\": [\n {\n \"StatisticName\": \"Points\",\n \"Version\": 1,\n \"Value\": 600\n },\n {\n \"StatisticName\": \"Wins\",\n \"Version\": 2,\n \"Value\": 16\n },\n {\n \"StatisticName\": \"Stars\",\n \"Value\": 7\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"code": 123,
"status": "<string>",
"data": {}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}