Skip to content

Overview

Digital Distribution Hub is a new Xsolla solution that aims to connect digital and cash based payments via push payments technology and e-commerce.

This reference combines API endpoints for two Xsolla products: In-Game Store and Pay Station. There are two base URLs:

  • https://store.xsolla.com/api for the Common, Catalog, Cart, and Order groups.
  • https://ps.xsolla.com for the Notifications group.

API endpoints in the Catalog group don’t require authorization.

To work with operations in the Cart and Order groups, you need to generate a token via Create user token.

Note

This reference shows a design of a future API and not a fully functioning interface. Currently, you can try only Catalog and Notifications groups endpoints. If you’d like to share your feedback, please email us at techdoc@xsolla.com.
Download OpenAPI description
Languages
Servers
https://store.xsolla.com/api/
Mock server
https://xsolla.redocly.app/_mock/api/digital-distribution-hub/
Operations
Operations

Request

Gets a game for the catalog.

Security
AuthForClient
Path
project_idintegerrequired

Project ID.

Example: 44056
item_skustringrequired

Item SKU.

Example: booster_mega_1
Query
localestring

Response language. Two-letter lowercase language code per ISO 639-1.

Default "en"
additional_fields[]Array of strings

The list of additional fields. These fields will be in the response if you send them in your request. Available fields media_list, order, long_description.

countrystring

Country to calculate regional prices and restrictions for catalog. Two-letter uppercase country code per ISO 3166-1 alpha-2. If you do not specify the country explicitly, it will be calculated based on user's IP address.

Default "US"
curl -i -X GET \
  'https://store.xsolla.com/api/v2/project/44056/items/game/sku/booster_mega_1?locale=en&additional_fields%5B%5D=string&country=US' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Game was successfully received.

Bodyapplication/json
skustring

Unique item ID. The SKU may only contain lowercase Latin alphanumeric characters, periods, dashes, and underscores.

Example: "game_1"
namestring

Item name.

Example: "Game name"
groupsArray of objects(Catalog_inline_response_200_groups)

Groups the item belongs to.

Example: [{"external_id":"all","name":"All games"},{"external_id":"Xsolla","name":"Xsolla games"}]
groups[].​external_idstring
Example: "accessory"
groups[].​namestring
Example: "Accessory"
attributesArray of objects(Catalog_client-attributes)

List of attributes and their values corresponding to the Game.

Attention. This part of response is available only if you send the `additional_fields[]=attributes` query parameter.
Default []
attributes[].​external_idstring(Catalog_admin-attribute-external_id)[ 1 .. 255 ] characters^[a-zA-Z0-9-_]+$

Unique attribute ID. The external_id may only contain lowercase Latin alphanumeric characters, dashes, and underscores.

Example: "attribute_1"
attributes[].​namestring

Name of attribute.

Example: "Genre"
attributes[].​valuesArray of objects
attributes[].​values[].​external_idstring(Catalog_value-external_id)[ 1 .. 255 ] characters^[-_.\d\w]+$

Unique value ID for an attribute. The external_id may only contain lowercase Latin alphanumeric characters, dashes, and underscores.

Example: "attribute_value"
attributes[].​values[].​valuestring

Value of attribute.

Example: "Strategy"
typestring

Type of item: virtual_good/virtual_currency/bundle/physical_good/unit.

Example: "unit"
unit_typestring

Type of unit: game.

Example: "game"
descriptionstring

Item description.

Example: "Game description"
image_urlstring

Image URL.

Example: "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png"
unit_itemsArray of objects(Catalog_inline_response_200_unit_items)
Example: [{"sku":"game_key_01","type":"game_key","is_free":false,"price":{"amount":"30.5","amount_without_discount":"30.5","currency":"USD"},"virtual_prices":[],"drm_name":"Steam","drm_sku":"steam","has_keys":true,"is_pre_order":true,"release_date":"2020-08-11T10:00:00+03:00"},{"sku":"game_key_02","type":"game_key","is_free":false,"price":{"amount":"30.5","amount_without_discount":"30.5","currency":"USD"},"virtual_prices":[],"drm_name":"Origin","drm_sku":"origin","has_keys":false,"is_pre_order":false}]
unit_items[].​skustring

Unique item ID. The SKU may only contain lowercase Latin alphanumeric characters, periods, dashes, and underscores.

Example: "game_01"
unit_items[].​typestring

Type of item: game_key.

