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
Several access schemes — pick the one that matches your scenario:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Authorization: Bearer gg_live_xxxxxxxxxxxxxxxxxxxxPublic endpoints (catalog, search, categories, brands) work without a token. To request a gg_live_ key, email ceo@vvv.cash.
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. The Idempotency-Key header is REQUIRED (since GG-278) — without it you get 400 MISSING_IDEMPOTENCY_KEY.
{
"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-07-13T12: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-07-13T12:00:00Z",
"completed_at": "2026-07-13T12:00:05Z"
}
}Public API (Pub) — B2B
Paid B2B channel with an Authorization: Bearer gg_live_… key. Returns the “full-but-masked” catalog (supplier hidden) and lets you create orders. Base URL: https://gaming-goods.ru/api/v1/pub.
KEY="gg_live_xxxxxxxxxxxxxxxxxxxx"
# 1) Catalog list
curl -sS -H "Authorization: Bearer $KEY" \
"https://gaming-goods.ru/api/v1/pub/products?q=cyberpunk&page_size=1"
# 2) Product detail
curl -sS -H "Authorization: Bearer $KEY" \
"https://gaming-goods.ru/api/v1/pub/products/cyberpunk-2077-steam-key"
# 3) Create order (recipient_data for recipient products)
curl -sS -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"items":[{"gg_product_id":"a1b2c3d4-...","quantity":1}],"idempotency_key":"550e8400-e29b-41d4-a716-446655440000"}' \
"https://gaming-goods.ru/api/v1/pub/orders"
# 4) Order detail
curl -sS -H "Authorization: Bearer $KEY" \
"https://gaming-goods.ru/api/v1/pub/orders/e5f6a7b8-..."Pub: Catalog
Product list with filters and pagination. Requires Bearer gg_live_. provider_type is masked as "marketplace".
{
"products": [
{
"gg_product_id": "a1b2c3d4-...",
"slug": "cyberpunk-2077-steam-key",
"name": "Cyberpunk 2077",
"provider_type": "marketplace",
"price": 19.99,
"currency": "EUR",
"stock_quantity": 12,
"delivery_type": "playwallet",
"moderation_status": "approved",
"is_active": true,
"steam_app_id": 1091500,
"steam_url": "https://store.steampowered.com/app/1091500/"
}
],
"total": 1542,
"page": 1,
"page_size": 100
}Pub: Product detail
Full product card by slug. Requires Bearer gg_live_.
{ "product": { "gg_product_id": "...", "slug": "...", "steam_app_id": 1091500, "steam_url": "https://store.steampowered.com/app/1091500/" } }Pub: Create order
Creates an order from the catalog. recipient_data is required for recipient products (see section). idempotency_key is a body field (auto-generated if omitted; pass your own to dedupe retries).
{
"items": [{ "gg_product_id": "a1b2c3d4-...", "quantity": 1 }],
"idempotency_key": "550e8400-e29b-41d4-a716-446655440000",
"recipient_data": { "steam_login": "user123" }
}{ "data": { "id": "e5f6a7b8-...", "status": "pending_payment", "total": 1999, "currency": "EUR" } }Pub: Order detail
Order status and contents, including keys once fulfilled. Requires Bearer gg_live_.
{ "data": { "id": "e5f6a7b8-...", "status": "completed", "delivery": { "codes": ["XXXXX-XXXXX"] } } }Pub: Balance (in review)
Current partner balance. Endpoint is in review (GG-393) — confirm availability before use.
{ "data": { "balance": 125000, "currency": "EUR" } }recipient_data contract
Products delivered to a recipient require a recipient_data object when creating an order (POST /pub/orders and POST /buyer/checkout/virtual). Which field is needed is determined by the product’s delivery_type (the REST catalog does not expose a separate recipient_requirement — rely on delivery_type).
"recipient_data": {
"telegram_username": "@durov" // fragment
// "steam_login": "user123" // playwallet
// "recipient_email": "u@mail.com" // manual_gift
} Validation errors: recipient_required (field missing), recipient_invalid (bad format) — HTTP 422.
MCP channel (for AI agents)
The MCP server at https://gaming-goods.ru/mcp integrates with AI clients (Claude Desktop, ChatGPT Custom Connector, etc.) over OAuth 2.1. Transport is JSON-RPC over HTTP/SSE.
MCP tools: search, get_product, add_to_cart, view_cart, remove_from_cart, clear_cart, create_checkout_link. Scope mcp. The search/get_product tools return requires_recipient + recipient_schema.
Partner API
The Partner API is for third-party marketplace integrations. Authentication uses the X-API-Key header. To request a key, contact ceo@vvv.cash.
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. product_type=KINGUIN marks the supplier.
{
"items": [
{
"id": "a1b2c3d4-...",
"title": "Cyberpunk 2077 Steam Key",
"brand": "CD Projekt",
"category": "Game Keys",
"genres": ["RPG"],
"platform": "Steam",
"activation_type": "steam",
"region": "GLOBAL",
"price": 1999,
"currency": "EUR",
"quantity": 12,
"is_available": true,
"delivery_type": "EXTERNAL",
"product_type": "KINGUIN",
"images": ["https://gaming-goods.ru/..."],
"short_description": "",
"steam_app_id": 1091500,
"steam_url": "https://store.steampowered.com/app/1091500/"
}
],
"total": 1542,
"limit": 20,
"offset": 0
}Partner: Product detail
Full product details by UUID. steam_discount_percent, steam_app_id, steam_url, activation_instructions appear only when available (Kinguin with a verified match).
{
"id": "a1b2c3d4-...",
"title": "Cyberpunk 2077 Steam Key",
"brand": "CD Projekt",
"category": "Game Keys",
"genres": ["RPG"],
"platform": "Steam",
"activation_type": "steam",
"region": "GLOBAL",
"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" } ],
"steam_discount_percent": 42,
"steam_app_id": 1091500,
"steam_url": "https://store.steampowered.com/app/1091500/",
"activation_instructions": "..."
}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-07-13T12: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-07-13T12:00:00Z",
"updated_at": "2026-07-13T12:00:05Z"
}Rate Limiting
Limits depend on the access type. On exceeding, the server returns 429 Too Many Requests with a Retry-After header. Use exponential backoff.
Response headers for rate-limited endpoints (names are case-insensitive; lowercased over HTTP/2). X-RateLimit-Reset is the Unix time of the window reset.
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1784617860
X-Request-ID: 500c767f-6e64-4d35-b2bd-1c7698befae7Error format
All errors share the envelope { "error": { "code", "message" } }. On REST surfaces (public API, Public API, Partner API, Seller API) codes are UPPER_SNAKE (e.g. VALIDATION_ERROR). The one exception is the MCP OAuth 2.1 layer, where codes are lowercase per the OAuth spec (invalid_request, invalid_grant, invalid_token).
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Parameter 'page' must be a positive integer"
}
}Changelog
Last updated: 13 July 2026.
Get API access
Email us to request an API token and discuss your integration.