Gaming Goods — API Documentation
Integrate the Gaming Goods catalog into your applications. REST API with JSON responses, JWT authentication and a predictable error structure.
Base URL
https://gaming-goods.ru/api/v1All endpoints share this base URL. Responses are returned as JSON.
Authentication
The API uses JWT Bearer tokens. Pass the token in the Authorization header on every request. Tokens are issued after SMS authentication, or on request for integration scenarios.
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...Public endpoints (catalog, search, categories, brands) work without a token. Authentication is required to create and view orders.
Product catalog
Returns a paginated list of products with optional filters.
{
"data": {
"products": [
{
"id": "a1b2c3d4-...",
"name": "Cyberpunk 2077",
"slug": "cyberpunk-2077-steam-key",
"category": "Steam",
"brand": "CD Projekt",
"price": 19.99,
"currency": "EUR",
"stock_quantity": 12,
"image_url": "https://gaming-goods.ru/...",
"is_active": true
}
],
"total": 1542,
"page": 1,
"page_size": 20
}
}Product detail
Returns full details of a single product by slug.
{
"data": {
"id": "a1b2c3d4-...",
"name": "Cyberpunk 2077",
"slug": "cyberpunk-2077-steam-key",
"category": "Steam",
"brand": "CD Projekt",
"description": "Open-world action-adventure...",
"price": 19.99,
"currency": "EUR",
"stock_quantity": 12,
"image_url": "https://gaming-goods.ru/...",
"is_active": true,
"meta": { "activation_details": "..." }
}
}Search
Full-text search across the product catalog.
{
"data": {
"products": [
{
"id": "a1b2c3d4-...",
"name": "Cyberpunk 2077",
"slug": "cyberpunk-2077-steam-key",
"price": 19.99,
"stock_quantity": 12,
"is_active": true
}
],
"total": 3,
"page": 1,
"page_size": 20
}
}Categories
Returns all categories with the number of products in each.
{
"data": [
{ "name": "Steam", "product_count": 842 },
{ "name": "Xbox", "product_count": 215 },
{ "name": "PlayStation", "product_count": 187 },
{ "name": "Nintendo", "product_count": 94 }
]
}Brands
Returns all brands with the number of products.
{
"data": [
{ "name": "Microsoft", "product_count": 312 },
{ "name": "Electronic Arts", "product_count": 198 },
{ "name": "Ubisoft", "product_count": 156 }
]
}Create order
Creates a new order. Authentication required. Use the Idempotency-Key header to avoid duplicate orders.
{
"items": [
{
"product_id": "a1b2c3d4-...",
"quantity": 1
}
],
"payment_method": "balance",
"promo_code": "SALE10"
}{
"data": {
"id": "e5f6a7b8-...",
"status": "pending_payment",
"items": [
{
"product_id": "a1b2c3d4-...",
"product_name": "Cyberpunk 2077",
"price": 1999,
"quantity": 1
}
],
"total": 1799,
"currency": "EUR",
"payment_url": "https://...",
"created_at": "2026-03-14T12:00:00Z"
}
}Order status
Returns order details including activation keys (after payment). Authentication required.
{
"data": {
"id": "e5f6a7b8-...",
"status": "completed",
"items": [
{
"product_id": "a1b2c3d4-...",
"product_name": "Cyberpunk 2077",
"price": 1999,
"quantity": 1,
"keys": ["XXXXX-XXXXX-XXXXX-XXXXX"]
}
],
"total": 1999,
"currency": "EUR",
"created_at": "2026-03-14T12:00:00Z",
"completed_at": "2026-03-14T12:00:05Z"
}
}Partner API
The Partner API is for third-party marketplace integrations. Authentication uses the X-API-Key header. To request a key, contact business@gaming-goods.com.
https://gaming-goods.ru/api/partner/v1Partner: Brands
Returns the list of brands with the number of available products.
{
"items": [
{ "brand": "Steam", "product_count": 842 },
{ "brand": "Xbox", "product_count": 215 }
],
"limit": 20,
"offset": 0,
"total": 156
}Partner: Brand categories
Returns product categories for the given brand.
{
"brand": "Steam",
"categories": [
{ "category": "Game Keys", "product_count": 650 },
{ "category": "Gift Card", "product_count": 42 }
]
}Partner: Product catalog
Returns paginated products. Prices are in euro cents.
{
"items": [
{
"id": "a1b2c3d4-...",
"title": "Cyberpunk 2077 Steam Key",
"brand": "CD Projekt",
"category": "Game Keys",
"price": 1999,
"currency": "EUR",
"quantity": 12,
"is_available": true,
"delivery_type": "EXTERNAL",
"product_type": "KINGUIN",
"images": ["https://gaming-goods.ru/..."],
"short_description": ""
}
],
"total": 1542,
"limit": 20,
"offset": 0
}Partner: Product detail
Full product details by UUID.
{
"id": "a1b2c3d4-...",
"title": "Cyberpunk 2077 Steam Key",
"brand": "CD Projekt",
"category": "Game Keys",
"price": 1999,
"currency": "EUR",
"quantity": 12,
"is_available": true,
"delivery_type": "EXTERNAL",
"product_type": "KINGUIN",
"images": ["https://gaming-goods.ru/..."],
"description": "Open-world action-adventure...",
"short_description": "",
"specifications": [
{ "key": "platform", "value": "Steam" }
]
}Partner: Checkout
Creates an order. Source: "cart" (from the cart) or "lines" (products in the request body). Requires X-API-Key.
// From cart:
{ "source": "cart" }
// Or with explicit line items:
{
"source": "lines",
"lines": [
{ "product_id": "a1b2c3d4-...", "quantity": 1 }
]
}{
"orders": [
{
"id": "e5f6a7b8-...",
"status": "created",
"total": 1999,
"currency": "EUR"
}
]
}Partner: Order list
Returns the partner's paginated order list. Requires X-API-Key.
{
"items": [
{
"id": "e5f6a7b8-...",
"status": "completed",
"total": 1999,
"currency": "EUR",
"created_at": "2026-03-14T12:00:00Z"
}
],
"limit": 20,
"offset": 0,
"total": 47
}Partner: Order detail
Order details. Activation keys are available in delivery.codes once fulfilled. Requires X-API-Key.
{
"id": "e5f6a7b8-...",
"buyer_id": "c3d4e5f6-...",
"status": "completed",
"items": [
{
"product_id": "a1b2c3d4-...",
"title": "Cyberpunk 2077 Steam Key",
"unit_price": 1999,
"quantity": 1
}
],
"amounts": {
"buyer_total": 1999,
"platform_fee": 0
},
"payment": {
"method": "balance",
"state": "paid"
},
"delivery": {
"type": "EXTERNAL",
"codes": ["XXXXX-XXXXX-XXXXX"]
},
"created_at": "2026-03-14T12:00:00Z",
"updated_at": "2026-03-14T12:00:05Z"
}Rate Limiting
The API is throttled to 100 requests per minute per IP address. When the limit is exceeded the server returns 429 Too Many Requests. Use exponential backoff when retrying.
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1710403200Error format
All errors share the same shape. The code field is a machine-readable identifier; message is a human-readable description.
{
"error": {
"code": "invalid_request",
"message": "Parameter 'page' must be a positive integer"
}
}Get API access
Email us to request an API token and discuss your integration.