Example: "game_key"
unit_items[].​is_freeboolean

If true, the item is free.

Example: false
unit_items[].​priceobject(Catalog_inline_response_200_price)

Item prices.

unit_items[].​price.​amountstring

Discounted item price.

Example: "2.9900"
unit_items[].​price.​amount_without_discountstring

Item price.

Example: "2.9900"
unit_items[].​price.​currencystring

Default purchase currency. Three-letter code per ISO 4217.

Example: "USD"
unit_items[].​virtual_pricesArray of objects(Catalog_inline_response_200_virtual_prices)

Virtual prices.

unit_items[].​virtual_prices[].​amountinteger

Discounted item price in virtual currency.

Example: 100
unit_items[].​virtual_prices[].​amount_without_discountinteger

Item price.

Example: 200
unit_items[].​virtual_prices[].​skustring

Virtual currency item SKU.

Example: "vc_test"
unit_items[].​virtual_prices[].​is_defaultboolean

Whether price is default for item.

Example: true
unit_items[].​virtual_prices[].​image_urlstring

Image of virtual currency.

Example: "http://image.png"
unit_items[].​virtual_prices[].​namestring

Virtual currency name.

Example: "SHOTGUN FOR TRUE RAIDERS"
unit_items[].​virtual_prices[].​typestring

Virtual currency type.

Example: "virtual_currency"
unit_items[].​virtual_prices[].​descriptionstring

Virtual currency description.

Example: "Big Rocket - description"
unit_items[].​drm_namestring

DRM name.

Example: "Steam"
unit_items[].​drm_skustring

Unique DRM ID. The SKU may only contain lowercase Latin alphanumeric characters, periods, dashes, and underscores.

Example: "steam"
unit_items[].​has_keysboolean

If true, the game key has keys for sale.

Example: false
unit_items[].​is_pre_orderboolean

If true, the game key is pre-order and the release date hasn't passed.

Example: true
unit_items[].​release_datestring

Game key release date in the ISO 8601 format.

Example: "2020-08-11T10:00:00+03:00"
Response
application/json
{ "sku": "game_1", "name": "Game name", "groups": [ {}, {} ], "type": "unit", "unit_type": "game", "description": "Game description", "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png", "attributes": { "$ref": "#/components/examples/client-attribute-game/Catalog_value" }, "unit_items": [ {}, {} ] }

Request

Gets a game key for the catalog.

Security
AuthForClient
Path
project_idintegerrequired

Project ID.

Example: 44056
item_skustringrequired

Item SKU.

Example: booster_mega_1
Query
localestring

Response language. Two-letter lowercase language code per ISO 639-1.

Default "en"
additional_fields[]Array of strings

The list of additional fields. These fields will be in the response if you send them in your request. Available fields media_list, order, long_description.

countrystring

Country to calculate regional prices and restrictions for catalog. Two-letter uppercase country code per ISO 3166-1 alpha-2. If you do not specify the country explicitly, it will be calculated based on user's IP address.

Default "US"
curl -i -X GET \
  'https://store.xsolla.com/api/v2/project/44056/items/game/key/sku/booster_mega_1?locale=en&additional_fields%5B%5D=string&country=US' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Game key was successfully received.

Bodyapplication/json
skustring

Unique item ID. The SKU may only contain lowercase Latin alphanumeric characters, periods, dashes, and underscores.

Example: "game_1"
namestring

Item name.

Example: "Game name"
groupsArray of objects(Catalog_inline_response_200_groups)

Groups the item belongs to.

Example: [{"external_id":"all","name":"All games"},{"external_id":"Xsolla","name":"Xsolla games"}]
groups[].​external_idstring
Example: "accessory"
groups[].​namestring
Example: "Accessory"
attributesArray of objects(Catalog_client-attributes-common)

List of attributes and their values corresponding to the item. Can be used for catalog filtering.

Default []
attributes[].​external_idstring(Catalog_admin-attribute-external_id)[ 1 .. 255 ] characters^[a-zA-Z0-9-_]+$

Unique attribute ID. The external_id may only contain lowercase Latin alphanumeric characters, dashes, and underscores.

Example: "attribute_1"
attributes[].​namestring

Name of attribute.

Example: "Genre"
attributes[].​valuesArray of objects
attributes[].​values[].​external_idstring(Catalog_value-external_id)[ 1 .. 255 ] characters^[-_.\d\w]+$

