Complete API Reference
Comprehensive documentation for all Gaming Panel API endpoints
Quick Navigation
Authentication
Shop & Inventory
Events & Rewards
Social Features
Stats & Management
IDCGames GamePanel API - Complete Reference
Overview
This is the complete API reference for the IDCGames GamePanel system. All endpoints are organized by functionality and include detailed request/response examples.
Base Configuration
- Base URL:
https://gamepanel.idcgames.com/api/v1
- Authentication: Bearer Token (OAuth2)
- Content-Type:
application/json
- Rate Limiting: 1000 requests per hour per token
Standard Response Structure
Successful Response
{
"success": true,
"data": {
// Endpoint-specific data
}
}
Error Response
{
"success": false,
"error": "Error description",
"error_code": "ERROR_CODE",
"validation_errors": {
"field_name": ["Error message"]
}
}
Authentication Endpoints
Third-Party Login
POST
/api/v1/auth/third-party/login
Authenticates a user through a third-party platform (Sandbox, IDC, Steam, Epic, Google Play, Apple Store, PlayStation, Nintendo) with standardized response format for NewtonSoft compatibility.
#### Request Body
{
"platform": "sandbox",
"token": "sandbox_token_12345",
"user_id": "test_user_12345",
"game_id": 3,
"gamepanel_secret_token": "gp_a4f1fe432345c4bd313912f32f1ad1990dc0b035758ff0c684928f76",
"username": "TestPlayer12345",
"profile": {
"test_mode": true,
"email": "test@example.com",
"country": "ES",
"avatar": "https://example.com/avatar.jpg",
"preferences": {
"language": "en",
"notifications": true
}
},
"details": "extended"
}
#### Parameters
platform
(required): Platform identifier (sandbox
, idc
, steam
, epic
, googleplay
, applestore
, playstation
, nintendo
)token
(required): Platform authentication tokenuser_id
(required): Platform user identifiergame_id
(required): Game identifiergamepanel_secret_token
(required): Game secret tokenusername
(optional): Display usernameprofile
(optional): Additional user profile datadetails
(optional): Response detail level (none
, basic
, extended
) - defaults to extended
#### Response (Standardized Format)
{
"success": true,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"refresh_token": "def50200a1b2c3d4e5f6...",
"expires_at": "2024-01-15T10:30:00.000000Z",
"refresh_expires_at": "2024-01-22T10:30:00.000000Z",
"session_id": 12345,
"user": {
"id": 52,
"username": "TestPlayer12345",
"platform": "sandbox",
"platform_user_id": "test_user_12345",
"game_id": 3,
"player_type": "regular",
"is_paying_player": true,
"total_spent": 25.50,
"last_purchase_at": "2024-01-10T15:30:00.000000Z",
"created_at": "2024-01-01T00:00:00.000000Z",
"game_currency": 1000,
"premium_currency": 50,
"xp": 2500,
"level": 5,
"rank_division": "Gold",
"rank_tier": 3,
"rank_points": 1500,
"progress": {
"keys_unlocked": 5,
"total_keys": 10,
"next_key_requirements": {
"xp_required": 500,
"level_required": 6
}
}
},
"rewards": {
"daily_rewards": {
"available": true,
"claimed": true,
"applied_automatically": true,
"message": "Daily reward claimed successfully!",
"reward": {
"type": "currency",
"amount": 100,
"currency_type": "game_currency"
},
"bonus_reward": {
"type": "item",
"item_id": 19,
"quantity": 1
},
"new_streak": 3,
"next_reward_day": "2024-01-16T00:00:00.000000Z",
"user_currencies": {
"game_currency": 1100,
"premium_currency": 50,
"xp": 2550
},
"reason": null,
"error": null
},
"battle_pass_rewards": {
"available": false,
"claimed": false,
"applied_automatically": false,
"message": "No active Battle Pass season",
"reward": null,
"bonus_reward": null,
"new_streak": null,
"next_reward_day": null,
"user_currencies": null,
"reason": "no_active_season",
"error": null
},
"welcome_gift": {
"available": false,
"claimed": true,
"applied_automatically": false,
"message": "Welcome gift already claimed",
"reward": null,
"bonus_reward": null,
"new_streak": null,
"next_reward_day": null,
"user_currencies": null,
"reason": "already_claimed",
"error": null
}
},
"game_data": {
"offers": [
{
"id": 1,
"name": "Special Weapon Pack",
"description": "Get 3 weapons at 50% off!",
"discount_percentage": 50,
"is_active": true,
"starts_at": "2024-01-01T00:00:00.000000Z",
"ends_at": "2024-01-31T23:59:59.000000Z"
}
],
"events": [
{
"id": 1,
"name": "Double XP Weekend",
"description": "Earn double XP for all activities",
"active": true,
"starts_at": "2024-01-15T00:00:00.000000Z",
"ends_at": "2024-01-17T23:59:59.000000Z"
}
],
"inventory": {
"items": [
{
"unique_key": "19_8_permanent",
"shop_object_id": 8,
"object_name": "AK-47",
"quantity": 1,
"level": 2,
"time_remaining": null,
"is_expired": false,
"can_upgrade": true
}
],
"stats": {
"total_items": 1,
"total_value": 1500,
"categories_count": 1
}
},
"clans": [
{
"id": 1,
"name": "Elite Warriors",
"description": "Top players only",
"role": "member",
"joined_at": "2024-01-05T10:00:00.000000Z"
}
],
"friends": [
{
"id": 25,
"username": "FriendPlayer",
"status": "online",
"last_seen": "2024-01-15T09:45:00.000000Z"
}
]
}
}
#### Response Levels
details: "none"
- Minimal response with null values for optional fieldsdetails: "basic"
- User data + rewards, empty game_datadetails: "extended"
- Complete response with all data#### Error Response
{
"success": false,
"error": "Validation failed",
"message": "Invalid request parameters",
"details": {
"platform": ["The platform field is required."],
"token": ["The token field is required."]
},
"user": null,
"rewards": null,
"game_data": null
}
Refresh Token
POST
/api/v1/auth/refresh
Renew access token using refresh token.
#### Request Body
{
"refresh_token": "def50200..."
}
Validate Token
POST
/api/v1/auth/validate
Validate access token.
#### Headers
Authorization: Bearer {access_token}
Logout
POST
/api/v1/auth/logout
Close user session.
#### Headers
Authorization: Bearer {access_token}
Shop System
Get Shop Items
GET
/api/v1/shop/objects
Get all available shop items organized by categories and subcategories with level information.
#### Headers
Authorization: Bearer {access_token}
#### Response
{
"success": true,
"shop": [
{
"category_id": 6,
"category_name": "Armas",
"description": "Armas y equipamiento de combate",
"subcategories": [
{
"subcategory_id": 11,
"subcategory_name": "Rifles",
"description": "Rifles de asalto y francotirador",
"objects": [
{
"id": 19,
"name": "AK-47",
"description": "Rifle de asalto",
"object_type": "weapon",
"category_id": 6,
"category_name": "Armas",
"subcategory_id": 11,
"subcategory_name": "Rifles",
"pricing": {
"soft_coin_cost": 100,
"hard_coin_cost": 0,
"game_currency_cost": 100,
"currency_type": "gold"
},
"content": {
"base_stats": {
"damage": 40,
"accuracy": 80,
"range": 350
}
},
"max_quantity": 999,
"is_active": true,
"duration_type": "permanent",
"duration_days": null,
"available_levels": [
{
"level": 1,
"name": "Nivel 1",
"description": "Nivel básico",
"experience_required": 0,
"required_materials": {},
"unlock_features": ["basic_attachments"],
"stats_bonus": {}
},
{
"level": 2,
"name": "Nivel 2",
"description": "Nivel mejorado",
"experience_required": 100,
"required_materials": {"cobre": 5},
"unlock_features": ["advanced_attachments", "skins"],
"stats_bonus": {"damage": 5, "accuracy": 5}
}
],
"max_level": 5,
"availability": {
"can_afford": true,
"user_has_item": true,
"user_quantity": 1,
"user_level": 2,
"can_upgrade": true
}
}
]
}
]
}
],
"user_currency": {
"soft_coins": 1000,
"hard_coins": 50,
"gold": 1000,
"premium": 50
}
}
Get Shop Categories
GET
/api/v1/shop/categories
Get shop categories with subcategories and objects.
#### Headers
Authorization: Bearer {access_token}
#### Response
{
"success": true,
"message": "CategorĂas obtenidas exitosamente",
"categories": [
{
"id": 6,
"name": "Armas",
"description": "Armas y equipamiento de combate",
"subcategories": [
{
"id": 11,
"name": "Rifles",
"description": "Rifles de asalto y francotirador",
"objects": [
{
"id": 19,
"name": "AK-47",
"description": "Rifle de asalto"
}
]
}
]
}
]
}
Buy Item
POST
/api/v1/user/inventory/buy-item
Purchase an item from the shop.
#### Headers
Authorization: Bearer {access_token}
#### Request Body
{
"shop_object_id": 8,
"shop_item_price_id": 8,
"quantity": 1,
"attributes": {
"level": 1,
"experience": 0
}
}
#### Response
{
"success": true,
"message": "Item purchased successfully",
"transaction": {
"id": 123,
"shop_object_id": 8,
"quantity": 1,
"cost_per_unit": 100,
"total_cost": 100,
"currency_type": "soft_coins",
"transaction_type": "purchase",
"source": "api",
"created_at": "2025-09-26T20:44:08.206511Z"
},
"new_balance": {
"soft_coins": 900,
"hard_coins": 50,
"gold": 900,
"premium": 50
},
"inventory": [
{
"shop_object_id": 8,
"quantity": 1,
"attributes": {
"level": 1,
"experience": 0
},
"shop_item_price_id": 8,
"acquired_at": "2025-09-26T20:44:08.206511Z",
"expires_at": null,
"equipped_on": null,
"is_consumable": 0,
"purchase_price": 100,
"purchase_currency": "game_currency",
"status": "active",
"shop_object": {
"id": 19,
"name": "AK-47",
"description": "Rifle de asalto",
"object_type": "weapon"
}
}
],
"inventory_by_categories": [
{
"category_id": 6,
"category_name": "Armas",
"subcategories": [
{
"subcategory_id": 11,
"subcategory_name": "Rifles",
"items": [
{
"unique_key": "19_8_permanent",
"shop_object_id": 8,
"object_name": "AK-47",
"object_description": "Rifle de asalto",
"object_type": "weapon",
"level": 1,
"quantity": 1,
"shop_item_price_id": 8,
"expires_at": null,
"acquired_at": "2025-09-26T20:44:08.206511Z",
"equipped_on": null,
"is_consumable": 0,
"purchase_price": 100,
"purchase_currency": "game_currency",
"status": "active",
"attributes": {
"level": 1,
"experience": 0
},
"time_remaining": 259200, // 3 dĂas en segundos
"is_expired": false,
"experience": 0,
"can_upgrade": true
}
]
}
]
}
]
}
Get Purchase History
GET
/api/v1/shop/purchases
Get user's purchase history.
Inventory System
Get User Inventory
GET
/api/v1/user/inventory
Get user's complete inventory with standardized format including categories, levels, and slots.
#### Headers
Authorization: Bearer {access_token}
#### Response
{
"success": true,
"inventory": [
{
"shop_object_id": 8,
"quantity": 1,
"attributes": {
"level": 2,
"experience": 150
},
"shop_item_price_id": 8,
"acquired_at": "2025-09-26T20:44:08.206511Z",
"expires_at": null,
"equipped_on": null,
"is_consumable": 0,
"purchase_price": 100,
"purchase_currency": "game_currency",
"status": "active",
"shop_object": {
"id": 19,
"name": "AK-47",
"description": "Rifle de asalto",
"object_type": "weapon"
}
}
],
"inventory_by_categories": [
{
"category_id": 6,
"category_name": "Armas",
"subcategories": [
{
"subcategory_id": 11,
"subcategory_name": "Rifles",
"items": [
{
"unique_key": "19_8_permanent",
"shop_object_id": 8,
"object_name": "AK-47",
"object_description": "Rifle de asalto",
"object_type": "weapon",
"level": 2,
"quantity": 1,
"shop_item_price_id": 8,
"expires_at": null,
"acquired_at": "2025-09-26T20:44:08.206511Z",
"equipped_on": null,
"is_consumable": 0,
"purchase_price": 100,
"purchase_currency": "game_currency",
"status": "active",
"attributes": {
"level": 2,
"experience": 150
},
"time_remaining": 259200, // 3 dĂas en segundos
"is_expired": false,
"experience": 150,
"can_upgrade": true
}
]
}
]
}
],
"stats": {
"total_items": 5,
"unique_items": 5,
"total_value": 500,
"category_stats": {
"principal": {
"count": 3,
"total_quantity": 3
},
"consumable": {
"count": 2,
"total_quantity": 2
}
}
},
"slots": [
{
"slot_id": 1,
"slot_name": "Primary Weapon",
"slot_type": "weapon",
"slot_order": 1,
"max_ranks": 3,
"remove_from_inventory": true,
"restrictions": {},
"is_active": true,
"ranks": [
{
"rank_id": 1,
"rank_position": 1,
"rank_name": "Rank 1",
"restrictions": {
"allowed_categories": [6],
"allowed_subcategories": [11, 12],
"allowed_object_types": [],
"custom_restrictions": {}
},
"compatibility": {
"accepts_all_categories": false,
"accepts_all_subcategories": false,
"accepts_all_object_types": true,
"restriction_summary": ["CategorĂas especĂficas", "SubcategorĂas especĂficas"]
},
"items": {
"shop_object_id": 8,
"object_name": "AK-47",
"object_description": "Rifle de asalto",
"object_type": "weapon",
"level": 2,
"quantity": 1,
"attributes": {
"level": 2,
"experience": 150
},
"metadata": {},
"is_active": true,
"assigned_at": "2025-09-26T20:44:08.206511Z",
"position": 1,
"category_info": {
"category_id": 6,
"category_name": "Armas",
"subcategory_id": 11,
"subcategory_name": "Rifles"
},
"stats": {
"damage": 45,
"accuracy": 85,
"range": 400
},
"can_upgrade": true
},
"is_empty": false,
"is_available": true,
"can_accept_items": true
}
],
"total_ranks": 3,
"empty_ranks": 2,
"filled_ranks": 1,
"compatible_items_count": 5
}
],
"consumables": []
}
Events & Daily Rewards
Get Events List (External)
GET
/api/v1/events
Get all available events for the game (external API).
Get User Events & Progress
GET
/api/v1/user/event-progress
Get user's active events with progress details.
#### Headers
Authorization: Bearer {access_token}
Claim Event Rewards
POST
/api/v1/user/event-rewards
Claim event rewards.
#### Headers
Authorization: Bearer {access_token}
Get Daily Rewards Info
GET
/api/v1/daily-rewards/info
Get daily rewards information (claim is automatic on login).
#### Headers
Authorization: Bearer {access_token}
Battle Pass
Get Complete Battle Pass Data
GET
/api/v1/battlepass/complete
Get complete battle pass data for UI: season info, all levels with rewards, all missions with user progress, and user progression status.
#### Headers
Authorization: Bearer {access_token}
#### Response
{
"success": true,
"data": {
"season": {
"id": 1,
"name": "Season 1",
"description": "First Battle Pass Season",
"start_date": "2025-01-01T00:00:00Z",
"end_date": "2025-03-31T23:59:59Z",
"is_active": true,
"max_level": 50
},
"levels": [
{
"id": 1,
"level": 1,
"rewards": {
"free": {
"game_currency": 100,
"premium_currency": 0,
"xp": 50,
"items": {}
},
"premium": {
"game_currency": 200,
"premium_currency": 10,
"xp": 100,
"items": {"1": 1}
}
},
"missions": [
{
"id": 1,
"title": "Kill 10 Enemies",
"description": "Eliminate 10 enemies in any game mode",
"user_progress": {
"is_completed": false,
"progress": 5,
"completed_at": null
}
}
],
"is_unlocked": true,
"is_claimed": false
}
],
"user_progress": {
"current_level": 1,
"has_premium": false,
"level_progress_percentage": 15.5,
"completed_missions": 0,
"total_missions": 25,
"claimed_levels": [],
"claimed_missions": []
}
}
}
Get Battle Pass Status (Simple)
GET
/api/v1/battlepass/user/status
Get simple battle pass status: active season, user progress, current/next level rewards.
Get Battle Pass Seasons
GET
/api/v1/battlepass/seasons
Get available battle pass seasons.
Get Battle Pass Levels
GET
/api/v1/battlepass/seasons/3/levels
Get battle pass levels for a specific season.
Get Battle Pass Missions
GET
/api/v1/battlepass/seasons/3/missions
Get battle pass missions for a specific season.
Get Battle Pass Daily Rewards Info
GET
/api/v1/battlepass-daily-rewards/info
Get battle pass daily rewards information (claim is automatic on login).
Game Data
Get Game Events
GET
/api/v1/events
Get active game events.
Get Offers
GET
/api/v1/offers
Get active offers.
#### Response
{
"success": true,
"data": [
{
"id": 1,
"identifier": "welcome_offer",
"title": "Welcome Offer",
"description": "Special offer for new players",
"image_url": "https://example.com/offer.jpg",
"player_type": "all",
"payer_type": "all",
"starts_at": "2025-01-01T00:00:00Z",
"ends_at": "2025-12-31T23:59:59Z",
"is_active": true
}
]
}
User Management
Change Nickname
POST
/api/v1/user/nickname/change
Change user nickname.
#### Headers
Authorization: Bearer {access_token}
#### Request Body
{
"nickname": "NewNickname123"
}
#### Response
{
"success": true,
"message": "Nickname changed successfully",
"data": {
"old_username": "OldNickname",
"new_username": "NewNickname123",
"game_user_id": 123,
"changed_at": "2025-01-15T10:30:00Z"
}
}
Friends and Clans
Get Friends List
GET
/api/v1/friends
Get user's friends list.
#### Headers
Authorization: Bearer {access_token}
Send Friend Request
POST
/api/v1/friends/request
Send friend request to another user.
#### Headers
Authorization: Bearer {access_token}
#### Request Body
{
"friend_user_id": "friend123"
}
Accept Friend Request
POST
/api/v1/friends/accept
Accept a friend request.
#### Headers
Authorization: Bearer {access_token}
#### Request Body
{
"friend_user_id": "friend123"
}
Remove Friend
DELETE
/api/v1/friends/remove?friend_user_id=friend123
Remove a friend from friends list.
#### Headers
Authorization: Bearer {access_token}
Get Clans List
GET
/api/v1/clans
Get available clans list.
#### Headers
Authorization: Bearer {access_token}
Create Clan
POST
/api/v1/clans/create
Create a new clan.
#### Headers
Authorization: Bearer {access_token}
#### Request Body
{
"name": "My Clan",
"description": "Best clan ever",
"max_members": 50
}
Join Clan
POST
/api/v1/clans/join
Join an existing clan.
#### Headers
Authorization: Bearer {access_token}
#### Request Body
{
"clan_id": 1
}
Leave Clan
POST
/api/v1/clans/leave
Leave current clan.
#### Headers
Authorization: Bearer {access_token}
Get Clan Members
GET
/api/v1/clans/1/members
Get clan members list.
#### Headers
Authorization: Bearer {access_token}
Get Clan Info
GET
/api/v1/clans/1
Get specific clan information.
#### Headers
Authorization: Bearer {access_token}
User Stats (From Game)
Get User Stats
GET
/api/v1/user/stats
Get user statistics from the game.
#### Headers
Authorization: Bearer {access_token}
#### Response
{
"success": true,
"data": {
"cumulative_stats": {
"kills": 150,
"deaths": 75,
"wins": 25,
"matches_played": 50,
"score": 15000,
"time_played": 3600
},
"daily_stats": {
"kills": 5,
"deaths": 2,
"wins": 1,
"score": 500
}
}
}
Submit Game Stats
POST
/api/v1/user/stats/submit
Submit game statistics after a match from the game client.
#### Headers
Authorization: Bearer {access_token}
#### Request Body
{
"session_stats": {
"kills": 5,
"deaths": 2,
"assists": 3,
"wins": 1,
"score": 1500,
"time_played": 300,
"headshots": 2,
"rounds_played": 1
},
"event_progress": {
"event_1": 10,
"event_2": 5
}
}
#### Response
{
"success": true,
"message": "Statistics processed successfully",
"cumulative_stats": {
"kills": 155,
"deaths": 77,
"wins": 26
},
"daily_stats": {
"kills": 5,
"deaths": 2,
"wins": 1
},
"event_updates": {
"event_1": {
"progress": 10,
"completed": false
}
},
"battlepass_updates": {
"missions_completed": 1,
"xp_gained": 50
}
}
Multiplayer Server Stats
Submit Batch Stats
POST
/api/v1/user/stats/submit-batch
Submit batch statistics from multiplayer game server (no authentication required - uses gamepanel_secret_token).
#### Request Body
{
"game_id": 3,
"gamepanel_secret_token": "gp_a4f1fe432345c4bd313912f32f1ad1990dc0b035758ff0c684928f76",
"players": [
{
"token": "player_token_1",
"session_stats": {
"kills": 15,
"deaths": 5,
"assists": 8,
"wins": 1,
"score": 1500
}
},
{
"token": "player_token_2",
"session_stats": {
"kills": 12,
"deaths": 7,
"assists": 6,
"wins": 0,
"score": 1200
}
}
],
"match_id": "match_12345",
"match_type": "competitive",
"map": "dust2",
"duration": 1800
}
Test Endpoints
API Test
GET
/api/v1/test/ping
Test endpoint to verify connectivity.
#### Response
{
"success": true,
"message": "API working correctly",
"timestamp": "2025-01-15T10:30:00Z"
}
Error Codes
| Code | Description |
|------|-------------|
|
NO_TOKEN
| No access token provided ||
INVALID_TOKEN
| Invalid or expired token ||
VALIDATION_ERROR
| Request validation failed ||
USERNAME_TAKEN
| Username already exists ||
INSUFFICIENT_FUNDS
| Not enough currency ||
ITEM_NOT_FOUND
| Item does not exist ||
ITEM_NOT_AVAILABLE
| Item not available for purchase ||
ALREADY_CLAIMED
| Reward already claimed ||
NO_ACTIVE_SEASON
| No active Battle Pass season ||
CLAN_NOT_FOUND
| Clan does not exist ||
FRIEND_NOT_FOUND
| Friend not found ||
RATE_LIMITED
| Too many requests |Rate Limiting
-
X-RateLimit-Limit
: Request limit-
X-RateLimit-Remaining
: Remaining requests-
X-RateLimit-Reset
: Reset timestampAuthentication Flow
access_token
and refresh_token
Authorization: Bearer {access_token}
headerPostman Collections
Three collections are available for testing:
Access them at:
https://gamepanel.idcgames.com/documentation/developer/postman-examples
Support
For technical support or questions about the API, please contact the development team.