Link IOS Device ID
Links the vendor-specific iOS device identifier to the user’s PlayFab account
Error codes
This operation may return the following PlayFab errors:
| Error | Code |
|---|---|
| AccountLinkedToABannedPlayer | 1613 |
| LinkedDeviceAlreadyClaimed | 1118 |
POST
/
Client
/
LinkIOSDeviceID
Link IOS Device ID
curl --request POST \
--url https://{titleId}.playfabapi.com/Client/LinkIOSDeviceID \
--header 'Content-Type: application/json' \
--header 'X-Authorization: <api-key>' \
--data '
{
"DeviceId": "29848d9bh8900a0b003",
"OS": "7.11",
"DeviceModel": "Iphone 5s"
}
'import requests
url = "https://{titleId}.playfabapi.com/Client/LinkIOSDeviceID"
payload = {
"DeviceId": "29848d9bh8900a0b003",
"OS": "7.11",
"DeviceModel": "Iphone 5s"
}
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({DeviceId: '29848d9bh8900a0b003', OS: '7.11', DeviceModel: 'Iphone 5s'})
};
fetch('https://{titleId}.playfabapi.com/Client/LinkIOSDeviceID', 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/LinkIOSDeviceID",
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([
'DeviceId' => '29848d9bh8900a0b003',
'OS' => '7.11',
'DeviceModel' => 'Iphone 5s'
]),
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/LinkIOSDeviceID"
payload := strings.NewReader("{\n \"DeviceId\": \"29848d9bh8900a0b003\",\n \"OS\": \"7.11\",\n \"DeviceModel\": \"Iphone 5s\"\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/LinkIOSDeviceID")
.header("X-Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"DeviceId\": \"29848d9bh8900a0b003\",\n \"OS\": \"7.11\",\n \"DeviceModel\": \"Iphone 5s\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Client/LinkIOSDeviceID")
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 \"DeviceId\": \"29848d9bh8900a0b003\",\n \"OS\": \"7.11\",\n \"DeviceModel\": \"Iphone 5s\"\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
Vendor-specific iOS identifier for the user's device.
The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
Specific model of the user's device.
If another user is already linked to the device, unlink the other user and re-link.
Specific Operating System version for the user's device.
Last modified on October 1, 2026
Was this page helpful?
⌘I
Link IOS Device ID
curl --request POST \
--url https://{titleId}.playfabapi.com/Client/LinkIOSDeviceID \
--header 'Content-Type: application/json' \
--header 'X-Authorization: <api-key>' \
--data '
{
"DeviceId": "29848d9bh8900a0b003",
"OS": "7.11",
"DeviceModel": "Iphone 5s"
}
'import requests
url = "https://{titleId}.playfabapi.com/Client/LinkIOSDeviceID"
payload = {
"DeviceId": "29848d9bh8900a0b003",
"OS": "7.11",
"DeviceModel": "Iphone 5s"
}
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({DeviceId: '29848d9bh8900a0b003', OS: '7.11', DeviceModel: 'Iphone 5s'})
};
fetch('https://{titleId}.playfabapi.com/Client/LinkIOSDeviceID', 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/LinkIOSDeviceID",
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([
'DeviceId' => '29848d9bh8900a0b003',
'OS' => '7.11',
'DeviceModel' => 'Iphone 5s'
]),
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/LinkIOSDeviceID"
payload := strings.NewReader("{\n \"DeviceId\": \"29848d9bh8900a0b003\",\n \"OS\": \"7.11\",\n \"DeviceModel\": \"Iphone 5s\"\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/LinkIOSDeviceID")
.header("X-Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"DeviceId\": \"29848d9bh8900a0b003\",\n \"OS\": \"7.11\",\n \"DeviceModel\": \"Iphone 5s\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Client/LinkIOSDeviceID")
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 \"DeviceId\": \"29848d9bh8900a0b003\",\n \"OS\": \"7.11\",\n \"DeviceModel\": \"Iphone 5s\"\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": {}
}