Unique value ID for an attribute. The external_id may only contain lowercase Latin alphanumeric characters, dashes, and underscores.

Example: "attribute_value"
attributes[].​values[].​valuestring

Value of attribute.

Example: "Strategy"
typestring

Type of item: game_key.

Example: "game_key"
descriptionstring

Item description.

Example: "Game description"
image_urlstring

Image URL.

Example: "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png"
is_freeboolean

If true, the item is free.

Example: false
priceobject(Catalog_inline_response_200_price)

Item prices.

price.​amountstring

Discounted item price.

Example: "2.9900"
price.​amount_without_discountstring

Item price.

Example: "2.9900"
price.​currencystring

Default purchase currency. Three-letter code per ISO 4217.

Example: "USD"
virtual_pricesArray of objects(Catalog_inline_response_200_virtual_prices)

Virtual prices.

Example: []
virtual_prices[].​amountinteger

Discounted item price in virtual currency.

Example: 100
virtual_prices[].​amount_without_discountinteger

Item price.

Example: 200
virtual_prices[].​skustring

Virtual currency item SKU.

Example: "vc_test"
virtual_prices[].​is_defaultboolean

Whether price is default for item.

Example: true
virtual_prices[].​image_urlstring

Image of virtual currency.

Example: "http://image.png"
virtual_prices[].​namestring

Virtual currency name.

Example: "SHOTGUN FOR TRUE RAIDERS"
virtual_prices[].​typestring

Virtual currency type.

Example: "virtual_currency"
virtual_prices[].​descriptionstring

Virtual currency description.

Example: "Big Rocket - description"
drm_namestring

DRM name.

Example: "Steam"
drm_skustring

Unique DRM ID. The SKU may only contain lowercase Latin alphanumeric characters, periods, dashes, and underscores.

Example: "steam"
has_keysboolean

If true, the game key has keys for sale.

Example: true
is_pre_orderboolean

If true, the game key is pre-order and the release date hasn't passed.

Example: true
release_datestring

Game key release date in the ISO 8601 format.

Example: "2020-08-11T10:00:00+03:00"
Response
application/json
{ "sku": "game_1", "name": "Game name", "groups": [ {}, {} ], "type": "game_key", "description": "Game description", "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png", "attributes": { "$ref": "#/components/examples/client-attribute-game-horror/Catalog_value" }, "is_free": false, "price": { "amount": "30.5", "amount_without_discount": "30.5", "currency": "USD" }, "virtual_prices": [], "drm_name": "Steam", "drm_sku": "steam", "has_keys": true, "is_pre_order": true, "release_date": "2020-08-11T10:00:00+03:00" }

Get game keys list by specified group

Request

Gets a game key list from the specified group for building a catalog.

Attention. All projects have the limitation to the number of items that you can get in the response. The default and maximum value is 50 items per response. To get more data page by page, use limit and offset fields.
Security
AuthForClient
Path
project_idintegerrequired

Project ID.

Example: 44056
external_idstringrequired

Group external ID.

Default "all"
Query
limitinteger

Limit for the number of elements on the page.

Example: limit=50
offsetinteger

Number of the element from which the list is generated (the count starts from 0).

Example: offset=0
localestring

Response language. Two-letter lowercase language code per ISO 639-1.

Default "en"
additional_fields[]Array of strings

The list of additional fields. These fields will be in the response if you send them in your request. Available fields media_list, order, long_description.

countrystring

Country to calculate regional prices and restrictions for catalog. Two-letter uppercase country code per ISO 3166-1 alpha-2. If you do not specify the country explicitly, it will be calculated based on user's IP address.

Default "US"
curl -i -X GET \
  'https://store.xsolla.com/api/v2/project/44056/items/game/key/group/{external_id}?limit=50&offset=0&locale=en&additional_fields%5B%5D=string&country=US' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

The list of game keys was successfully received.

