SKU do item.
Catalog API (2.0.0)
- 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.
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.
API calls require authentication either on behalf of a user or on behalf of a project. The authentication scheme used is specified in the Security section in the description of each call.
User's JWT authentication is used when a request is sent from a browser, mobile application, or game. By default, the XsollaLoginUserJWT scheme is applied. For details on how to create a token, see the Xsolla Login API documentation.
The token is passed in the Authorization header in the following format: Authorization: Bearer <user_JWT>, where <user_JWT> is the user token. The token identifies the user and provides access to personalized data.
Alternativamente, você pode usar um token para abrir a interface de pagamento.
Basic HTTP authentication is used for server-to-server interactions, when an API call is sent directly from your server rather than from a user's browser or mobile application. HTTP Basic authentication with an API key is typically used.
The API key is confidential and must not be stored or used in client applications.
With basic server-side authentication, all API requests must include the following header:
- for
basicAuth—Authorization: Basic <your_authorization_basic_key>, whereyour_authorization_basic_keyis theproject_id:api_keypair encoded in Base64 - for
basicMerchantAuth—Authorization: Basic <your_authorization_basic_key>, whereyour_authorization_basic_keyis themerchant_id:api_keypair encoded in Base64
You can find the parameter values in Publisher Account:
merchant_idis displayed:- In Company settings > Company.
- In the URL in the browser address bar on any Publisher Account page. The URL has the following format:
https://publisher.xsolla.com/<merchant_id>.
project_idis displayed:- Next to the project name in Publisher Account.
- In the URL in the browser address bar when working on a project in Publisher Account. The URL has the following format:
https://publisher.xsolla.com/<merchant_id>/projects/<project_id>.
api_keyis shown in Publisher Account only at the time of creation and must be stored securely on your side. You can create an API key in the following sections:
If a required API call doesn't include the
project_id path parameter, use an API key that is valid across all company projects for authorization.For more information about working with API keys, see the API references.
O esquema de autenticação AuthForCart é utilizado para as compras de carrinhos e suporta dois modos:
Authentication with a user's JWT. The token is passed in the
Authorizationheader in the following format:Authorization: Bearer <user_JWT>, where<user_JWT>is the user token. The token identifies the user and provides access to personalized data. Alternatively, you can use a token for opening the payment UI.Simplified mode without Authorization header. This mode is used only for unauthorized users and can be applied only for game key sales. Instead of a token, the request must include the following headers:
x-unauthorized-idwith a request IDx-userwith the user's email address encoded in Base64
Items of all types (virtual items, bundles, virtual currency, and keys) use a similar data structure. Understanding the basic structure simplifies working with the API and helps you navigate the documentation more easily.
Some calls may include additional fields but they don't change the basic structure.
Identification
merchant_id— company ID in Publisher Accountproject_id— project ID in Publisher Accountsku— item SKU, unique within the project
Store display
name— item namedescription— item descriptionimage_url— image URLis_enabled— item availabilityis_show_in_store— whether the item is displayed in the catalog
For more information about managing item availability in the catalog, see the documentation.
Organization
type— item type, for example, a virtual item (virtual_item) or bundle (bundle)groups— groups the item belongs toorder— display order in the catalog
Sale conditions
prices— prices in real or virtual currencylimits— purchase limitsperiods— availability periodsregions— regional restrictions
Example of core entity structure:
{
"attributes": [],
"bundle_type": "virtual_currency_package",
"content": [
{
"description": {
"en": "Main in-game currency"
},
"image_url": "https://.../image.png",
"name": {
"en": "Crystals",
"de": "Kristalle"
},
"quantity": 500,
"sku": "com.xsolla.crystal_2",
"type": "virtual_currency"
}
],
"description": {
"en": "Crystals x500"
},
"groups": [],
"image_url": "https://.../image.png",
"is_enabled": true,
"is_free": false,
"is_show_in_store": true,
"limits": {
"per_item": null,
"per_user": null,
"recurrent_schedule": null
},
"long_description": null,
"media_list": [],
"name": {
"en": "Medium crystal pack"
},
"order": 1,
"periods": [
{
"date_from": null,
"date_until": "2020-08-11T20:00:00+03:00"
}
],
"prices": [
{
"amount": 20,
"country_iso": "US",
"currency": "USD",
"is_default": true,
"is_enabled": true
}
],
"regions": [],
"sku": "com.xsolla.crystal_pack_2",
"type": "bundle",
"vc_prices": []
}The Xsolla API allows you to implement in-game store logic, including retrieving the item catalog, managing the cart, creating orders, and tracking their status. Depending on the integration scenario, API calls are divided into Admin and Catalog subsections, which use different authentication schemes.
The following example shows a basic flow for setting up and operating a store, from item creation to purchase.
Create an item catalog for your store, such as virtual items, bundles, or virtual currency.
Example API calls:
Configure user acquisition and monetization tools, such as discounts, bonuses, daily rewards, or offer chains.
Example API calls:
Configure item display in your application.
Do not use API calls from the Admin subsection to build a user catalog. These API calls have rate limits and aren't intended for user traffic.
Example API calls:
By default, catalog API calls return items that are currently available in the store at the time of the request. To retrieve items that are not yet available or are no longer available, include the parameter
"show_inactive_time_limited_items": 1 in the catalog request.
You can sell items using the following methods:
- Fast purchase — sell one SKU multiple times.
- Cart purchase — the user adds items to the cart, removes items, and updates quantities within a single order.
If an item is purchased using virtual currency instead of real money, use the Create order with specified item purchased by virtual currency API call. The payment UI is not required, as the charge is processed when the API call is executed.
For free item purchase, use the Create order with specified free item API call or the Create order with free cart API call. The payment UI is not required — the order is immediately set to the done status.
Use the client-side API call to create an order with a specified item. The call returns a token used to open the payment UI.
Discount information is available to the user only in the payment UI. Promo codes are not supported.
Cart setup and purchase can be performed on the client or on the server side.
Set up and purchase a cart on the client
Implement the logic of adding and removing items by yourself. Before calling the API for setting up a cart, you will not have information about which promotions will be applied to the purchase. This means that the total cost and details of the added bonus items will not be known.
Implement the following cart logic:
- After the player has filled a cart, use the Fill cart with items API call. The call returns the current information about the selected items (prices before and after discounts, bonus items).
- Update the cart contents based on user actions:
- To add an item or change item quantity, use the Update cart item by cart ID API call.
- To remove an item, use the Delete cart item by cart ID API call.
To get the current status of the cart, use the Get current user's cart API call.
- Use the Create order with all items from current cart API call. The call returns the order ID and payment token. The newly created order is set to
newstatus by default.
Set up and purchase a cart on the server
This setup option may take longer for setting the cart up, since each change to the cart must be accompanied by API calls.
Implement the following cart logic:
- After the player has filled a cart, use the Fill cart with items API call. The call returns current information about the selected items (prices before and after discounts, bonus items).
- Use the Create order with all items from current cart API call. The call returns the order ID and payment token. The newly created order is set to
newstatus by default.
Use the returned token to open the payment UI in a new window. Other ways to open the payment UI are described in the documentation.
| Action | Endpoint |
|---|---|
| Open in production environment. | https://secure.xsolla.com/paystation4/?token={token} |
| Open in sandbox mode. | https://sandbox-secure.xsolla.com/paystation4/?token={token} |
Use sandbox mode during development and testing. Test purchases don't charge real accounts. You can use test bank cards.
After the first real payment is made, a strict sandbox payment policy takes effect. A payment in sandbox mode is available only to users specified in Publisher Account > Company settings > Users.
Buying virtual currency and items for real currency is possible only after signing a license agreement with Xsolla. To do this, in Publisher Account, go to Agreements & Taxes > Agreements, complete the agreement form, and wait for confirmation. It may take up to 3 business days to review the agreement.
To enable or disable sandbox mode, change the value of the sandbox parameter in the request for fast purchase and cart purchase. Sandbox mode is off by default.
Possible order statuses:
new— order createdpaid— payment receiveddone— item deliveredcanceled— order canceledexpired— order expired
Track order status using one of the following methods:
API calls that return large sets of records (for example, when building a catalog) return data in pages. Pagination is a mechanism that limits the number of items returned in a single API response and allows you to retrieve subsequent pages sequentially.
Use the following parameters to control the number of returned items:
limit— number of items per pageoffset— index of the first item on the page (numbering starts from 0)has_more— indicates whether another page is availabletotal_items_count— total number of items
Example request:
GET /items?limit=20&offset=40Response example:
{
"items": [...],
"has_more": true,
"total_items_count": 135
}It is recommended to send subsequent requests until the response returns has_more = false.
Dates and time values are passed in the ISO 8601 format.
The following are supported:
- UTC offset
nullvalue when there is no time restriction for displaying an item- Unix timestamp (in seconds) used in some fields
Format: YYYY-MM-DDTHH:MM:SS±HH:MM
Example: 2026-03-16T10:00:00+03:00
Xsolla supports localization of user-facing fields such as item name and description. Localized values are passed as an object where the language code is used as the key. The full list of supported languages is available in the documentation.
Supported fields
Localization can be specified for the following parameters:
namedescriptionlong_description
Locale format
The locale key can be specified in one of the following formats:
- Two-letter language code:
en,ru - Five-letter language code:
en-US,ru-RU,de-DE
Examples
Example with a two-letter language code:
{
"name": {
"en": "Starter Pack",
"ru": "Стартовый набор"
}
}Example with a five-letter language code:
{
"description": {
"en-US": "Premium bundle",
"de-DE": "Premium-Paket"
}
}The user's country determines catalog prices, the payment currency, and available payment methods in the payment UI. Depending on the API call, the country is determined as follows:
- In client-side API calls, the country is determined by the IP address of the request.
- In server-side API calls,
the country is determined by the value of the
user.country.valueparameter or by the user's IP address from theX-User-Ipheader. If both are passed, theuser.country.valueparameter takes precedence.
If an error occurs, the API returns an HTTP status and a JSON response body. The full list of store-related errors is available in the documentation.
Response example:
{
"errorCode": 1102,
"errorMessage": "Validation error",
"statusCode": 422,
"transactionId": "c9e1a..."
}errorCode— error code.errorMessage— short error description.statusCode— HTTP response status.transactionId— request ID. Returned only in some cases.errorMessageExtended— additional error details, such as request parameters. Returned only in some cases.
Extended response example:
{
"errorCode": 7001,
"errorMessage": "Chain not found",
"errorMessageExtended": {
"chain_id": "test_chain_id",
"project_id": "test_project_id",
"step_number": 2
},
"statusCode": 404
}Common HTTP status codes
400— invalid request401— authentication error403— insufficient permissions404— resource not found422— validation error429— rate limit exceeded
Recommendations
- Handle the HTTP status and the response body together.
- Use
errorCodeto process errors related to application logic. - Use
transactionIdto identify requests more quickly when analyzing errors.
Visão geral
Você pode usar itens virtuais e moedas virtuais para construir uma loja no jogo e configurar como ela é exibida para os usuários. Os seguintes tipos de itens estão disponíveis:
- Itens virtuais — bens no jogo como armas, skins ou impulsionadores. Podem ser vendidos por dinheiro real ou moedas virtuais.
- Moeda virtual — moeda no jogo usada para comprar itens virtuais. Pode ser vendida por moedas reais ou moedas virtuais.
- Pacotes de moedas virtuais — uma quantidade fixa de moedas virtuais. Pode ser vendida por moedas reais ou moedas virtuais.
Grupos são usados para organizar itens no catálogo. Eles permitem agrupar logicamente os itens e gerenciar como eles são exibidos.
Use chamadas de API da subseção Admin para criar, atualizar e excluir itens.
Use chamadas de API da subseção Catálogo para recuperar listas de itens e exibi-los aos usuários.
Não use chamadas de API da subseção Admin para construir um catálogo de loja.
A chamada de API Obter lista de itens virtuais retorna dados detalhados dos itens, incluindo preços e atributos, e suporta paginação. Use-a para exibir páginas de catálogo na vitrine.
A chamada de API Obter lista de todos os itens virtuais retorna o SKU do item, nome, descrição, bem como ID e nome do grupo sem paginação. Use-a para busca ou indexação do lado do cliente.
Para compras com moedas virtuais, use a chamada de API Criar pedido com item especificado comprado por moeda virtual. A interface de pagamento não é necessária — a cobrança é processada quando a chamada de API é executada.
Exemplo de fluxo de compra com moeda virtual:

Visão geral
Chaves de jogo são códigos alfanuméricos exclusivos de uso único que concedem acesso a um jogo ou DLC em plataformas de jogos para usuários. Você pode vender chaves de jogo via link direto, pela interface da loja, ou via widget. Você também pode configurar restrições regionais para vender chaves de jogo em países específicos. Para obter informações detalhadas, consulte a seção pacotes de chaves de jogo.
Não é necessário estar autenticado para vender chaves de jogo — as chaves são enviadas ao e-mail que o usuário especifica na compra. Você pode configurar a autenticação para habilitar cenários adicionais: personalização, limites de compra, ou um sistema de direitos. Para obter informações mais detalhadas, consulte a seção Como configurar a autenticação ao vender chaves de jogo.
Fluxo de venda de chaves de jogo:
- Crie um jogo usando a chamada de API Criar jogo API call.
- Configure restrições regionais.
- Envie chaves a um pacote de chaves de jogo usando a chamada de API Enviar códigos para torná-las disponíveis para compra.
- Exiba o catálogo de jogos com preços para a região do usuário usando a chamada de API Obter lista de jogos API call.
- Crie um pedido. Para criar uma compra rápida, você pode usar a chamada de API Criar pedido com todos os itens do carrinho atual, passando o SKU da chave de jogo. A resposta retorna um token para abrir a interface de pagamento.
- Implemente a abertura da interface de pagamento para pagar pelo pedido.
Para receber notificações sobre pagamentos bem-sucedidos e entregar itens ao usuário, configure o rastreamento do status de pedidos, por exemplo, usando webhooks. As chaves são enviadas ao e-mail especificado pelo usuário na compra, e o pedido transita para o status done.
Pedido
Obtém um jogo para o catálogo.
Esta chamada de API retorna dados genéricos do catálogo de itens quando usada sem autorização. Use a autorização para recuperar dados personalizados do usuário, como limites e promoções associadas ao item. Para fazer isso, passe o JWT do usuário no cabeçalho
Authorization.
Para mais informações sobre o JWT do usuário, consulte o bloco Segurança
para esta chamada.
ID de projeto. Você pode encontrar esse parâmetro na sua Conta de Distribuidor, próximo ao nome do projeto e na barra de endereços do navegador ao trabalhar com um projeto. O URL tem o seguinte formato: https://publisher.xsolla.com/<merchant_id>/projects/<project_id>.
Idioma de resposta. Código de idioma de duas letras minúsculas, de acordo com o padrão ISO 639-1 (por exemplo, en). Códigos de localização de cinco caracteres (por exemplo, en-US) são suportados nos campos de tradução, tais como name e description, mas são normalizados a códigos de duas letras nas respostas. Você pode encontrar a lista completa de idiomas suportados na documentação.
Campos adicionais para incluir na resposta. Por padrão, esses campos não são retornados. Passe os valores necessários para incluí-los.
Código de país de duas letras maiúsculas de acordo com o padrão ISO 3166-1 alfa-2. Verifique a documentação para obter informações detalhadas sobre os países suportados pela Xsolla e o processo de determinação do país.
Código exclusivo que diferencia maiúsculas de minúsculas. Contém letras e números.
- https://store.xsolla.com/api/v2/project/{project_id}/items/game/sku/{item_sku}
- Mock serverhttps://xsolla.redocly.app/_mock/pt/api/catalog/v2/project/{project_id}/items/game/sku/{item_sku}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://store.xsolla.com/api/v2/project/44056/items/game/sku/{item_sku}?locale=en&additional_fields%5B%5D=media_list&country=US&promo_code=WINTER2021&show_inactive_time_limited_items=1' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Jogo recebido com sucesso.
ID de item exclusivo. O SKU só pode conter caracteres alfanuméricos latinos minúsculos e maiúsculos, pontos, traços e sublinhados.
Grupo aos quais o item pertence.
ID de grupo de itens externo especificado durante a criação.
Lista de atributos e seus valores correspondentes ao item. Pode ser usado para a filtragem de catálogos.
ID de atributo exclusivo. O external_id só pode conter caracteres alfanuméricos latinos minúsculos e maiúsculos, traços e sublinhados.
URL da imagem.
Promoções aplicadas a itens específicos no carrinho. A matriz é retornada nos seguintes casos:
Uma promoção de desconto é configurada para um item específico.
Um código promocional com a configuração Desconto em itens selecionados é aplicado.
Se nenhuma promoção no nível do item for aplicada, é retornada uma matriz vazia.
Tipo de item bônus.
Nome do item bônus. Indisponível para o tipo de item bônus physical_good.
URL da imagem do item bônus. Indisponível para o tipo de item bônus physical_good.
ID de item exclusivo. O SKU só pode conter caracteres alfanuméricos latinos minúsculos e maiúsculos, pontos, traços e sublinhados.
Preços dos itens.
Moeda do preço do item. Código de três letras de acordo com a ISO 4217.
Preços virtuais.
Preço do item em moedas virtuais sem desconto. Sempre igual a amount já que descontos não são aplicados a preços em moedas virtuais.
Se o preço padrão é definido em uma moeda virtual ou não.
URL de imagem da moeda virtual
Tipo de item. Para moedas virtuais, é virtual_currency.
ID de DRM exclusivo. O SKU só pode conter caracteres alfanuméricos latinos minúsculos e maiúsculos, pontos, traços e sublinhados.
Se true, a chave do jogo é uma pré-venda e a data de lançamento não foi passada.
Data de lançamento da chave de jogo no formato ISO 8601.
Promoções aplicadas a itens específicos no carrinho. A matriz é retornada nos seguintes casos:
Uma promoção de desconto é configurada para um item específico.
Um código promocional com a configuração Desconto em itens selecionados é aplicado.
Se nenhuma promoção no nível do item for aplicada, é retornada uma matriz vazia.
Tipo de item bônus.
Nome do item bônus. Indisponível para o tipo de item bônus physical_good.
URL da imagem do item bônus. Indisponível para o tipo de item bônus physical_good.
Limites de itens.
Limites de item para um usuário.
Quantidade máxima de itens que o usuário atual pode comprar.
Quantidade restante de itens que o usuário atual pode comprar.
O item limita o período de atualização recorrente para um usuário.
Determina a visibilidade do item no catálogo após o limite de compra ser atingido, até o próximo limite ser redefinido.
Aplica-se a itens para os quais redefinições recorrentes de limite estão configurados na matriz recurrent_schedule.
Se os limites redefinidos não forem configurados, o item não aparecerá no catálogo após o limite de compra ser atingido, independentemente do valor limit_exceeded_visibility.
Possíveis valores:
show— O item é retornado nas chamadas API de recuperação de catálogo após o limite de compra ser atingido. Nas chamadas API de recuperação de catálogo, quando o limite for atingido, o item será retornado com a marcaçãocan_be_bought: false. A próxima data de redefinição é retornada emreset_next_date.hide— O item não é retornado nas chamadas API de recuperação de catálogo após o limite de compra ser atingido, até o limite ser redefinido.
Limites de item para um item.
Período de venda de itens.
Data em que o item especificado estará disponível para venda.
Lista de recompensas de pontos de valor para o item.
{ "sku": "com.xsolla.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": [ { … }, { … } ], "promotions": [], "unit_items": [ { … }, { … } ] }
Pedido
Obtém uma chave de jogo para o catálogo.
Esta chamada de API retorna dados genéricos do catálogo de itens quando usada sem autorização. Use a autorização para recuperar dados personalizados do usuário, como limites e promoções associadas ao item. Para fazer isso, passe o JWT do usuário no cabeçalho
Authorization.
Para mais informações sobre o JWT do usuário, consulte o bloco Segurança
para esta chamada.
ID de projeto. Você pode encontrar esse parâmetro na sua Conta de Distribuidor, próximo ao nome do projeto e na barra de endereços do navegador ao trabalhar com um projeto. O URL tem o seguinte formato: https://publisher.xsolla.com/<merchant_id>/projects/<project_id>.
Idioma de resposta. Código de idioma de duas letras minúsculas, de acordo com o padrão ISO 639-1 (por exemplo, en). Códigos de localização de cinco caracteres (por exemplo, en-US) são suportados nos campos de tradução, tais como name e description, mas são normalizados a códigos de duas letras nas respostas. Você pode encontrar a lista completa de idiomas suportados na documentação.
Campos adicionais para incluir na resposta. Por padrão, esses campos não são retornados. Passe os valores necessários para incluí-los.
Código de país de duas letras maiúsculas de acordo com o padrão ISO 3166-1 alfa-2. Verifique a documentação para obter informações detalhadas sobre os países suportados pela Xsolla e o processo de determinação do país.
Código exclusivo que diferencia maiúsculas de minúsculas. Contém letras e números.
- https://store.xsolla.com/api/v2/project/{project_id}/items/game/key/sku/{item_sku}
- Mock serverhttps://xsolla.redocly.app/_mock/pt/api/catalog/v2/project/{project_id}/items/game/key/sku/{item_sku}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://store.xsolla.com/api/v2/project/44056/items/game/key/sku/{item_sku}?locale=en&additional_fields%5B%5D=media_list&country=US&promo_code=WINTER2021&show_inactive_time_limited_items=1' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'A chave de jogo foi recebida com sucesso.
ID de item exclusivo. O SKU só pode conter caracteres alfanuméricos latinos minúsculos e maiúsculos, pontos, traços e sublinhados.
Grupo aos quais o item pertence.
ID de grupo de itens externo especificado durante a criação.
Lista de atributos e seus valores correspondentes ao item. Pode ser usado para a filtragem de catálogos.
ID de atributo exclusivo. O external_id só pode conter caracteres alfanuméricos latinos minúsculos e maiúsculos, traços e sublinhados.
URL da imagem.
Preços dos itens.
Moeda do preço do item. Código de três letras de acordo com a ISO 4217.
Preços virtuais.
Preço do item em moedas virtuais sem desconto. Sempre igual a amount já que descontos não são aplicados a preços em moedas virtuais.
Se o preço padrão é definido em uma moeda virtual ou não.
Tipo de item. Para moedas virtuais, é virtual_currency.
ID de DRM exclusivo. O SKU só pode conter caracteres alfanuméricos latinos minúsculos e maiúsculos, pontos, traços e sublinhados.
Se true, a chave do jogo é uma pré-venda e a data de lançamento não foi passada.
Data de lançamento da chave de jogo no formato ISO 8601.
Promoções aplicadas a itens específicos no carrinho. A matriz é retornada nos seguintes casos:
Uma promoção de desconto é configurada para um item específico.
Um código promocional com a configuração Desconto em itens selecionados é aplicado.
Se nenhuma promoção no nível do item for aplicada, é retornada uma matriz vazia.
Tipo de item bônus.
Nome do item bônus. Indisponível para o tipo de item bônus physical_good.
URL da imagem do item bônus. Indisponível para o tipo de item bônus physical_good.
Limites de itens.
Limites de item para um usuário.
Quantidade máxima de itens que o usuário atual pode comprar.
Quantidade restante de itens que o usuário atual pode comprar.
O item limita o período de atualização recorrente para um usuário.
Determina a visibilidade do item no catálogo após o limite de compra ser atingido, até o próximo limite ser redefinido.
Aplica-se a itens para os quais redefinições recorrentes de limite estão configurados na matriz recurrent_schedule.
Se os limites redefinidos não forem configurados, o item não aparecerá no catálogo após o limite de compra ser atingido, independentemente do valor limit_exceeded_visibility.
Possíveis valores:
show— O item é retornado nas chamadas API de recuperação de catálogo após o limite de compra ser atingido. Nas chamadas API de recuperação de catálogo, quando o limite for atingido, o item será retornado com a marcaçãocan_be_bought: false. A próxima data de redefinição é retornada emreset_next_date.hide— O item não é retornado nas chamadas API de recuperação de catálogo após o limite de compra ser atingido, até o limite ser redefinido.
Período de venda de itens.
{ "sku": "com.xsolla.game_1", "name": "Game name", "groups": [ { … }, { … } ], "type": "game_key", "description": "Game description", "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png", "attributes": [ { … }, { … } ], "is_free": false, "price": { "amount": "30.5", "amount_without_discount": "30.5", "currency": "USD" }, "virtual_prices": [], "can_be_bought": true, "drm_name": "Steam", "drm_sku": "steam_key_1", "has_keys": true, "is_pre_order": true, "release_date": "2020-08-11T10:00:00+03:00", "promotions": [], "limits": null, "periods": [ { … } ] }
Pedido
Recebe uma lista de chaves de jogo do grupo especificado para montar um catálogo.
Todos os projetos têm uma limitação no número de itens que você pode obter na resposta. O valor padrão e máximo é 50 itens por resposta. Para obter mais dados página por página, use os campos limit e offset.
Esta chamada de API retorna dados genéricos do catálogo de itens quando usada sem autorização. Use a autorização para recuperar dados personalizados do usuário, como limites e promoções associadas ao item. Para fazer isso, passe o JWT do usuário no cabeçalho
Authorization.
Para mais informações sobre o JWT do usuário, consulte o bloco Segurança
para esta chamada.
ID de projeto. Você pode encontrar esse parâmetro na sua Conta de Distribuidor, próximo ao nome do projeto e na barra de endereços do navegador ao trabalhar com um projeto. O URL tem o seguinte formato: https://publisher.xsolla.com/<merchant_id>/projects/<project_id>.
ID de grupo de itens externo especificado durante a criação.
Número do elemento a partir do qual a lista é gerada (a quantidade começa a partir de 0).
Idioma de resposta. Código de idioma de duas letras minúsculas, de acordo com o padrão ISO 639-1 (por exemplo, en). Códigos de localização de cinco caracteres (por exemplo, en-US) são suportados nos campos de tradução, tais como name e description, mas são normalizados a códigos de duas letras nas respostas. Você pode encontrar a lista completa de idiomas suportados na documentação.
Campos adicionais para incluir na resposta. Por padrão, esses campos não são retornados. Passe os valores necessários para incluí-los.
Código de país de duas letras maiúsculas de acordo com o padrão ISO 3166-1 alfa-2. Verifique a documentação para obter informações detalhadas sobre os países suportados pela Xsolla e o processo de determinação do país.
Código exclusivo que diferencia maiúsculas de minúsculas. Contém letras e números.
- https://store.xsolla.com/api/v2/project/{project_id}/items/game/key/group/{external_id}
- Mock serverhttps://xsolla.redocly.app/_mock/pt/api/catalog/v2/project/{project_id}/items/game/key/group/{external_id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://store.xsolla.com/api/v2/project/44056/items/game/key/group/weapons?limit=50&offset=0&locale=en&additional_fields%5B%5D=media_list&country=US&promo_code=WINTER2021&show_inactive_time_limited_items=1' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'A lista de chaves de jogo foi recebida com sucesso.
ID de item exclusivo. O SKU só pode conter caracteres alfanuméricos latinos minúsculos e maiúsculos, pontos, traços e sublinhados.
Grupo aos quais o item pertence.
ID de grupo de itens externo especificado durante a criação.
Lista de atributos e seus valores correspondentes ao item. Pode ser usado para a filtragem de catálogos.
ID de atributo exclusivo. O external_id só pode conter caracteres alfanuméricos latinos minúsculos e maiúsculos, traços e sublinhados.
ID de valor exclusivo para um atributo. O external_id pode conter apenas caracteres alfanuméricos latinos minúsculos, traços e sublinhados.
URL da imagem.
Preços dos itens.
Moeda do preço do item. Código de três letras de acordo com a ISO 4217.
Preços virtuais.
Preço do item em moedas virtuais sem desconto. Sempre igual a amount já que descontos não são aplicados a preços em moedas virtuais.
Se o preço padrão é definido em uma moeda virtual ou não.
URL de imagem da moeda virtual
Tipo de item. Para moedas virtuais, é virtual_currency.
ID de DRM exclusivo. O SKU só pode conter caracteres alfanuméricos latinos minúsculos e maiúsculos, pontos, traços e sublinhados.
Se true, a chave do jogo é uma pré-venda e a data de lançamento não foi passada.
Data de lançamento da chave de jogo no formato ISO 8601.
Período de venda de itens.
Data em que o item especificado estará disponível para venda.
{ "has_more": true, "items": [ { … }, { … } ] }
Visão geral
Conjuntos são grupos de itens vendidos como uma unidade única. Um conjunto pode incluir itens virtuais, moedas virtuais, pacotes de moedas virtuais, chaves de jogo, e outros conjuntos. Use conjuntos para criar pacotes de iniciantes, ofertas sazonais e ofertas especiais.
Use os seguintes grupos de chamada de API com conjuntos:
- Use chamadas de API da subseção Admin para criar, atualizar, excluir conjuntos e gerenciar sua visibilidade.
- Use chamadas de API da subseção Catálogo para recuperar conjuntos.
Os limites de compra são configurados pelo objeto limits ao criar ou atualizar um conjunto. Para mais informações, consulte a visão geral de limites. Você também pode configurar restrições regionais para vender itens em países específicos.
Cenário de gestão de conjuntos:
- Crie um conjunto usando a chamada de API Criar conjunto. Para verificar o conjunto criado, use a chamada de API Obter conjunto. Para recuperar todos os conjuntos no projeto, use a chamada de API Obter lista de conjuntos.
- Se necessário, use a chamada de API Atualizar conjunto para modificar o conteúdo do conjunto ou as configurações.
- Implemente a lógica de exibição do conjunto na sua vitrine usando as chamadas de API Obter lista de conjuntos, Obter conjunto específico, ou Obter lista de conjuntos por grupo especificado.
- Crie um pedido usando a seção Carrinho e pagamento. Por exemplo, para uma compra rápida, você pode usar a chamada de API Criar pedido com o item especificado, passando o SKU do conjunto. A resposta contém um token para abrir a interface de pagamento.
- Implemente usando a interface de pagamento para pagar pelo pedido.
- Configure o rastreamento de status de pedidos, por exemplo, usando webhooks para receber dados sobre itens pagos com sucesso prontamente e concedê-los ao usuário.

