Get all items in the platform catalog
This endpoint allows you to retrieve the full list of reward items available on your platform. You can filter results by reward type, brand, currency, country, fulfillment type, and other attributes to find specific items and their UTIDs for ordering.
Endpoint
Use this endpoint to get the full platform catalog including brands, items, attributes, categories, and credential types. See Get credential types . This endpoint also supports a wide range of query parameters for filtering.
| Endpoint | Description |
|---|---|
GET {URI}/catalogs | Get all items in the platform's catalog. |
Parameters
The following query parameters are available with this endpoint to refine your search results:
Query params | Data type | Description |
|---|---|---|
verbose | boolean | Default is True. When true, will return the additional brand fields: status, disclaimer, description, short description, terms, brand requirements collection, and image urls collection. |
brandKey | string | Returns the brand and item details for a specific brand ID. |
brandName | string | Returns the brand and item details for a specific brand name. |
utid | string | Returns the brand and item details for a specific UTID. UTID is the unique identifier for a specific reward. |
rewardName | string | Returns the brand and item details of the specified reward name. |
status | string | Returns all brands and item details with the specified status. Possible statuses are: "test", "active", "inactive", "deleted". |
rewardType | string | Returns all brands and item details with the specified reward type:
|
currencyCode | string | Return all brands and item details associated with a specific currency. We accept AUD, CAD, EUR, GBP, and USD for Global Choice Link s. Only one currency can be specified. Currency can never be changed. The currency defaults to USD if no currency is specified. |
country | string | Returns all brands and item details from a specific country. Country codes are two-digits. |
itemAttribute | string | Is used to filter catalog items based on specific attributes, instead of browsing the entire catalog. It returns all brands and item details that match the selected attribute. Each matching item includes a UTID for ordering. You can query items by a specific attribute. The system returns all UTIDs that match that attribute. Available attributes are: EMAIL, PHONE, ADDRESS, EMBEDDED. |
categoryIds | arrays of uuids | Returns all brands and item details for specific brand categories. |
Response body notes
On a successful request (200 OK), the response body includes several important fields. Below are some key notes and considerations to help you understand field behaviors and best practices:
-
Verbose vs. non-verbose mode: verbose=true (default) returns full brand details: status, disclaimer, description, shortDescription, terms, brandRequirements, and imageUrls. verbose=false returns only brand name, brand key, and items — use this for faster responses when you don't need brand metadata.
-
UTID is the key field: utid is the unique identifier you pass when placing an order. Always reference the UTID from the catalog response. Do not hardcode UTIDs, as they can change.
-
Fixed vs. variable value items:
- if valueType=FIXED_VALUE, then use faceValue for the exact amount.
- if valueType=VARIABLE_VALUE, then use minValue and maxValue to determine the allowed range. The faceValue field will be 0.
-
Item attributes determine delivery options: Check the attributes array (EMAIL, PHONE, ADDRESS, EMBEDDED) to know which deliveryMethod values are supported for that item before placing an order.
-
Status filtering: The catalog returns items in all statuses by default. Filter by status=active to only get orderable items. Items with status test, inactive, or deleted cannot be ordered in production.
-
Currency and country: A single brand can have items in multiple currencies and countries. Filter by currencyCode or country to narrow results for your use case.
-
Large response payload: The full catalog can be large. Use query parameters (brandKey, utid, rewardType, currencyCode, country) to filter and reduce payload size.
-
Deprecated field: fulfillmentType (DIGITAL/PHYSICAL) is deprecated. Use attributes (EMAIL, PHONE, ADDRESS, EMBEDDED) instead to determine delivery capabilities.
Retrieve catalog items when verbose is true
When the verbose is true, it returns the additional brand information, such as brand key, brand name, description, terms, brand requirements, status, items, and more. isExpirable indicates whether or not the gift card has an expiry date. The value for isExpirable =boolean is true or false. The following payload example is for when verbose=true:
{
"catalogName": "string",
"brands": [
{
"brandKey": "string",
"brandName": "string",
"disclaimer": "string",
"description": "string",
"shortDescription": "string",
"terms": "string",
"createdDate": "2025-11-04T18:54:41.989Z",
"lastUpdateDate": "2025-11-04T18:54:41.989Z",
"brandRequirements": {
"displayInstructions": "string",
"termsAndConditionsInstructions": "string",
"disclaimerInstructions": "string",
"alwaysShowDisclaimer": true
},
"imageUrls": {
"additionalProp": "string"
},
"status": "string",
"items": [
{
"utid": "string",
"rewardName": "string",
"currencyCode": "string",
"status": "string",
"valueType": "string",
"rewardType": "string",
"isExpirable": true,
"quantityConstraints": {
"minQuantity": 1,
"maxQuantity": 1
},
"isWholeAmountValueRequired": true,
"exchangeRateRule": "string",
"minValue": 0,
"maxValue": 0,
"faceValue": 0,
"fee": {
"type": "string",
"value": 0
},
"createdDate": "2025-11-04T18:54:41.989Z",
"lastUpdateDate": "2025-11-04T18:54:41.989Z",
"countries": [
"string"
],
"credentialTypes": [
"string"
],
"redemptionInstructions": "string",
"attributes": [
"string"
]
}
],
"categories": [
{
"identifier": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"description": "string"
}
]
}
]
}Retrieve catalog items when verbose is false
When verbose=false, it returns only brand name, brand key, and items. Use this for faster responses when you don't need brand metadata. isExpirable indicates whether or not the gift card has an expiry date. The value for isExpirable =boolean is true or false. The following payload example is for when verbose=false:
{
"catalogName": "string",
"brands": [
{
"brandKey": "string",
"brandName": "string",
"disclaimer": "string",
"description": "string",
"shortDescription": "string",
"terms": "string",
"createdDate": "2025-07-31T01:25:58.972Z",
"lastUpdateDate": "2025-07-31T01:25:58.972Z",
"brandRequirements": {
"displayInstructions": "string",
"termsAndConditionsInstructions": "string",
"disclaimerInstructions": "string",
"alwaysShowDisclaimer": true
},
"imageUrls": {
"additionalProp": "string"
},
"status": "string",
"items": [
{
"utid": "string",
"rewardName": "string",
"currencyCode": "string",
"status": "string",
"valueType": "string",
"rewardType": "string",
"isExpirable": true,
"isWholeAmountValueRequired": true,
"exchangeRateRule": "string",
"minValue": 0,
"maxValue": 0,
"faceValue": 0,
"fee": {
"type": "string",
"value": 0
},
"createdDate": "2025-07-31T01:25:58.972Z",
"lastUpdateDate": "2025-07-31T01:25:58.972Z",
"countries": [
"string"
],
"credentialTypes": [
"string"
],
"redemptionInstructions": "string",
"attributes": [
"string"
]
}
],
"categories": [
{
"identifier": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"description": "string"
}
]
}
]
}Examples
Here's an example payload for when you receive an error:
{
"timestamp": "2025-02-21T23:23:13.930Z",
"requestId": "string",
"path": "string",
"httpCode": 0,
"httpPhrase": "string",
"i18nKey": "string",
"message": "The error message will show here for error codes ",
"errors": [
{}
]
}Response Codes
The possible response codes for this endpoint are as follows. For details, see i18nkey codes and their error messages:
| Response code | Meaning |
|---|---|
| 200 | The request was successful.. |
| 400 | The server could not understand the request due to invalid syntax. |
| 401 | Authentication is required and has either not been provided or failed. |
| 403 | The server understood the request but refuses to authorize it. |
| 500 | Something went wrong on the server, but the server cannot be more specific about what the exact problem is. |
| 503 | The server is currently unable to handle the request due to temporary overload or maintenance. |
Updated 9 days ago
