Report Device Info
Write a PlayStream event to describe the provided player device information. This API method is not designed to be called directly by developers. Each PlayFab client SDK will eventually report this information automatically.
Error codes
This operation may return the following PlayFab errors:
| Error | Code |
|---|---|
| BodyTooLarge | 1068 |
POST
/
Client
/
ReportDeviceInfo
Report Device Info
curl --request POST \
--url https://{titleId}.playfabapi.com/Client/ReportDeviceInfo \
--header 'Content-Type: application/json' \
--header 'X-Authorization: <api-key>' \
--data '
{
"Info": {
"UserAgent": "Some Browser",
"ScreenResolution": "640x480",
"processorCount": "2"
}
}
'import requests
url = "https://{titleId}.playfabapi.com/Client/ReportDeviceInfo"
payload = { "Info": {
"UserAgent": "Some Browser",
"ScreenResolution": "640x480",
"processorCount": "2"
} }
headers = {
"X-Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Authorization': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
Info: {UserAgent: 'Some Browser', ScreenResolution: '640x480', processorCount: '2'}
})
};
fetch('https://{titleId}.playfabapi.com/Client/ReportDeviceInfo', 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/Client/ReportDeviceInfo",
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([
'Info' => [
'UserAgent' => 'Some Browser',
'ScreenResolution' => '640x480',
'processorCount' => '2'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Authorization: <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/Client/ReportDeviceInfo"
payload := strings.NewReader("{\n \"Info\": {\n \"UserAgent\": \"Some Browser\",\n \"ScreenResolution\": \"640x480\",\n \"processorCount\": \"2\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Authorization", "<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/Client/ReportDeviceInfo")
.header("X-Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"Info\": {\n \"UserAgent\": \"Some Browser\",\n \"ScreenResolution\": \"640x480\",\n \"processorCount\": \"2\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Client/ReportDeviceInfo")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"Info\": {\n \"UserAgent\": \"Some Browser\",\n \"ScreenResolution\": \"640x480\",\n \"processorCount\": \"2\"\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 client session ticket, available from any Client Login function.
Body
application/json
Any arbitrary information collected by the device
Any arbitrary information collected by the device
Information posted to the PlayStream Event. Currently arbitrary, and specific to the environment sending it.
Last modified on October 1, 2026
Was this page helpful?
⌘I
Report Device Info
curl --request POST \
--url https://{titleId}.playfabapi.com/Client/ReportDeviceInfo \
--header 'Content-Type: application/json' \
--header 'X-Authorization: <api-key>' \
--data '
{
"Info": {
"UserAgent": "Some Browser",
"ScreenResolution": "640x480",
"processorCount": "2"
}
}
'import requests
url = "https://{titleId}.playfabapi.com/Client/ReportDeviceInfo"
payload = { "Info": {
"UserAgent": "Some Browser",
"ScreenResolution": "640x480",
"processorCount": "2"
} }
headers = {
"X-Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Authorization': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
Info: {UserAgent: 'Some Browser', ScreenResolution: '640x480', processorCount: '2'}
})
};
fetch('https://{titleId}.playfabapi.com/Client/ReportDeviceInfo', 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/Client/ReportDeviceInfo",
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([
'Info' => [
'UserAgent' => 'Some Browser',
'ScreenResolution' => '640x480',
'processorCount' => '2'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Authorization: <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/Client/ReportDeviceInfo"
payload := strings.NewReader("{\n \"Info\": {\n \"UserAgent\": \"Some Browser\",\n \"ScreenResolution\": \"640x480\",\n \"processorCount\": \"2\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Authorization", "<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/Client/ReportDeviceInfo")
.header("X-Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"Info\": {\n \"UserAgent\": \"Some Browser\",\n \"ScreenResolution\": \"640x480\",\n \"processorCount\": \"2\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Client/ReportDeviceInfo")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"Info\": {\n \"UserAgent\": \"Some Browser\",\n \"ScreenResolution\": \"640x480\",\n \"processorCount\": \"2\"\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": {}
}