获取目录项
NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for version 2. Retrieves the specified version of the title’s catalog of virtual goods, including all defined properties
Error codes
This operation may return the following PlayFab errors:
| Error | Code |
|---|---|
| ProductDisabledForTitle | 1609 |
POST
/
Server
/
GetCatalogItems
Get Catalog Items
curl --request POST \
--url https://{titleId}.playfabapi.com/Server/GetCatalogItems \
--header 'Content-Type: application/json' \
--header 'X-SecretKey: <api-key>' \
--data '
{
"CatalogVersion": "1"
}
'import requests
url = "https://{titleId}.playfabapi.com/Server/GetCatalogItems"
payload = { "CatalogVersion": "1" }
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({CatalogVersion: '1'})
};
fetch('https://{titleId}.playfabapi.com/Server/GetCatalogItems', 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/GetCatalogItems",
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([
'CatalogVersion' => '1'
]),
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/GetCatalogItems"
payload := strings.NewReader("{\n \"CatalogVersion\": \"1\"\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/GetCatalogItems")
.header("X-SecretKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"CatalogVersion\": \"1\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Server/GetCatalogItems")
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 \"CatalogVersion\": \"1\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"status": "OK",
"data": {
"Catalog": [
{
"ItemId": "shield_level_5",
"ItemClass": "shields",
"CatalogVersion": "5",
"DisplayName": "Level 5 Shield",
"Description": "Strong defense against projectile attacks",
"VirtualCurrencyPrices": {
"RM": 199,
"GV": 25
},
"RealCurrencyPrices": {
"GBP": 149,
"EUR": 169
}
},
{
"ItemId": "energy_boost_1",
"ItemClass": "boosts",
"CatalogVersion": "5",
"DisplayName": "Energy Drink Six-Pack",
"Description": "Get a quick burst of energy whenever you need it",
"VirtualCurrencyPrices": {
"RM": 199,
"GV": 25
}
},
{
"ItemId": "required_item_for_grant_a_1",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Grant Set Item 1",
"Description": "Item 1 from the set of items needed to get Granted Item A for free",
"VirtualCurrencyPrices": {
"RM": 249,
"GV": 1500
}
},
{
"ItemId": "required_item_for_grant_a_2",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Grant Set Item 2",
"Description": "Item 2 from the set of items needed to get Granted Item A for free",
"VirtualCurrencyPrices": {
"RM": 249,
"GV": 1500
}
},
{
"ItemId": "required_item_for_grant_a_3",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Grant Set Item 3",
"Description": "Item 3 from the set of items needed to get Granted Item A for free",
"VirtualCurrencyPrices": {
"RM": 249,
"GV": 1500
}
},
{
"ItemId": "required_item_for_grant_a_4",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Grant Set Item 4",
"Description": "Item 4 from the set of items needed to get Granted Item A for free",
"VirtualCurrencyPrices": {
"RM": 249,
"GV": 1500
}
},
{
"ItemId": "granted_item_a",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Granted Item A",
"Description": "Bonus item granted for free once the full set of 4 Grant Set items are collected"
},
{
"ItemId": "consumable_item_1",
"ItemClass": "Consumables",
"CatalogVersion": "5",
"DisplayName": "Consumable Item 1",
"Description": "Item demonstrating usage-based consumables",
"VirtualCurrencyPrices": {
"GV": 500
},
"Consumable": {
"UsageCount": 3
}
},
{
"ItemId": "consumable_item_2",
"ItemClass": "Consumables",
"CatalogVersion": "5",
"DisplayName": "Consumable Item 2",
"Description": "Item demonstrating time-based consumables",
"VirtualCurrencyPrices": {
"GV": 750
},
"Consumable": {
"UsagePeriod": 3600,
"UsagePeriodGroup": "usage_group_1"
}
},
{
"ItemId": "sub_bundle_item_1",
"ItemClass": "Bundles",
"CatalogVersion": "5",
"DisplayName": "Bundled Item 1",
"Description": "Item which is added to the user inventory as part of a bundle"
},
{
"ItemId": "sub_bundle_item_2",
"ItemClass": "Bundles",
"CatalogVersion": "5",
"DisplayName": "Bundled Item 2",
"Description": "Item which is added to the user inventory as part of a bundle"
},
{
"ItemId": "item_bundle_1",
"ItemClass": "Bundles",
"CatalogVersion": "5",
"DisplayName": "Item bundle 1",
"Description": "Item which, when added to the user inventory, also adds other bundled items",
"VirtualCurrencyPrices": {
"RM": 599
},
"Bundle": {
"BundledItems": [
"sub_bundle_item_1",
"sub_bundle_item_2"
],
"BundledResultTables": [
"random_result_1"
],
"BundledVirtualCurrencies": {
"GV": 1000
}
}
},
{
"ItemId": "key_item_1",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Key Item 1",
"Description": "Key used to unlock Container 1",
"VirtualCurrencyPrices": {
"RM": 199
}
},
{
"ItemId": "sub_container_item_1",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Container Item 1",
"Description": "Item which is added to the user inventory as part of opening a container"
},
{
"ItemId": "sub_container_item_2",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Container Item 2",
"Description": "Item which is added to the user inventory as part of opening a container"
},
{
"ItemId": "item_container_1",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Item Container 1",
"Description": "Item which, when opened with Key Item 1, also adds the items it holds to the user inventory",
"VirtualCurrencyPrices": {
"RM": 499
},
"Consumable": {
"UsageCount": 1
},
"Container": {
"KeyItemId": "key_item_1",
"ItemContents": [
"sub_container_item_1",
"sub_container_item_2"
],
"ResultTableContents": [
"random_result_1"
],
"VirtualCurrencyContents": {
"GV": 1000
}
}
},
{
"ItemId": "item_container_2",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Item Container 2",
"Description": "Item which, when opened (no key needed), adds the items it holds to the user inventory",
"VirtualCurrencyPrices": {
"RM": 99
},
"Consumable": {
"UsageCount": 1
},
"Container": {
"VirtualCurrencyContents": {
"GV": 1000
}
}
},
{
"ItemId": "starterpack_1",
"ItemClass": "starterpacks",
"CatalogVersion": "5",
"DisplayName": "Super Starter Pack",
"Description": "Everything you need to get started fast track at the right price"
}
]
}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}授权
This API requires a title secret key, available to title admins, from PlayFab Game Manager.
请求体
application/json
Which catalog is being requested. If null, uses the default catalog.
响应
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
示例:
{
"Catalog": [
{
"ItemId": "shield_level_5",
"ItemClass": "shields",
"CatalogVersion": "5",
"DisplayName": "Level 5 Shield",
"Description": "Strong defense against projectile attacks",
"VirtualCurrencyPrices": { "RM": 199, "GV": 25 },
"RealCurrencyPrices": { "GBP": 149, "EUR": 169 }
},
{
"ItemId": "energy_boost_1",
"ItemClass": "boosts",
"CatalogVersion": "5",
"DisplayName": "Energy Drink Six-Pack",
"Description": "Get a quick burst of energy whenever you need it",
"VirtualCurrencyPrices": { "RM": 199, "GV": 25 }
},
{
"ItemId": "required_item_for_grant_a_1",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Grant Set Item 1",
"Description": "Item 1 from the set of items needed to get Granted Item A for free",
"VirtualCurrencyPrices": { "RM": 249, "GV": 1500 }
},
{
"ItemId": "required_item_for_grant_a_2",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Grant Set Item 2",
"Description": "Item 2 from the set of items needed to get Granted Item A for free",
"VirtualCurrencyPrices": { "RM": 249, "GV": 1500 }
},
{
"ItemId": "required_item_for_grant_a_3",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Grant Set Item 3",
"Description": "Item 3 from the set of items needed to get Granted Item A for free",
"VirtualCurrencyPrices": { "RM": 249, "GV": 1500 }
},
{
"ItemId": "required_item_for_grant_a_4",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Grant Set Item 4",
"Description": "Item 4 from the set of items needed to get Granted Item A for free",
"VirtualCurrencyPrices": { "RM": 249, "GV": 1500 }
},
{
"ItemId": "granted_item_a",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Granted Item A",
"Description": "Bonus item granted for free once the full set of 4 Grant Set items are collected"
},
{
"ItemId": "consumable_item_1",
"ItemClass": "Consumables",
"CatalogVersion": "5",
"DisplayName": "Consumable Item 1",
"Description": "Item demonstrating usage-based consumables",
"VirtualCurrencyPrices": { "GV": 500 },
"Consumable": { "UsageCount": 3 }
},
{
"ItemId": "consumable_item_2",
"ItemClass": "Consumables",
"CatalogVersion": "5",
"DisplayName": "Consumable Item 2",
"Description": "Item demonstrating time-based consumables",
"VirtualCurrencyPrices": { "GV": 750 },
"Consumable": {
"UsagePeriod": 3600,
"UsagePeriodGroup": "usage_group_1"
}
},
{
"ItemId": "sub_bundle_item_1",
"ItemClass": "Bundles",
"CatalogVersion": "5",
"DisplayName": "Bundled Item 1",
"Description": "Item which is added to the user inventory as part of a bundle"
},
{
"ItemId": "sub_bundle_item_2",
"ItemClass": "Bundles",
"CatalogVersion": "5",
"DisplayName": "Bundled Item 2",
"Description": "Item which is added to the user inventory as part of a bundle"
},
{
"ItemId": "item_bundle_1",
"ItemClass": "Bundles",
"CatalogVersion": "5",
"DisplayName": "Item bundle 1",
"Description": "Item which, when added to the user inventory, also adds other bundled items",
"VirtualCurrencyPrices": { "RM": 599 },
"Bundle": {
"BundledItems": ["sub_bundle_item_1", "sub_bundle_item_2"],
"BundledResultTables": ["random_result_1"],
"BundledVirtualCurrencies": { "GV": 1000 }
}
},
{
"ItemId": "key_item_1",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Key Item 1",
"Description": "Key used to unlock Container 1",
"VirtualCurrencyPrices": { "RM": 199 }
},
{
"ItemId": "sub_container_item_1",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Container Item 1",
"Description": "Item which is added to the user inventory as part of opening a container"
},
{
"ItemId": "sub_container_item_2",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Container Item 2",
"Description": "Item which is added to the user inventory as part of opening a container"
},
{
"ItemId": "item_container_1",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Item Container 1",
"Description": "Item which, when opened with Key Item 1, also adds the items it holds to the user inventory",
"VirtualCurrencyPrices": { "RM": 499 },
"Consumable": { "UsageCount": 1 },
"Container": {
"KeyItemId": "key_item_1",
"ItemContents": [
"sub_container_item_1",
"sub_container_item_2"
],
"ResultTableContents": ["random_result_1"],
"VirtualCurrencyContents": { "GV": 1000 }
}
},
{
"ItemId": "item_container_2",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Item Container 2",
"Description": "Item which, when opened (no key needed), adds the items it holds to the user inventory",
"VirtualCurrencyPrices": { "RM": 99 },
"Consumable": { "UsageCount": 1 },
"Container": { "VirtualCurrencyContents": { "GV": 1000 } }
},
{
"ItemId": "starterpack_1",
"ItemClass": "starterpacks",
"CatalogVersion": "5",
"DisplayName": "Super Starter Pack",
"Description": "Everything you need to get started fast track at the right price"
}
]
}
最后修改于 2026年10月6日
相关主题
获取目录项获取目录配置PFCatalogCatalogItemReferencePFCatalogGetCatalogConfigAsyncPFCatalogGetDraftItemResponse此页面对您有帮助吗?
⌘I
Get Catalog Items
curl --request POST \
--url https://{titleId}.playfabapi.com/Server/GetCatalogItems \
--header 'Content-Type: application/json' \
--header 'X-SecretKey: <api-key>' \
--data '
{
"CatalogVersion": "1"
}
'import requests
url = "https://{titleId}.playfabapi.com/Server/GetCatalogItems"
payload = { "CatalogVersion": "1" }
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({CatalogVersion: '1'})
};
fetch('https://{titleId}.playfabapi.com/Server/GetCatalogItems', 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/GetCatalogItems",
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([
'CatalogVersion' => '1'
]),
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/GetCatalogItems"
payload := strings.NewReader("{\n \"CatalogVersion\": \"1\"\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/GetCatalogItems")
.header("X-SecretKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"CatalogVersion\": \"1\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Server/GetCatalogItems")
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 \"CatalogVersion\": \"1\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"status": "OK",
"data": {
"Catalog": [
{
"ItemId": "shield_level_5",
"ItemClass": "shields",
"CatalogVersion": "5",
"DisplayName": "Level 5 Shield",
"Description": "Strong defense against projectile attacks",
"VirtualCurrencyPrices": {
"RM": 199,
"GV": 25
},
"RealCurrencyPrices": {
"GBP": 149,
"EUR": 169
}
},
{
"ItemId": "energy_boost_1",
"ItemClass": "boosts",
"CatalogVersion": "5",
"DisplayName": "Energy Drink Six-Pack",
"Description": "Get a quick burst of energy whenever you need it",
"VirtualCurrencyPrices": {
"RM": 199,
"GV": 25
}
},
{
"ItemId": "required_item_for_grant_a_1",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Grant Set Item 1",
"Description": "Item 1 from the set of items needed to get Granted Item A for free",
"VirtualCurrencyPrices": {
"RM": 249,
"GV": 1500
}
},
{
"ItemId": "required_item_for_grant_a_2",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Grant Set Item 2",
"Description": "Item 2 from the set of items needed to get Granted Item A for free",
"VirtualCurrencyPrices": {
"RM": 249,
"GV": 1500
}
},
{
"ItemId": "required_item_for_grant_a_3",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Grant Set Item 3",
"Description": "Item 3 from the set of items needed to get Granted Item A for free",
"VirtualCurrencyPrices": {
"RM": 249,
"GV": 1500
}
},
{
"ItemId": "required_item_for_grant_a_4",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Grant Set Item 4",
"Description": "Item 4 from the set of items needed to get Granted Item A for free",
"VirtualCurrencyPrices": {
"RM": 249,
"GV": 1500
}
},
{
"ItemId": "granted_item_a",
"ItemClass": "sets",
"CatalogVersion": "5",
"DisplayName": "Granted Item A",
"Description": "Bonus item granted for free once the full set of 4 Grant Set items are collected"
},
{
"ItemId": "consumable_item_1",
"ItemClass": "Consumables",
"CatalogVersion": "5",
"DisplayName": "Consumable Item 1",
"Description": "Item demonstrating usage-based consumables",
"VirtualCurrencyPrices": {
"GV": 500
},
"Consumable": {
"UsageCount": 3
}
},
{
"ItemId": "consumable_item_2",
"ItemClass": "Consumables",
"CatalogVersion": "5",
"DisplayName": "Consumable Item 2",
"Description": "Item demonstrating time-based consumables",
"VirtualCurrencyPrices": {
"GV": 750
},
"Consumable": {
"UsagePeriod": 3600,
"UsagePeriodGroup": "usage_group_1"
}
},
{
"ItemId": "sub_bundle_item_1",
"ItemClass": "Bundles",
"CatalogVersion": "5",
"DisplayName": "Bundled Item 1",
"Description": "Item which is added to the user inventory as part of a bundle"
},
{
"ItemId": "sub_bundle_item_2",
"ItemClass": "Bundles",
"CatalogVersion": "5",
"DisplayName": "Bundled Item 2",
"Description": "Item which is added to the user inventory as part of a bundle"
},
{
"ItemId": "item_bundle_1",
"ItemClass": "Bundles",
"CatalogVersion": "5",
"DisplayName": "Item bundle 1",
"Description": "Item which, when added to the user inventory, also adds other bundled items",
"VirtualCurrencyPrices": {
"RM": 599
},
"Bundle": {
"BundledItems": [
"sub_bundle_item_1",
"sub_bundle_item_2"
],
"BundledResultTables": [
"random_result_1"
],
"BundledVirtualCurrencies": {
"GV": 1000
}
}
},
{
"ItemId": "key_item_1",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Key Item 1",
"Description": "Key used to unlock Container 1",
"VirtualCurrencyPrices": {
"RM": 199
}
},
{
"ItemId": "sub_container_item_1",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Container Item 1",
"Description": "Item which is added to the user inventory as part of opening a container"
},
{
"ItemId": "sub_container_item_2",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Container Item 2",
"Description": "Item which is added to the user inventory as part of opening a container"
},
{
"ItemId": "item_container_1",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Item Container 1",
"Description": "Item which, when opened with Key Item 1, also adds the items it holds to the user inventory",
"VirtualCurrencyPrices": {
"RM": 499
},
"Consumable": {
"UsageCount": 1
},
"Container": {
"KeyItemId": "key_item_1",
"ItemContents": [
"sub_container_item_1",
"sub_container_item_2"
],
"ResultTableContents": [
"random_result_1"
],
"VirtualCurrencyContents": {
"GV": 1000
}
}
},
{
"ItemId": "item_container_2",
"ItemClass": "Containers",
"CatalogVersion": "5",
"DisplayName": "Item Container 2",
"Description": "Item which, when opened (no key needed), adds the items it holds to the user inventory",
"VirtualCurrencyPrices": {
"RM": 99
},
"Consumable": {
"UsageCount": 1
},
"Container": {
"VirtualCurrencyContents": {
"GV": 1000
}
}
},
{
"ItemId": "starterpack_1",
"ItemClass": "starterpacks",
"CatalogVersion": "5",
"DisplayName": "Super Starter Pack",
"Description": "Everything you need to get started fast track at the right price"
}
]
}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}