Accept Trade
Accepts an open trade (one that has not yet been accepted or cancelled), if the locally signed-in player is in the allowed player list for the trade, or it is open to all players. If the call is successful, the offered and accepted items will be swapped between the two players’ inventories.
Error codes
This operation may return the following PlayFab errors:
| Error | Code |
|---|---|
| ProductDisabledForTitle | 1609 |
| TradeAcceptedCatalogItemInvalid | 1170 |
| TradeAcceptedItemsMismatch | 1175 |
| TradeAcceptingUserNotAllowed | 1156 |
| TradeAllowedUsersInvalid | 1171 |
| TradeAlreadyFilled | 1163 |
| TradeCancelled | 1162 |
| TradeDoesNotExist | 1161 |
| TradeInventoryItemDoesNotExist | 1172 |
| TradeInventoryItemExpired | 1165 |
| TradeInventoryItemInvalidStatus | 1169 |
| TradeInventoryItemIsAssignedToCharacter | 1157 |
| TradeInventoryItemIsBundle | 1158 |
| TradeInventoryItemIsConsumed | 1173 |
| TradeInventoryItemIsNotTradable | 1181 |
| TradeInventoryItemIsStackable | 1174 |
| TradeStatusNotValidForAccepting | 1160 |
| TradeWaitForStatusTimeout | 1164 |
POST
/
Client
/
AcceptTrade
Accept Trade
curl --request POST \
--url https://{titleId}.playfabapi.com/Client/AcceptTrade \
--header 'Content-Type: application/json' \
--header 'X-Authorization: <api-key>' \
--data '
{
"OfferingPlayerId": "CD803BF233CE76CC",
"TradeId": "D819CEC225EA9948C351",
"AcceptedInventoryInstanceIds": [
"95C1797ADDAC24DC0383",
"0F7793DF55CCEAF21B84"
]
}
'import requests
url = "https://{titleId}.playfabapi.com/Client/AcceptTrade"
payload = {
"OfferingPlayerId": "CD803BF233CE76CC",
"TradeId": "D819CEC225EA9948C351",
"AcceptedInventoryInstanceIds": ["95C1797ADDAC24DC0383", "0F7793DF55CCEAF21B84"]
}
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({
OfferingPlayerId: 'CD803BF233CE76CC',
TradeId: 'D819CEC225EA9948C351',
AcceptedInventoryInstanceIds: ['95C1797ADDAC24DC0383', '0F7793DF55CCEAF21B84']
})
};
fetch('https://{titleId}.playfabapi.com/Client/AcceptTrade', 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/AcceptTrade",
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([
'OfferingPlayerId' => 'CD803BF233CE76CC',
'TradeId' => 'D819CEC225EA9948C351',
'AcceptedInventoryInstanceIds' => [
'95C1797ADDAC24DC0383',
'0F7793DF55CCEAF21B84'
]
]),
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/AcceptTrade"
payload := strings.NewReader("{\n \"OfferingPlayerId\": \"CD803BF233CE76CC\",\n \"TradeId\": \"D819CEC225EA9948C351\",\n \"AcceptedInventoryInstanceIds\": [\n \"95C1797ADDAC24DC0383\",\n \"0F7793DF55CCEAF21B84\"\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/AcceptTrade")
.header("X-Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"OfferingPlayerId\": \"CD803BF233CE76CC\",\n \"TradeId\": \"D819CEC225EA9948C351\",\n \"AcceptedInventoryInstanceIds\": [\n \"95C1797ADDAC24DC0383\",\n \"0F7793DF55CCEAF21B84\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Client/AcceptTrade")
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 \"OfferingPlayerId\": \"CD803BF233CE76CC\",\n \"TradeId\": \"D819CEC225EA9948C351\",\n \"AcceptedInventoryInstanceIds\": [\n \"95C1797ADDAC24DC0383\",\n \"0F7793DF55CCEAF21B84\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"status": "OK",
"data": {
"Trade": {
"Status": "Filled",
"TradeId": "D819CEC225EA9948C351",
"OfferingPlayerId": "CD803BF233CE76CC",
"OfferedInventoryInstanceIds": [
"1359447",
"635691"
],
"OfferedCatalogItemIds": [
"gun_1",
"skin_3"
],
"RequestedCatalogItemIds": [
"rare_hat_7"
],
"AcceptedPlayerId": "461535E1EF4150A86889",
"AcceptedInventoryInstanceIds": [
"95C1797ADDAC24DC0383",
"0F7793DF55CCEAF21B84"
],
"OpenedAt": "2015-04-07T09:04:28+00:00",
"FilledAt": "2015-04-07T09:20:53+00:00"
}
}
}{
"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
Response
The Http status code. If X-ReportErrorAsSuccess header is set to true, this will report the actual http error code.
The Http status code as a string.
Show child attributes
Show child attributes
Example:
{ "Trade": { "Status": "Filled", "TradeId": "D819CEC225EA9948C351", "OfferingPlayerId": "CD803BF233CE76CC", "OfferedInventoryInstanceIds": ["1359447", "635691"], "OfferedCatalogItemIds": ["gun_1", "skin_3"], "RequestedCatalogItemIds": ["rare_hat_7"], "AcceptedPlayerId": "461535E1EF4150A86889", "AcceptedInventoryInstanceIds": [ "95C1797ADDAC24DC0383", "0F7793DF55CCEAF21B84" ], "OpenedAt": "2015-04-07T09:04:28+00:00", "FilledAt": "2015-04-07T09:20:53+00:00" } }
Last modified on October 1, 2026
Was this page helpful?
⌘I
Accept Trade
curl --request POST \
--url https://{titleId}.playfabapi.com/Client/AcceptTrade \
--header 'Content-Type: application/json' \
--header 'X-Authorization: <api-key>' \
--data '
{
"OfferingPlayerId": "CD803BF233CE76CC",
"TradeId": "D819CEC225EA9948C351",
"AcceptedInventoryInstanceIds": [
"95C1797ADDAC24DC0383",
"0F7793DF55CCEAF21B84"
]
}
'import requests
url = "https://{titleId}.playfabapi.com/Client/AcceptTrade"
payload = {
"OfferingPlayerId": "CD803BF233CE76CC",
"TradeId": "D819CEC225EA9948C351",
"AcceptedInventoryInstanceIds": ["95C1797ADDAC24DC0383", "0F7793DF55CCEAF21B84"]
}
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({
OfferingPlayerId: 'CD803BF233CE76CC',
TradeId: 'D819CEC225EA9948C351',
AcceptedInventoryInstanceIds: ['95C1797ADDAC24DC0383', '0F7793DF55CCEAF21B84']
})
};
fetch('https://{titleId}.playfabapi.com/Client/AcceptTrade', 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/AcceptTrade",
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([
'OfferingPlayerId' => 'CD803BF233CE76CC',
'TradeId' => 'D819CEC225EA9948C351',
'AcceptedInventoryInstanceIds' => [
'95C1797ADDAC24DC0383',
'0F7793DF55CCEAF21B84'
]
]),
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/AcceptTrade"
payload := strings.NewReader("{\n \"OfferingPlayerId\": \"CD803BF233CE76CC\",\n \"TradeId\": \"D819CEC225EA9948C351\",\n \"AcceptedInventoryInstanceIds\": [\n \"95C1797ADDAC24DC0383\",\n \"0F7793DF55CCEAF21B84\"\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/AcceptTrade")
.header("X-Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"OfferingPlayerId\": \"CD803BF233CE76CC\",\n \"TradeId\": \"D819CEC225EA9948C351\",\n \"AcceptedInventoryInstanceIds\": [\n \"95C1797ADDAC24DC0383\",\n \"0F7793DF55CCEAF21B84\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Client/AcceptTrade")
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 \"OfferingPlayerId\": \"CD803BF233CE76CC\",\n \"TradeId\": \"D819CEC225EA9948C351\",\n \"AcceptedInventoryInstanceIds\": [\n \"95C1797ADDAC24DC0383\",\n \"0F7793DF55CCEAF21B84\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"status": "OK",
"data": {
"Trade": {
"Status": "Filled",
"TradeId": "D819CEC225EA9948C351",
"OfferingPlayerId": "CD803BF233CE76CC",
"OfferedInventoryInstanceIds": [
"1359447",
"635691"
],
"OfferedCatalogItemIds": [
"gun_1",
"skin_3"
],
"RequestedCatalogItemIds": [
"rare_hat_7"
],
"AcceptedPlayerId": "461535E1EF4150A86889",
"AcceptedInventoryInstanceIds": [
"95C1797ADDAC24DC0383",
"0F7793DF55CCEAF21B84"
],
"OpenedAt": "2015-04-07T09:04:28+00:00",
"FilledAt": "2015-04-07T09:20:53+00:00"
}
}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}