Bodyapplication/json
itemsArray of objects(Catalog_inline_response_200_3_items)
Example: [{"sku":"game_1","name":"Game name","groups":[{"external_id":"all","name":"All games"},{"external_id":"Xsolla","name":"Xsolla games"}],"type":"game_key","description":"Game description","image_url":"https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png","attributes":{"$ref":"#/components/examples/client-attribute-game-horror/Catalog_value"},"is_free":false,"price":{"amount":"30.5","amount_without_discount":"30.5","currency":"USD"},"virtual_prices":[],"drm_name":"Steam","drm_sku":"steam","has_keys":true,"is_pre_order":true,"release_date":"2020-08-11T10:00:00+03:00"},{"sku":"game_2","name":"Game name","groups":[{"external_id":"all","name":"All games"}],"type":"game_key","description":"Game description","image_url":"https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png","attributes":{"$ref":"#/components/examples/client-attribute-game-horror/Catalog_value"},"is_free":false,"price":{"amount":"30.5","amount_without_discount":"30.5","currency":"USD"},"virtual_prices":[],"drm_name":"Steam","drm_sku":"steam","has_keys":true,"is_pre_order":false}]
items[].​skustring

Unique item ID. The SKU may only contain lowercase Latin alphanumeric characters, periods, dashes, and underscores.

Example: "game_01"
items[].​namestring

Item name.

Example: "Game name"
items[].​groupsArray of objects(Catalog_inline_response_200_groups)

Groups the item belongs to.

Example: [{"external_id":"all","name":"All games"},{"external_id":"Xsolla","name":"Xsolla game"}]
items[].​groups[].​external_idstring
Example: "accessory"
items[].​groups[].​namestring
Example: "Accessory"
items[].​attributesArray of objects(Catalog_client-attributes)

List of attributes and their values corresponding to the Game.

Attention. This part of response is available only if you send the `additional_fields[]=attributes` query parameter.
Default []
items[].​attributes[].​external_idstring(Catalog_admin-attribute-external_id)[ 1 .. 255 ] characters^[a-zA-Z0-9-_]+$

Unique attribute ID. The external_id may only contain lowercase Latin alphanumeric characters, dashes, and underscores.

Example: "attribute_1"
items[].​attributes[].​namestring

Name of attribute.

Example: "Genre"
items[].​attributes[].​valuesArray of objects
items[].​attributes[].​values[].​external_idstring(Catalog_value-external_id)[ 1 .. 255 ] characters^[-_.\d\w]+$

Unique value ID for an attribute. The external_id may only contain lowercase Latin alphanumeric characters, dashes, and underscores.

Example: "attribute_value"
items[].​attributes[].​values[].​valuestring

Value of attribute.

Example: "Strategy"
items[].​typestring

Type of item: game_key.

Example: "game_key"
items[].​descriptionstring

Item description.

Example: "Game description"
items[].​image_urlstring

Image URL.

Example: "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png"
items[].​is_freeboolean

If true, the item is free.

Example: false
items[].​priceobject(Catalog_inline_response_200_price)

Item prices.

items[].​price.​amountstring

Discounted item price.

Example: "2.9900"
items[].​price.​amount_without_discountstring

Item price.

Example: "2.9900"
items[].​price.​currencystring

Default purchase currency. Three-letter code per ISO 4217.

Example: "USD"
items[].​virtual_pricesArray of objects(Catalog_inline_response_200_virtual_prices)

Virtual prices.

items[].​virtual_prices[].​amountinteger

Discounted item price in virtual currency.

Example: 100
items[].​virtual_prices[].​amount_without_discountinteger

Item price.

Example: 200
items[].​virtual_prices[].​skustring

Virtual currency item SKU.

Example: "vc_test"
items[].​virtual_prices[].​is_defaultboolean

Whether price is default for item.

Example: true
items[].​virtual_prices[].​image_urlstring

Image of virtual currency.

Example: "http://image.png"
items[].​virtual_prices[].​namestring

Virtual currency name.

Example: "SHOTGUN FOR TRUE RAIDERS"
items[].​virtual_prices[].​typestring

Virtual currency type.

Example: "virtual_currency"
items[].​virtual_prices[].​descriptionstring

Virtual currency description.

Example: "Big Rocket - description"
items[].​drm_namestring

DRM name.

Example: "Steam"
items[].​drm_skustring

Unique DRM ID. The SKU may only contain lowercase Latin alphanumeric characters, periods, dashes, and underscores.

Example: "steam"
items[].​has_keysboolean

If true, the game key has keys for sale.

Example: false
items[].​is_pre_orderboolean

If true, the game key is pre-order and the release date hasn't passed.

Example: true
items[].​release_datestring

Game key release date in the ISO 8601 format.

Example: "2020-08-11T10:00:00+03:00"
Response
application/json
{ "items": [ {}, {} ] }
Operations
Operations
Operations
Operations
Operations