Skip to content

Overview

  • Version: 2.0.0
  • Servers: https://store.xsolla.com/api
  • Contact Us by Email
  • Contact URL: https://xsolla.com/
  • Required TLS version: 1.2

The Catalog API allows you to configure a catalog of in-game items on the Xsolla side and display the catalog to users in your store.

The API allows you to manage the following catalog entities:

  • Virtual items — in-game items such as weapons, skins, boosters.
  • Virtual currency — virtual money used to purchase virtual goods.
  • Virtual currency packages — predefined bundles of virtual currency.
  • Bundles — combined packages of virtual items, currency, or game keys sold as a single SKU.
  • Game keys — keys for games and DLCs distributed via platforms like Steam or other DRM providers.
  • Groups — logical groupings for organizing and sorting items within the catalog.

API calls

The API is divided into the following groups:

  • Admin — calls for creating, updating, deleting, and configuring catalog items and groups. Authenticated via basic access authentication with your merchant or project credentials. Not intended for storefront use.
  • Catalog — calls for retrieving items and building custom storefronts for end users. Designed to handle high-load scenarios. Support optional user JWT authorization to return personalized data such as user-specific limits and active promotions.
Download OpenAPI description
Languages
Servers
https://store.xsolla.com/api/
Mock server
https://xsolla.redocly.app/_mock/api/catalog/
Operations
Operations
Operations
Operations
Operations
Operations

Upload codes by IDServer-sideAdmin

Request

Uploads codes by game key ID.

Security
basicAuth
Path
project_idintegerrequired

Project ID. You can find this parameter in your Publisher Account next to the name of the project.

Example: 44056
item_idstringrequired

Item ID.

Example: 656
Bodymultipart/form-data
filestring(binary)required

File with codes.

Example: "keys.txt"
region_idinteger

Region ID.

Example: 1
curl -i -X POST \
  -u <username>:<password> \
  https://store.xsolla.com/api/v2/project/44056/admin/items/game/key/upload/id/656 \
  -H 'Content-Type: multipart/form-data' \
  -F file=keys.txt \
  -F region_id=1

Responses

Codes loading session information was successfully received.

Bodyapplication/json
session_idstring
Example: "fc7105b6e8ee01339582970b37697242"
count_uploadedinteger
Example: 0
count_totalinteger
Example: 100
count_skippedinteger
Example: 10
statusstring
Example: "processing"
Response
application/json
{ "session_id": "fc7105b6e8ee01339582970b37697242", "count_uploaded": 0, "count_total": 100, "count_skipped": 10, "status": "processing" }

Get codes loading session informationServer-sideAdmin

Request

Gets codes loading session information.

Security
basicAuth
Path
project_idintegerrequired

Project ID. You can find this parameter in your Publisher Account next to the name of the project.

Example: 44056
session_idstringrequired

Session ID.

Default "fc7105b6e8ee01339582970b37697242"
curl -i -X GET \
  -u <username>:<password> \
  'https://store.xsolla.com/api/v2/project/44056/admin/items/game/key/upload/session/{session_id}'

Responses

Codes loading session information was successfully received.

Bodyapplication/json
session_idstring
Example: "fc7105b6e8ee01339582970b37697242"
count_uploadedinteger
Example: 0
count_totalinteger
Example: 100
count_skippedinteger
Example: 10
statusstring
Example: "processing"
Response
application/json
{ "session_id": "fc7105b6e8ee01339582970b37697242", "count_uploaded": 0, "count_total": 100, "count_skipped": 10, "status": "processing" }

Request

Gets a certain number of codes by game key SKU.

Security
basicAuth
Path
project_idintegerrequired

Project ID. You can find this parameter in your Publisher Account next to the name of the project.

Example: 44056
item_skustringrequired

Item SKU.

Example: booster_mega_1
Query
user_emailstringrequired

User email.

Example: user_email=email@email.com
quantityintegerrequired

Codes quantity.

Example: quantity=100
reasonstringrequired

Reason receiving codes.

Example: reason=Very important
region_idinteger

Region ID.

Default 1
curl -i -X GET \
  -u <username>:<password> \
  'https://store.xsolla.com/api/v2/project/44056/admin/items/game/key/request/sku/booster_mega_1?user_email=email%40email.com&quantity=100&reason=Very+important&region_id=1'

Responses

Codes were successfully received.

Bodytext/plain
string
Response
text/plain
PIN-CODE-ALL PIN-CODE-ALL-3
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations

Catalog

This API allows getting any kind of sellable items or specific item.

Operations
Operations
Operations