Visão geral
O carrinho é um mecanismo de compra que permite combinar vários itens em um único pedido. Um usuário pode comprar itens de qualquer tipo em qualquer quantidade com moedas reais, assim como usar códigos promocionais.
O carrinho é armazenado no lado da Xsolla. O salvamento do carrinho entre sessões depende do usuário estar autorizado ou não:
Para usuários autorizados, o carrinho é vinculado a um usuário específico e é salvo entre as sessões, desde que as solicitações sejam enviadas em nome do mesmo usuário.
Para usuários não autorizados, salvar o carrinho depende se o cabeçalho
x-unauthorized-idé passado. Para salvar o carrinho de um usuário não autorizado entre sessões, passe o mesmox-unauthorized-idem toda solicitação. Essa opção só está disponível para a venda de chaves de jogo.
Você pode identificar o carrinho de duas maneiras: automaticamente pelo JWT do usuário ou por ID do carrinho (cart_id).
A gestão do carrinho está disponível tanto no lado do cliente quanto no lado do servidor.
No lado do servidor, você pode preencher o carrinho com itens, por exemplo, ao restaurar uma sessão de usuário. As seguintes ações estão disponíveis no lado do cliente:
- recuperar o carrinho do usuário atual ou um carrinho por ID
- preencher o carrinho
- atualizar itens no carrinho
- excluir itens do carrinho
Para comprar itens do carrinho, são usadas chamadas do cliente e do servidor para criação de pedidos.
O tempo de vida (TTL) do carrinho é de 72 horas por padrão. Se o conteúdo for alterado, por exemplo, quando um novo item é adicionado, o TTL é estendido.
Após um pagamento bem-sucedido, o carrinho não é esvaziado automaticamente. Para limpar o carrinho, use as chamadas de API do lado do cliente:
Excluir item do carrinho por ID do carrinho e Excluir item do carrinho atual — o carrinho é limpo ao excluir o último item dele.
Cenário de uso do carrinho:
Implemente uma interface de loja onde o usuário selecionará os itens.
Quando o usuário seleciona itens na loja, adicione-os ao carrinho, por exemplo, usando a chamada Preenchar carrinho com itens. Na matriz de itens, você deve passar os SKUs e a quantidade necessária dos itens.
Implemente a interface de visualização do carrinho. Quando o usuário navega ao carrinho, exiba seus conteúdos usando a chamada Obter carrinho do usuário atual. A resposta retornará informações sobre o peço final dos itens, incluindo descontos e promoções aplicadas.
Implemente a abertura da interface de pagamento para pagar pelo pedido. Por exemplo, você pode usar a chamada Criar pedido com todos os itens de um carrinho em particular. A resposta retorna um token para abrir a interface de pagamento.
Configure o rastreamento de status de pedidos, por exemplo, usando webhooks para receber dados sobre itens pagos com sucesso prontamente e concedê-los ao usuário.
Nota
Para implementar a venda de itens no jogo e online, consulte o guia de integração.
Ciclo de vida do pedido
Compreender o ciclo de vida do pedido ajuda a rastrear pedidos e a implementar a lógica pós-compra corretamente, ou seja, a entrega dos itens.
O pedido passa pelos seguintes status:
| Status | Descrição | Observações |
new | O pedido é criado. O sistema aguarda pela confirmação do pagamento. | As descrições dos status de transação podem ser encontrados na documentação Pay Station API. |
paid | O pedido é pago (a transação mudou para o status done), e o item pode ser concedido ao usuário. | O pedido permanece no status new até que o pagamento seja confirmado. |
done | O item é concedido ao usuário. | — |
canceled | O pagamento foi reembolsado. | O pedido muda para esse status quando o status da transação muda para refunded. |
expired | Criar um novo pedido para um item, código promocional ou promoção limitados move qualquer pedido não pago contendo o item para o status expired. Apenas o pedido mais recente pode ser pago. | Se um usuário tentar pagar por um pedido expirado, a interface de pagamento exibirá um erro 2002, e o pagamento falhará. |
Nota
Quando o pedido muda para o status expired enquanto o usuário conclui o pagamento, mas o pagamento é bem-sucedido, o pedido muda do status expired para paid. Isso só se aplica se o limite de compra para o item do pedido não será excedido pelo pagamento.
Itens gratuitos
Use calls from this section to grant free items to users.
Visão geral
Os limites de compra permitem restringir a quantidade de itens disponíveis para compra por um único usuário ou por todos os usuários. Você também pode configurar redefinições de limite agendadas.
Os limites são armazenados no lado da Xsolla e são configurados no nível de item individual na Conta de Distribuidor ou via o objeto limits nas seguintes chamadas de API:
As informações de limite são retornadas no objeto items.limits nas seguintes chamadas de API para recuperar o catálogo de itens:
- Obter lista de itens virtuais
- Obter lista de moedas virtuais
- Obter lista de pacotes de moedas virtuais
- Obter lista de conjuntos
- Obter lista de jogos
As chamadas de API na subseção Gestão do grupo Limites permitem que você recupere o estado atual dos limites e os atualize para um usuário específico — por exemplo, redefina o contador após a conclusão de uma missão ou ajuste manualmente a quantidade restante.
Para informações detalhadas sobre como configurar limites no catálogo, consulte a seção Limites de compra de itens.
Regiões comuns
As restrições regionais de vendas permitem gerenciar a disponibilidade de itens em países ou grupos de países específicos. Por exemplo, você pode vender um jogo apenas em determinados países devido a restrições de licenciamento.
As restrições são configuradas utilizando regiões. Cada região agrupa um ou mais países sob um único identificador region_id. Você pode vincular um item a uma ou mais regiões.
A disponibilidade de itens é determinada conforme segue:
- Se nenhuma região for especificada para o item, ele estará disponível para compra em todos os países.
- Se regiões forem especificadas para o item e o país do usuário estiver incluído em uma delas, o item estará disponível para esse usuário.
- Se regiões forem especificadas para o item e o país do usuário não estiver incluído em nenhuma delas, o item não estará disponível para esse usuário.
O país do usuário é informado no parâmetro country ao solicitar o catálogo por meio de chamadas de API na subseção Catalog. Se o parâmetro não for informado, o país será determinado com base no endereço IP do usuário.
A compatibilidade entre o país do usuário e as regiões do item é verificada em dois momentos: na solicitação do catálogo e na criação do pedido. Itens indisponíveis não são incluídos na resposta do catálogo, e pedidos contendo tais itens não serão criados.
Utilize chamadas de API do grupo Common regions para criar, atualizar e excluir regiões.
Fluxo de configuração de restrições regionais de venda:
- Crie uma região usando a chamada de API Criar região, especificando a lista de países. A resposta retorna um
region_idque é necessário na etapa seguinte. - Associe um item virtual à região informando o
region_idcorrespondente na matrizregionsao criar ou atualizar o item. - Exiba o catálogo para o usuário utilizando chamadas de API da subseção Catalog, como, por exemplo, a chamada Obter lista de itens virtuais. O país do usuário é determinado pelo parâmetro
countryou, caso este não seja fornecido, com base no endereço IP do usuário. Itens indisponíveis no país do usuário não são incluídos na resposta do catálogo. - Quando o usuário prosseguir para pagar um item ou o carrinho, crie um pedido:
- Se o item tiver sido adicionado ao carrinho — utilizando a chamada de API Criar pedido com todos os itens de um carrinho específico ou Criar pedido com todos os itens do carrinho atual.
- Para uma compra rápida de um único item — utilizando a chamada de API Criar pedido com item específico e passando o SKU do item.
A resposta contém um token para abrir a interface de pagamento.
A Xsolla verifica se o país do usuário foi incluído na região especificada do item. Se o país não tiver sido incluído na região do item, o pedido não poderá ser criado.
- Implemente a abertura da interface de pagamento para efetuar o pagamento do pedido.