API Documentation
The API is the game. Build your own client, configure strategies, and compete through HTTP requests.
New to APIs?
An API (Application Programming Interface) is how programs talk to each other over the internet.
Instead of clicking buttons in a browser, you send HTTP requests (like GET,
POST) to URLs and receive
JSON responses — structured data your code can read.
In this game, every action is an API call. You'll use a tool like
curl, Postman, or your own code
to register, build teams, and battle other players. A JWT token is like a temporary password — you get one when you log in
and include it with every request so the server knows who you are.
Don't worry about memorizing endpoints. Every response includes _links
that tell you where to go next — just follow them.
Quick Start
Go from zero to your first battle in 6 API calls.
Register
POST /api/v1/auth/register
Create an account with username, email, and password. Get your JWT token.
Browse Units
GET /api/v1/player/roster/available
Explore the unit shop. Five classes, each with unique abilities.
Unlock Units
POST /api/v1/player/roster/unlock
Spend your starting 1000 currency to recruit combatants.
Build a Team
POST /api/v1/team/configure
Assemble up to 5 units with a declarative battle strategy.
Enter Battle
POST /api/v1/battle/queue
Queue for matchmaking. The system pairs you by API rating.
Check Results
GET /api/v1/battle/results/{id}
Get the full turn-by-turn combat log and rewards.
Authentication
Most endpoints require a JWT Bearer token. Here's how it works:
Register or Login
POST to /api/v1/auth/register or /api/v1/auth/login
Save Your Token
The response includes a JWT token valid for 60 minutes.
Include in All Requests
Add the header Authorization: Bearer <token>
Refresh Before Expiry
POST to /api/v1/auth/refresh for a new token.
# Register
curl -X POST /api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{"username":"ShadowBlade","email":"me@example.com","password":"str0ngP@ss"}'
# Use the returned token
curl /api/v1/player/profile \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Following the Links
Every response includes _links — related endpoints you can follow without memorizing URLs.
Self-Discoverable
After a battle, the result links to the replay, both players' profiles, and a shortcut to queue again. No docs lookup required.
Navigate Naturally
Your profile links to your roster, teams, achievements, and the leaderboard. Each team links to the battle queue. Just follow the chain.
Method Included
Each link includes method (GET, POST, etc.) so your client knows exactly how to call it.
{
"battleId": "f47ac10b-...",
"winnerId": "a1b2c3d4-...",
"rewards": { "currency": 150, "ratingChange": 24 },
"_links": {
"self": { "href": "/api/v1/battle/results/f47ac...", "method": "GET" },
"replay": { "href": "/api/v1/replays/f47ac...", "method": "GET" },
"queue_again": { "href": "/api/v1/battle/queue", "method": "POST" }
}
}
What's Next After Your First Battle?
You've got the basics. Here's where the game really opens up.
Daily Challenges
Complete daily objectives for bonus gold and XP. New challenges every 24 hours.
GET /api/v1/challenges/daily
Join a Guild
Team up with other players to tackle cooperative boss raids and earn shared rewards.
POST /api/v1/guild/create
Unit Mastery
The more you battle with a unit, the stronger your bond. Track mastery across all classes.
GET /api/v1/mastery/progress
Climb the Ranks
Climb the API leaderboard from Rubber Duck to "I Use Arch btw." Can you reach the top?
GET /api/v1/leaderboard
Endpoints
Auth
Player registration, login, and token management. Your journey begins here.
POST
/api/v1/auth/register
Beginner
Public
expand_more
Register a new player account.
Creates a new player with 1000 starting currency and an empty unit roster. Returns a JWT token you can use immediately to start building your army. Usernames must be unique and between 3-50 characters. Passwords require at least 8 characters.
Responses
201
Account created. Contains your player ID and JWT token.
400
Validation failed (e.g., password too short).
409
Username or email already taken.
Examples
{
"username": "DragonSlayer42",
"email": "player@example.com",
"password": "SecurePass123!"
}
{
"playerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"username": "DragonSlayer42",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresAt": "2025-06-15T15:30:00Z"
}
POST
/api/v1/auth/login
Beginner
Public
expand_more
Authenticate and receive a JWT token.
Returns a JWT Bearer token valid for 60 minutes. Include it in the Authorization header of all subsequent requests as `Bearer <token>`.
Responses
200
Authentication successful. Contains player ID, token, and expiration.
401
Invalid username or password.
Examples
{
"username": "DragonSlayer42",
"password": "SecurePass123!"
}
{
"playerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"username": "DragonSlayer42",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresAt": "2025-06-15T16:30:00Z"
}
POST
/api/v1/auth/refresh
Beginner
Public
expand_more
Refresh an expiring JWT token.
Exchange your current valid token for a fresh one with a new expiration. Call this before your token expires to maintain an active session without re-entering credentials.
Responses
200
New token issued.
401
Current token is invalid or already expired.
Player
View your profile, manage your unit roster, and unlock new combatants.
GET
/api/v1/player/profile
Beginner
Public
expand_more
Get your player profile.
Returns your account details including level, currency balance, API rating, and counts of owned units and configured teams.
Responses
200
Player profile with current stats.
401
Unauthorized
404
Player not found.
GET
/api/v1/player/roster
Beginner
Public
expand_more
List all units in your roster.
Returns every unit you own, including their stats, class, and abilities. These are the combatants available for team composition.
Responses
200
Array of owned units with full ability details.
POST
/api/v1/player/roster/unlock
Beginner
Public
expand_more
Unlock a new unit from the template roster.
Spend in-game currency to add a template unit to your roster. Each unit can only be unlocked once. Check available units and costs at GET /api/v1/player/roster/available.
Responses
201
Unit unlocked and added to your roster.
400
Insufficient currency or unit already owned.
Examples
{
"templateUnitId": "b7e4f2a1-9c38-4d56-a1e2-3f4b5c6d7e8f"
}
{
"id": "d4c3b2a1-8f7e-6d5c-4b3a-2e1f0a9b8c7d",
"name": "Iron Vanguard",
"class": "Warrior",
"health": 120,
"attack": 25,
"defense": 30,
"speed": 10,
"currencyRemaining": 700
}
GET
/api/v1/player/roster/available
Beginner
Public
expand_more
Browse the unit shop.
Lists all template units available for purchase, with stats, class, abilities, and unlock cost. Units you already own are excluded.
Responses
200
Array of template units available for unlock.
GET
/api/v1/player/achievements
Beginner
Public
expand_more
Get your achievements.
Returns all achievements with your progress toward each one. Secret achievements are hidden until unlocked.
Responses
200
Array of achievements with progress.
GET
/api/v1/player/notifications/count
Public
expand_more
Get your unread notification count.
Responses
200
Unread count.
GET
/api/v1/player/notifications
Public
expand_more
Get your notifications.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| page | Query | integer | Page number (default 1). (default: 1) |
| unreadOnly | Query | boolean | Filter to unread only (default false). |
Responses
200
Paginated notifications.
POST
/api/v1/player/notifications/{notificationId}/read
Public
expand_more
Mark a notification as read.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| notificationId * | Path | string | Notification ID. |
Responses
204
Notification marked as read.
POST
/api/v1/player/notifications/read-all
Public
expand_more
Mark all notifications as read.
Responses
204
All notifications marked as read.
GET
/api/v1/player/notifications/preferences
Public
expand_more
Get your notification preferences.
Responses
200
Current notification preferences.
PUT
/api/v1/player/notifications/preferences
Public
expand_more
Update your notification preferences.
Responses
204
Preferences updated.
GET
/api/v1/player/notifications/digest
Beginner
Public
expand_more
Get notification digest (summary grouped by category).
Returns a compact digest of all unread notifications grouped by category, with counts and the 10 most recent highlights. Use this for a quick status check instead of paginating through all notifications.
Responses
200
Notification digest with category counts and highlights.
Team
Assemble squads of up to 5 units, assign battle strategies, and prepare for war.
POST
/api/v1/team/configure
Intermediate
Public
expand_more
Create a new team.
Assemble a squad of 1-5 units from your roster and optionally assign a battle strategy. Teams are your entry ticket to battle — you cannot queue without one. The strategy object controls how your units behave in combat: formation, target priority, and conditional ability usage. If omitted, units use default AI behavior.
Responses
201
Team created with full unit details and strategy.
400
Invalid team size, missing units, or units not in your roster.
Examples
{
"name": "Alpha Strike Force",
"unitIds": [
"d4c3b2a1-8f7e-6d5c-4b3a-2e1f0a9b8c7d",
"e5d4c3b2-9a8f-7e6d-5c4b-3a2e1f0a9b8c",
"f6e5d4c3-ab9a-8f7e-6d5c-4b3a2e1f0a9b"
],
"strategy": {
"formation": "defensive",
"targetPriority": "weakest",
"abilityRules": [
{
"condition": "allyHpBelow",
"threshold": 30,
"action": "useHeal"
}
]
}
}
{
"id": "c8a7b6d5-4e3f-2a1b-9c8d-7e6f5a4b3c2d",
"name": "Alpha Strike Force",
"units": [
{
"id": "d4c3b2a1-8f7e-6d5c-4b3a-2e1f0a9b8c7d",
"name": "Iron Vanguard",
"class": "Warrior",
"level": 1,
"health": 120,
"attack": 25,
"defense": 30,
"speed": 10
}
],
"strategy": {
"formation": "defensive",
"targetPriority": "weakest"
},
"createdAt": "2025-06-15T14:30:00Z",
"updatedAt": "2025-06-15T14:30:00Z"
}
GET
/api/v1/team/{teamId}
Beginner
Public
expand_more
Get a specific team by ID.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| teamId * | Path | string | The unique team identifier. |
Responses
200
Team details with units and strategy.
404
Team not found or does not belong to you.
PUT
/api/v1/team/{teamId}
Intermediate
Public
expand_more
Update an existing team.
Replace the team's name, unit composition, and/or strategy. Send the complete desired state — this is a full replacement, not a partial update.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| teamId * | Path | string | The team to update. |
Responses
200
Updated team details.
400
Invalid configuration.
404
Team not found or does not belong to you.
DELETE
/api/v1/team/{teamId}
Beginner
Public
expand_more
Delete a team.
Permanently removes a team configuration. The units themselves remain in your roster.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| teamId * | Path | string | The team to delete. |
Responses
204
Team deleted.
404
Team not found or does not belong to you.
GET
/api/v1/team/list
Beginner
Public
expand_more
List all your teams.
Returns every team you have configured, each with full unit details and strategy.
Responses
200
Array of all your teams.
Battle
Enter the arena. Queue for matches, track ongoing battles, and review detailed results.
POST
/api/v1/battle/queue
Intermediate
Public
expand_more
Enter the battle queue.
Submit a team to the matchmaking queue. The system pairs you with an opponent of similar rating. Battles resolve asynchronously — poll the status endpoint, then fetch results. Flow: Queue → Poll status → Get results.
Responses
201
Queued successfully. Poll the returned battle ID for status updates.
400
Team not found, already in queue, or daily battle limit reached.
Examples
{
"teamId": "a1b2c3d4-5678-9abc-def0-1234567890ab",
"mode": "ranked"
}
{
"battleId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "Queued",
"queuedAt": "2026-02-11T14:30:00Z",
"estimatedWaitSeconds": 12
}
GET
/api/v1/battle/status/{battleId}
Beginner
Public
expand_more
Check the status of a battle.
Poll this endpoint to track your battle from queue to completion. Status progresses: Queued → InProgress → Completed.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| battleId * | Path | string | The battle to check. |
Responses
200
Current battle status with timing information.
404
Battle not found.
GET
/api/v1/battle/results/{battleId}
Beginner
Public
expand_more
Get detailed results of a completed battle.
Returns the full battle outcome: winner, turn count, a turn-by-turn combat log, and rewards earned. The battle log contains every action taken by every unit on every turn — perfect for analyzing your strategy's effectiveness.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| battleId * | Path | string | The completed battle. |
Responses
200
Full battle results with combat log and rewards.
404
Battle not found or not yet completed.
GET
/api/v1/battle/history
Beginner
Public
expand_more
Get your recent battle history.
Returns your past battles in reverse chronological order with pagination support.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| limit | Query | integer | Maximum battles to return (default 20). (default: 20) |
| offset | Query | integer | Number of battles to skip for pagination (default 0). (default: 0) |
Responses
200
Array of battle results.
Leaderboard
See who dominates the rankings. Global leaderboards sorted by API (Arena Power Index) rating.
GET
/api/v1/leaderboard
Beginner
Public
expand_more
Get the global leaderboard.
Returns the top players ranked by API (Arena Power Index) rating with win/loss statistics.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| limit | Query | integer | Number of top players to return (default 100). (default: 100) |
Responses
200
Ranked array of top players with stats.
GET
/api/v1/leaderboard/player/{playerId}
Beginner
Public
expand_more
Get a specific player's ranking.
Look up any player's global rank, rating, and battle statistics.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| playerId * | Path | string | The player to look up. |
Responses
200
Player's rank, rating, and combat statistics.
404
Player not found.
Strategy Marketplace
Browse, upload, purchase, and rate community-created battle strategies.
GET
/api/v1/strategies/browse
Beginner
Public
expand_more
Browse the strategy marketplace.
Explore community-created battle strategies. No authentication required. Sort options: "popular" (most downloaded), "rating" (highest rated), "newest" (most recent). Each strategy shows download count, average rating, win rate, and effectiveness multiplier.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| sortBy | Query | string | Sort order: popular, rating, or newest. Default: popular. (default: popular) |
| limit | Query | integer | Results per page (default 20). (default: 20) |
| offset | Query | integer | Pagination offset (default 0). (default: 0) |
Responses
200
Array of marketplace strategy listings.
Examples
GET /api/v1/strategies/browse?sortBy=rating&limit=5&offset=0
[
{
"strategyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Blitz Rush Alpha",
"creatorName": "TacticalMind",
"price": 150,
"downloadCount": 342,
"averageRating": 4.7,
"winRate": 68.5,
"effectivenessMultiplier": 1.15
}
]
POST
/api/v1/strategies/upload
Advanced
Public
expand_more
Publish a strategy to the marketplace.
Share your battle strategy with the community. Set a price in currency (0 for free). You earn currency each time another player purchases your strategy.
Responses
201
Strategy published to the marketplace.
400
Invalid strategy configuration or missing required fields.
Examples
{
"name": "Defensive Turtle",
"description": "Tanky frontline with healer support",
"strategyJson": "{\"formation\":\"defensive\",\"priority\":\"survive\"}",
"price": 0
}
{
"strategyId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"name": "Defensive Turtle",
"description": "Tanky frontline with healer support",
"price": 0,
"createdAt": "2026-02-11T14:30:00Z"
}
POST
/api/v1/strategies/{strategyId}/download
Intermediate
Public
expand_more
Purchase and download a strategy.
Spend currency to acquire a marketplace strategy. The full strategy JSON is returned and can be used directly in your team configuration.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| strategyId * | Path | string | The strategy to purchase. |
Responses
200
Strategy details including the full JSON configuration.
400
Insufficient currency.
404
Strategy not found.
POST
/api/v1/strategies/{strategyId}/rate
Beginner
Public
expand_more
Rate a marketplace strategy.
Submit a 1-5 star rating with optional comment. You can only rate strategies you have downloaded.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| strategyId * | Path | string | The strategy to rate. |
Responses
200
Rating submitted.
404
Strategy not found.
Guild
Create and manage guilds. Invite members, assign roles, coordinate via chat, and share strategies.
POST
/api/v1/guild/create
Intermediate
Public
expand_more
Create a new guild.
Founds a new guild with you as the leader. Requires Premium tier or higher. Guild names and tags must be unique. Tags are automatically uppercased. You cannot create a guild if you're already in one.
Responses
201
Guild created. You are now the leader.
400
Already in a guild, name/tag taken, or insufficient tier.
Examples
{
"name": "Shadow Wolves",
"tag": "SWLF",
"description": "Elite PvP guild focused on ranked battles"
}
{
"guildId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Shadow Wolves",
"tag": "SWLF",
"description": "Elite PvP guild focused on ranked battles",
"leaderName": "YourUsername",
"level": 1,
"memberCount": 1,
"maxMembers": 20,
"createdAt": "2026-02-11T14:00:00Z"
}
DELETE
/api/v1/guild/{guildId}
Intermediate
Public
expand_more
Delete your guild.
Permanently deletes the guild and removes all members. Only the guild leader can perform this action. This action is irreversible.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | The guild to delete. |
Responses
204
Guild deleted.
400
You are not the leader.
404
Guild not found.
GET
/api/v1/guild/{guildId}
Beginner
Public
expand_more
Get guild details.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | The guild to view. |
Responses
200
Guild info with member count and level.
404
Guild not found.
GET
/api/v1/guild/mine
Beginner
Public
expand_more
Get your current guild.
Returns guild details for the guild you currently belong to.
Responses
200
Your guild info.
404
You are not in a guild.
GET
/api/v1/guild/{guildId}/members
Beginner
Public
expand_more
List guild members.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | The guild to view members of. |
Responses
200
Array of guild members with roles and contribution points.
404
Guild not found.
POST
/api/v1/guild/{guildId}/invite
Intermediate
Public
expand_more
Invite a player to your guild.
Send a guild invitation to another player by username. Requires Officer or Leader role. Invites expire after 7 days. The target player must not already be in a guild.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | Your guild ID. |
Responses
201
Invite sent.
400
Player already in a guild, already invited, or insufficient permissions.
404
Player not found.
Examples
{
"username": "EliteWarrior42"
}
{
"inviteId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"guildId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"guildName": "Shadow Wolves",
"guildTag": "SWLF",
"invitedByUsername": "YourUsername",
"status": "Pending",
"createdAt": "2026-02-11T14:30:00Z",
"expiresAt": "2026-02-18T14:30:00Z"
}
GET
/api/v1/guild/invites
Beginner
Public
expand_more
View your pending guild invites.
Responses
200
Array of pending invites.
POST
/api/v1/guild/invites/{inviteId}/accept
Beginner
Public
expand_more
Accept a guild invite.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| inviteId * | Path | string | The invite to accept. |
Responses
200
Joined the guild.
400
Invite expired, already in a guild, or guild is full.
404
Invite not found.
POST
/api/v1/guild/invites/{inviteId}/decline
Beginner
Public
expand_more
Decline a guild invite.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| inviteId * | Path | string | The invite to decline. |
Responses
200
Invite declined.
400
Invite already responded to.
404
Invite not found.
POST
/api/v1/guild/{guildId}/kick
Intermediate
Public
expand_more
Kick a member from the guild.
Remove a player from your guild. Requires Leader role. You cannot kick members with equal or higher rank than yourself.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | Your guild ID. |
Responses
204
Member kicked.
400
Insufficient permissions or cannot kick higher rank.
404
Guild or target member not found.
POST
/api/v1/guild/{guildId}/promote
Intermediate
Public
expand_more
Promote or demote a guild member.
Change a member's role. Only the guild leader can promote/demote. Promoting to Leader transfers guild ownership — you become an Officer. Valid roles: Member, Officer, Leader.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | Your guild ID. |
Responses
200
Member role updated.
400
Invalid role or insufficient permissions.
404
Guild or target member not found.
Examples
{
"playerId": "d4c3b2a1-8f7e-6d5c-4b3a-2e1f0a9b8c7d",
"newRole": "Officer"
}
{
"message": "Player promoted to Officer."
}
POST
/api/v1/guild/leave
Beginner
Public
expand_more
Leave your current guild.
Voluntarily leave the guild you belong to. Guild leaders cannot leave — transfer leadership first or delete the guild.
Responses
204
You have left the guild.
400
Not in a guild, or you are the leader.
GET
/api/v1/guild/{guildId}/treasury
Intermediate
Public
expand_more
View guild treasury and available upgrades.
Shows the guild's gold balance, current upgrade levels, and what upgrades can be purchased.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | The guild to view treasury of. |
Responses
200
Treasury balance with upgrade options.
404
Guild not found.
POST
/api/v1/guild/{guildId}/treasury/spend
Intermediate
Public
expand_more
Purchase a guild upgrade from the treasury.
Spend treasury gold on permanent guild upgrades. Only the guild leader can make purchases. Available upgrades: max_members_30, max_members_50, gold_bonus_10, gold_bonus_20, raid_attempts_4, raid_attempts_5.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | Your guild ID. |
Responses
200
Upgrade purchased. New treasury state returned.
400
Insufficient funds, already purchased, or not the leader.
404
Guild or upgrade not found.
Examples
{
"upgradeId": "gold_bonus_10"
}
{
"balance": 20000,
"goldBonusPercent": 10,
"maxRaidAttempts": 3,
"maxMembers": 20
}
POST
/api/v1/guild/{guildId}/treasury/deposit
Beginner
Public
expand_more
Deposit personal gold into the guild treasury.
Transfer gold from your personal balance to the guild treasury. This increases your contribution points. Any guild member can deposit.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | Your guild ID. |
Responses
200
Deposit successful. New balances returned.
400
Insufficient personal gold or not a member.
404
Guild not found.
GET
/api/v1/guild/{guildId}/chat
Beginner
Public
expand_more
Get guild chat messages.
Returns recent chat messages in chronological order. Supports cursor-based pagination using the `before` parameter to load older messages.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | The guild chat to read. |
| limit | Query | integer | Maximum messages to return (default 50, max 100). (default: 50) |
| before | Query | string | Message ID cursor — returns messages older than this one. |
Responses
200
Array of chat messages.
POST
/api/v1/guild/{guildId}/chat
Beginner
Public
expand_more
Post a message to guild chat.
Send a text message to your guild's chat channel. Messages are limited to 500 characters. You must be a member of the guild.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | Your guild ID. |
Responses
201
Message posted.
400
Empty message, too long, or not a guild member.
GET
/api/v1/guild/{guildId}/strategies
Beginner
Public
expand_more
List guild strategies.
View all battle strategies shared in the guild library. Strategies are sorted by usage count.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | The guild to view strategies of. |
Responses
200
Array of guild strategies.
POST
/api/v1/guild/{guildId}/strategies
Intermediate
Public
expand_more
Publish a strategy to the guild library.
Share a battle strategy with your guild. Requires Officer or Leader role.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | Your guild ID. |
Responses
201
Strategy published.
400
Insufficient permissions or invalid data.
PUT
/api/v1/guild/{guildId}/strategies/{strategyId}
Intermediate
Public
expand_more
Update a guild strategy.
Modify a strategy in the guild library. Only the original creator or the guild leader can update.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | Your guild ID. |
| strategyId * | Path | string | The strategy to update. |
Responses
200
Strategy updated.
400
Insufficient permissions.
404
Strategy not found.
DELETE
/api/v1/guild/{guildId}/strategies/{strategyId}
Intermediate
Public
expand_more
Delete a guild strategy.
Remove a strategy from the guild library. Only the original creator or guild leader can delete.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| guildId * | Path | string | Your guild ID. |
| strategyId * | Path | string | The strategy to delete. |
Responses
204
Strategy deleted.
400
Insufficient permissions.
404
Strategy not found.
Guild Boss
Cooperative raid encounters. Rally your guild to defeat powerful bosses for shared rewards.
GET
/api/v1/guild/boss/current
Intermediate
Public
expand_more
Get your guild's current boss encounter.
Returns the active raid boss including remaining HP, expiration time, and rewards. Bosses spawn periodically and must be defeated before they expire. You must be a member of a guild to access boss encounters.
Responses
200
Active boss details with HP, rewards, and expiration.
404
Not in a guild, or no active boss encounter.
Examples
{
"bossId": "b0a1c2d3-e4f5-6789-0abc-def123456789",
"name": "Shadow Dragon Kaelthos",
"description": "A fearsome dragon that deals AoE fire damage",
"maxHp": 50000,
"currentHp": 32150,
"expiresAt": "2026-02-12T18:00:00Z",
"isDefeated": false,
"rewardCurrency": 1000,
"rewardExperience": 2500
}
POST
/api/v1/guild/boss/attempt
Advanced
Public
expand_more
Attack the guild boss with your team.
Send a team to damage the guild boss. Multiple guild members can attack the same boss — coordinate for maximum impact. If your attack delivers the killing blow, wasKillingBlow will be true and bonus rewards may be awarded.
Responses
200
Attack result with damage dealt.
400
Team not found or boss already defeated.
404
Boss not found or not in a guild.
501
Boss battle resolution is in preview and not yet available.
Examples
{
"bossId": "b0a1c2d3-e4f5-6789-0abc-def123456789",
"teamId": "d4e5f6a7-b8c9-0123-4567-890abcdef012"
}
{
"attemptId": "a1234567-b89c-def0-1234-567890abcdef",
"damageDealt": 4250,
"wasKillingBlow": false,
"attemptedAt": "2026-02-11T15:22:00Z"
}
GET
/api/v1/guild/boss/leaderboard
Beginner
Public
expand_more
Get the boss damage leaderboard.
See which guild members dealt the most damage to a specific boss encounter.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| bossId | Query | string | The boss encounter to view rankings for. |
Responses
200
Damage attempts ranked by damage dealt.
Challenges
Daily personalized objectives that reward currency and experience. Reset every 24 hours.
GET
/api/v1/challenges/daily
Beginner
Public
expand_more
Get your active daily challenges.
Returns your current set of daily challenges with progress tracking. New challenges generate every 24 hours. Complete them by playing battles that meet the criteria, then claim rewards before they expire.
Responses
200
Array of active challenges with progress and reward info.
Examples
[
{
"challengeId": "c9a1b2d3-4e5f-6789-abcd-ef0123456789",
"name": "Win 3 Battles",
"description": "Win 3 ranked battles today",
"progress": 1,
"requiredProgress": 3,
"isCompleted": false,
"rewardCurrency": 200,
"rewardExperience": 500,
"expiresAt": "2026-02-12T00:00:00Z"
}
]
POST
/api/v1/challenges/claim
Beginner
Public
expand_more
Claim a completed challenge reward.
Collect currency and experience for a completed challenge. The challenge must show isCompleted: true before you can claim. Each challenge can only be claimed once.
Responses
200
Reward claimed successfully.
400
Challenge not yet completed or already claimed.
404
Challenge not found.
POST
/api/v1/challenges/refresh
Beginner
Public
expand_more
Refresh your daily challenges (Premium only).
Replaces all uncompleted challenges with a fresh set. Premium and Premium Plus subscribers can refresh once per day. Already-completed challenges are kept. Each refresh generates one easy, one medium, and one hard challenge — giving you a better shot at rewards that match your skill level.
Responses
200
Challenges refreshed. Fetch `/daily` to see new ones.
400
Not a Premium subscriber or no challenges to refresh.
Mastery
Track unit mastery progression. The more you battle with a unit, the stronger the bond.
GET
/api/v1/mastery/units
Beginner
Public
expand_more
Get mastery levels for all your units.
Returns mastery progression for every unit you have used in battle. Mastery increases with use — tracks battles fought, wins, and win rate per unit.
Responses
200
Array of mastery records for all units with battle experience.
Examples
[
{
"unitId": "u1a2b3c4-d5e6-7890-abcd-ef1234567890",
"level": 5,
"experiencePoints": 2450,
"battlesUsed": 47,
"winsWithUnit": 31
},
{
"unitId": "u9f8e7d6-c5b4-3210-fedc-ba0987654321",
"level": 3,
"experiencePoints": 1100,
"battlesUsed": 22,
"winsWithUnit": 12
}
]
GET
/api/v1/mastery/unit/{unitId}
Beginner
Public
expand_more
Get mastery for a specific unit.
Returns detailed mastery data for one unit. If you have never used the unit in battle, returns a default record with Level 1 and zero experience.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| unitId * | Path | string | The unit to check mastery for. |
Responses
200
Unit mastery details including level, XP, battles, and win rate.
Modifiers
Weekly environmental effects that shake up the meta. Adapt or fall behind.
GET
/api/v1/modifiers/current
Beginner
Public
expand_more
Get the active environmental modifier.
Environmental modifiers rotate weekly and change the rules of battle for everyone. No authentication required. Check this before every battle to adapt your strategy. Returns a "Normal" placeholder when no modifier is active.
Responses
200
The current modifier with name, description, and active dates.
Examples
{
"modifierId": "m1a2b3c4-d5e6-7890-abcd-ef1234567890",
"name": "Arcane Surge",
"description": "Magic damage increased by 25% for all units",
"startDate": "2026-02-10T00:00:00Z",
"endDate": "2026-02-17T00:00:00Z"
}
GET
/api/v1/modifiers/upcoming
Beginner
Public
expand_more
Preview next week's modifier.
See what environmental effect is coming next. Use this intel to prepare your team and strategy ahead of the rotation. Not always available.
Responses
200
Upcoming modifier details.
404
No upcoming modifier has been scheduled yet.
Replays
Create and share battle replays. Study your victories and learn from defeats.
POST
/api/v1/replays/create
Beginner
Public
expand_more
Create a shareable battle replay.
Generate a shareable link for a completed battle. The replay can be viewed by anyone with the link, even without an account. You must be a participant in the battle.
Responses
201
Replay created with shareable URL.
400
Battle not completed or replay already exists.
404
Battle not found or you are not a participant.
Examples
{
"battleId": "b7e8f9a0-1234-5678-9abc-def012345678"
}
{
"replayId": "r1a2b3c4-d5e6-7890-abcd-ef1234567890",
"battleId": "b7e8f9a0-1234-5678-9abc-def012345678",
"shareUrl": "xK9mPq2v",
"viewCount": 0,
"createdAt": "2026-02-11T16:45:00Z"
}
AI Practice
Fight AI opponents to learn, experiment, and test strategies without risking your rating.
GET
/api/v1/ai/opponents
Beginner
Public
expand_more
List all available AI opponents.
Returns AI opponents across three difficulty tiers: novice, intermediate, and expert. Each opponent has a fixed team composition and strategy. Practice battles award 50% of normal gold and XP, never affect your API rating, and don't count against your daily battle limit. Use AI opponents to learn the combat system, test new team compositions, or experiment with strategy configurations before risking your rating in ranked matches.
Responses
200
List of AI opponents with difficulty and team information.
Examples
{
"opponents": [
{
"id": "novice-1",
"name": "Training Dummy",
"difficulty": "novice",
"approximateRating": 600,
"teamSize": 3,
"teamClasses": ["Warrior", "Ranger", "Mage"],
"formation": "balanced"
}
],
"rewardMultiplier": 0.5,
"ratingAffected": false,
"countsTowardDailyLimit": false
}
POST
/api/v1/ai/practice
Beginner
Public
expand_more
Fight an AI opponent in a practice battle.
Instantly resolves a battle between your team and the selected AI opponent — no matchmaking queue or waiting. The full turn-by-turn combat log is returned immediately. **Rewards**: 50% of normal gold and XP. No rating change. No daily limit consumed. **Strategy**: Your team's strategy configuration is used exactly as configured. The AI uses a fixed strategy appropriate to its difficulty level. This makes practice battles ideal for A/B testing strategy changes — fight the same AI opponent with different configs and compare results.
Responses
200
Complete battle results with turn-by-turn log and rewards.
400
Invalid team or team has no units.
404
AI opponent ID not found.
Examples
{
"teamId": "a1b2c3d4-5678-9abc-def0-1234567890ab",
"opponentId": "novice-1"
}
{
"battleId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "completed",
"winnerId": "your-player-id",
"turns": 8,
"battleLog": [...],
"rewards": {
"currency": 25,
"ratingChange": 0,
"experienceEarned": 50,
"tierMultiplier": 1.0
}
}
Ranked Seasons
Compete in 8-week ranked seasons. Climb from Bronze to Legend and earn exclusive end-of-season rewards.
GET
/api/v1/season/current
Beginner
Public
expand_more
Get the current ranked season and your progress.
Returns the active season details along with your current tier, rating, win/loss record, and progress toward the next tier. Seasons last 8 weeks. At the end of each season, your rating soft-resets and you earn rewards based on your peak tier. **Tier Thresholds**: Bronze (0) → Silver (1000) → Gold (1200) → Platinum (1400) → Diamond (1600) → Legend (1800) If no season exists, one is automatically created when you first call this endpoint.
Responses
200
Current season info with your ranking progress.
Examples
{
"seasonId": "...",
"name": "Season 1: Dawn of Battle",
"seasonNumber": 1,
"daysRemaining": 42,
"currentTier": "Silver",
"seasonRating": 1050,
"peakRating": 1120,
"peakTier": "Gold",
"wins": 15,
"losses": 8,
"winRate": 65.2,
"ratingToNextTier": 150,
"nextTier": "Gold"
}
GET
/api/v1/season/leaderboard
Beginner
Public
expand_more
Get the season leaderboard.
Returns ranked players ordered by season rating. Only players with at least one ranked battle this season appear on the leaderboard. Your own rank is included in the response.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| limit | Query | integer | Max entries to return (default 50, max 100). (default: 50) |
| offset | Query | integer | Entries to skip for pagination (default 0). (default: 0) |
Responses
200
Season leaderboard with rankings.
POST
/api/v1/season/rewards/{seasonId}
Beginner
Public
expand_more
Claim end-of-season rewards.
After a season ends, claim your rewards based on your peak tier. Rewards include gold, XP, and exclusive titles for Gold tier and above. Rewards can only be claimed once per season. **Rewards by Peak Tier**: - Bronze: 100g + 50 XP - Silver: 250g + 100 XP - Gold: 500g + 200 XP + "Gold Gladiator" title - Platinum: 1,000g + 400 XP + "Platinum Warrior" title - Diamond: 2,000g + 800 XP + "Diamond Champion" title - Legend: 5,000g + 1,500 XP + "Legendary Conqueror" title
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| seasonId * | Path | string | The ended season to claim rewards for. |
Responses
200
Rewards successfully claimed.
400
Season still active or rewards already claimed.
404
Season or player rank not found.
Examples
{
"seasonName": "Season 1: Dawn of Battle",
"peakTier": "Gold",
"goldReward": 500,
"xpReward": 200,
"exclusiveTitle": "Gold Gladiator",
"claimed": true
}
Loot
Random loot drops from battles. Collect currency packs, XP boosts, rare titles, and critical gold jackpots.
GET
/api/v1/loot/pending
Beginner
Public
expand_more
Get your unclaimed loot drops.
After each battle, you have a chance to receive random loot drops. Base drop chance is 15%, increasing with win streaks (up to 25% at 3+ wins). Premium players get a guaranteed drop every 5 battles. **Drop Types**: - **CurrencyPack**: Random gold (50-800g) - **XpBoost**: Bonus XP (50-200) - **CriticalGold**: JACKPOT! 3x your base battle reward (5% chance, independent roll) - **RareTitle**: An exclusive display title (5% of drops) Drops accumulate until claimed. Use POST /api/v1/loot/claim to collect everything at once.
Responses
200
List of unclaimed loot drops.
POST
/api/v1/loot/claim
Beginner
Public
expand_more
Claim all pending loot drops.
Claims all unclaimed loot drops, awarding gold, XP, and any titles earned. Returns a summary of everything claimed.
Responses
200
Loot successfully claimed with totals.
400
No unclaimed loot drops to claim.
Examples
{
"goldAwarded": 750,
"xpAwarded": 150,
"titlesUnlocked": ["Lucky Strike"],
"dropsClaimed": 4
}
Referral
Invite friends and earn rewards. Share your referral code for bonus gold when they sign up.
GET
/api/v1/referral/info
Beginner
Public
expand_more
Get your referral code and stats.
Returns your unique referral code and how many players have signed up using it. Share your code with friends — when they redeem it, you both get rewarded: - **You (referrer)**: +500g per successful referral - **Them (new player)**: +300g bonus starting currency A new code is automatically generated each time one is redeemed, so you can always share your latest code.
Responses
200
Your referral code and statistics.
Examples
{
"referralCode": "ABCD1234",
"totalReferrals": 3,
"totalGoldEarned": 1500,
"rewardPerReferral": 500,
"referredPlayerBonus": 300
}
POST
/api/v1/referral/redeem/{code}
Beginner
Public
expand_more
Redeem a referral code.
Redeem a friend's referral code to receive a 300g bonus. You can only redeem one referral code per account, and you cannot use your own code.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| code * | Path | string | The 8-character referral code to redeem. |
Responses
200
Code redeemed successfully with bonus awarded.
400
Invalid code, self-referral, or code already used.
404
Code not found.
Examples
{
"success": true,
"bonusGoldAwarded": 300,
"referrerUsername": "FriendlyPlayer"
}
GET
/api/v1/referral/leaderboard
Beginner
Public
expand_more
View the referral leaderboard.
See who has referred the most players. Top referrers are driving community growth.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| limit | Query | integer | Max entries (default 20, max 50). (default: 20) |
Responses
200
Referral leaderboard with your rank.
Unit Customization
Gold sinks: rename units, reroll stats, and apply permanent golden upgrades.
POST
/api/v1/units/rename
Beginner
Public
expand_more
Rename a unit you own.
Give your unit a custom display name. Costs 200g. The original name is preserved internally — your custom name appears in battle logs and your roster. Names must be 3-50 characters. No profanity filter (yet — be nice).
Responses
200
Unit renamed successfully.
400
Insufficient gold, invalid name, or unit not found.
Examples
{
"unitId": "...",
"newName": "Thunderstrike"
}
{
"unitId": "...",
"name": "Bronze Knight",
"customName": "Thunderstrike",
"goldSpent": 200,
"remainingCurrency": 800
}
POST
/api/v1/units/reroll
Intermediate
Public
expand_more
Reroll a unit's stats.
Randomizes one stat within the unit's class range. Costs 500g per reroll. The stat chosen and new value are random — you might get a better roll or a worse one. Each subsequent reroll on the same unit costs 500g. **Stat ranges vary by class** — Warriors have higher base health, Mages have higher attack, etc. The reroll respects these class boundaries.
Responses
200
Stat rerolled with new values.
400
Insufficient gold or unit not found.
POST
/api/v1/units/golden-upgrade
Intermediate
Public
expand_more
Apply golden upgrade to a unit.
Permanently boosts ALL stats by 5%. Costs 2000g and can only be applied once per unit. Golden units get a special designation visible in battle logs and your roster. This is the ultimate investment — make sure you're upgrading a unit you'll keep in your main team long-term.
Responses
200
Unit upgraded to golden status.
400
Already golden, insufficient gold, or unit not found.
Examples
{
"unitId": "..."
}
{
"unitId": "...",
"name": "Archmage",
"isGolden": true,
"health": 105,
"attack": 47,
"defense": 15,
"speed": 21,
"goldSpent": 2000,
"remainingCurrency": 3000
}
Rival
Auto-assigned rivals for competitive motivation. Beat your nemesis for bonus gold.
GET
/api/v1/rival/current
Beginner
Public
expand_more
Get your current rival.
Every player is automatically assigned a rival — someone at a similar rating level. Rivals rotate weekly. When you beat your rival in a ranked battle, you earn a +100g bonus on top of normal rewards. The rival system creates a personal nemesis to drive competitive motivation. Track your head-to-head record and prove you're the better player.
Responses
200
Your current rival info, or hasRival=false if no suitable rival found.
Examples
{
"rivalId": "...",
"rivalUsername": "ShadowBlade42",
"rivalRating": 1050,
"rivalLevel": 5,
"winsAgainstRival": 2,
"lossesAgainstRival": 1,
"bonusGoldEarned": 200,
"bonusPerWin": 100,
"hasRival": true
}
Battle Pass
Seasonal 30-level progression with free and premium reward tracks. Earn XP from battles, challenges, and daily play.
GET
/api/v1/battlepass/progress
Beginner
Public
expand_more
Get your current battle pass progress.
Returns your current level, XP progress, and all rewards (claimed and unclaimed). Each season has a 30-level battle pass. Free-track rewards are available to everyone. Premium-track rewards unlock with Premium Plus subscription. XP sources: battles (+100 win / +25 loss), daily challenges (+50-200), daily login (+25). Premium Plus players earn 25% bonus battle pass XP.
Responses
200
Your battle pass progress with all reward details.
Examples
{
"passName": "Season 1 Battle Pass",
"currentLevel": 12,
"currentXp": 450,
"xpToNextLevel": 550,
"maxLevel": 30,
"overallProgressPercent": 41.5,
"hasPremium": false,
"rewards": [...],
"daysRemaining": 34
}
POST
/api/v1/battlepass/claim/{level}
Beginner
Public
expand_more
Claim a battle pass level reward.
Claims the reward at the specified level. You must have reached that level to claim. Free-track rewards are available to all players. Premium-track rewards require Premium Plus subscription. Each level has both a free and premium reward. Claiming checks free first, then premium. Rewards are granted immediately — currency goes to your balance, XP to your profile, titles to your collection.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| level * | Path | integer | The level number to claim (1-30). |
Responses
200
Reward successfully claimed.
400
Level not reached or reward already claimed.
Examples
{
"success": true,
"level": 5,
"track": "free",
"rewardType": "currency",
"rewardValue": 275,
"description": "Level 5 Milestone: 250g",
"message": "Claimed Level 5 Milestone: 250g!"
}
Guild Wars
Weekly guild vs guild matchups. Your ranked wins earn points — the winning guild gets a treasury bonus.
GET
/api/v1/guildwar/status
Beginner
Public
expand_more
Get your guild's current war status.
Shows your guild's active war matchup, including scores, opponent info, and top contributors. Wars are matched weekly between guilds of similar level. Every ranked battle win during a war earns 10 points for your guild. The winning guild gets a treasury bonus at the end of the week. In a draw, the reward is split.
Responses
200
Current war status, or isAtWar=false if not matched.
Examples
{
"isAtWar": true,
"warId": "...",
"yourGuild": "Shadow Legion",
"yourScore": 150,
"opponentGuild": "Storm Riders",
"opponentScore": 120,
"daysRemaining": 4,
"treasuryReward": 750,
"topContributors": [...]
}
GET
/api/v1/guildwar/history
Beginner
Public
expand_more
Get your guild's war history.
Returns past guild wars with results. Track your guild's competitive record and see how much treasury gold you've earned from victories.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| limit | Query | integer | Maximum results to return (default 10). (default: 10) |
Responses
200
List of past wars with scores and results.
Tournament
Weekly single-elimination tournaments. Pay entry fee, compete in brackets, win big prizes.
GET
/api/v1/tournament/current
Beginner
Public
expand_more
Get the current or most recent tournament.
Returns tournament info including registration status, participants, prize pool, and your entry status. Tournaments run weekly: registration opens, then brackets are generated and matches play out automatically. Entry fee is 100g. Top 4 finishers win prizes (1st: 5000g + title, 2nd: 2500g, 3rd/4th: 1000g). Brackets are seeded by API rating — higher rated players face lower seeds first.
Responses
200
Tournament info with your registration status.
Examples
{
"tournamentId": "...",
"name": "Weekly Tournament #20260212",
"status": "registration",
"maxParticipants": 16,
"currentParticipants": 7,
"entryFee": 100,
"prizes": [...],
"isRegistered": false
}
POST
/api/v1/tournament/enter
Beginner
Public
expand_more
Enter the current tournament.
Register for the active tournament with your team. Costs the entry fee (100g). You can only enter once per tournament. Registration closes when the tournament starts or when max participants is reached.
Responses
200
Successfully registered. Returns updated tournament info.
400
Not enough currency, already registered, or tournament full/closed.
GET
/api/v1/tournament/bracket/{tournamentId}
Beginner
Public
expand_more
View a tournament bracket.
Returns the full bracket with match results for each round. Shows all matchups, who won, and who's advancing. Use this to track the tournament's progress.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| tournamentId * | Path | string | The tournament ID to view. |
Responses
200
Full bracket with all rounds and matches.
404
Tournament not found.
Cosmetics
Premium cosmetic shop. Customize your profile, units, and battle effects with gems or gold.
GET
/api/v1/cosmetics/shop
Beginner
Public
expand_more
Browse the cosmetic shop.
Shows all available cosmetics with prices in gems and gold. Includes your current balance and whether you already own each item. Categories: unit_skin, profile_border, card_back, battle_effect. Rarities: common, rare, epic, legendary (legendary items are gems-only). Gems are earned from tournaments, battle pass milestones, and special events.
Responses
200
Shop listing with your balance and ownership status.
GET
/api/v1/cosmetics/owned
Beginner
Public
expand_more
View your owned cosmetics.
Responses
200
List of cosmetics you own with equipped status.
POST
/api/v1/cosmetics/purchase/{cosmeticId}
Beginner
Public
expand_more
Purchase a cosmetic item.
Buy a cosmetic from the shop using gems or gold. Each item shows available payment options — legendary items are gems-only (goldPrice = 0).
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| cosmeticId * | Path | string | The cosmetic item to purchase. |
Responses
200
Purchase successful.
400
Insufficient funds or already owned.
POST
/api/v1/cosmetics/equip/{cosmeticId}
Beginner
Public
expand_more
Equip a cosmetic item.
Set a cosmetic as active. Only one cosmetic per category can be equipped at a time. Equipping a new profile_border unequips the previous one automatically.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| cosmeticId * | Path | string | The cosmetic to equip. |
Responses
200
Cosmetic equipped.
400
You don't own this cosmetic.
GET
/api/v1/cosmetics/balance
Beginner
Public
expand_more
Check your gem and gold balance.
Responses
200
Your current balance and lifetime gem stats.
Activity Feed
Your game journey in a timeline. Track battles, achievements, level-ups, and view other players' activity.
GET
/api/v1/activity/feed
Beginner
Public
expand_more
Get your activity feed.
Returns a chronological feed of your recent game activities — battles fought, achievements unlocked, level-ups, and more. Paginated for easy consumption.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| page | Query | integer | Page number (default 1). (default: 1) |
| pageSize | Query | integer | Items per page (default 20, max 50). (default: 20) |
Responses
200
Paginated list of your activities.
GET
/api/v1/activity/feed/{username}
Beginner
Public
expand_more
Get another player's public activity feed.
View the public activity feed for any player by username. Only public activities are shown — private events are hidden.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| username * | Path | string | The player's username. |
| page | Query | integer | Page number (default 1). (default: 1) |
| pageSize | Query | integer | Items per page (default 20, max 50). (default: 20) |
Responses
200
Public activity feed.
404
Player not found.
GET
/api/v1/activity/stats
Beginner
Public
expand_more
Get your lifetime stats (sunk cost profile).
A comprehensive breakdown of everything you've invested in the game: total battles, gold earned, win rate, achievements, time played, and more. See the full picture of your gaming journey.
Responses
200
Complete lifetime stats breakdown.
Examples
{
"username": "DragonSlayer",
"level": 42,
"rating": 1850,
"totalBattlesPlayed": 347,
"totalBattlesWon": 198,
"winRate": 57.1,
"highestRating": 1923,
"totalGoldEarned": 125000,
"achievementsUnlocked": 28,
"daysPlayed": 65,
"investmentSummary": "347 battles fought | 125,000g earned | reached level 42 | playing for 65 days"
}
GET
/api/v1/activity/stats/{username}
Beginner
Public
expand_more
Get another player's public lifetime stats.
View the lifetime stats for any player by username. Compare your progress against rivals and friends.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| username * | Path | string | The player's username. |
Responses
200
Player's lifetime stats.
404
Player not found.
Education
Learn API concepts through guided gameplay. Create curricula, enroll students, and track progress.
GET
/api/v1/education/modules
Beginner
Public
expand_more
Browse published curriculum modules.
Lists all published educational modules, sorted by popularity. Each module teaches API concepts through guided game challenges — from basic REST to advanced strategies.
Responses
200
List of published modules.
POST
/api/v1/education/modules
Intermediate
Public
expand_more
Create a curriculum module (instructor).
Any player can create educational modules. Define lessons that guide students through specific API endpoints. The module starts as unpublished — publish it when you're ready for students to enroll.
Responses
201
Module created. Use the join code or publish it for public access.
400
Invalid module data.
Examples
{
"title": "API Basics 101",
"description": "Learn REST fundamentals through combat",
"difficulty": "beginner",
"lessons": [
{ "title": "Register", "objective": "Create your first account", "endpoint": "POST /api/v1/auth/register", "hint": "Use a unique username and valid email" },
{ "title": "Login", "objective": "Get your JWT token", "endpoint": "POST /api/v1/auth/login", "hint": "Save the token for future requests" }
]
}
GET
/api/v1/education/modules/{moduleId}
Beginner
Public
expand_more
Get detailed module info and your progress.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| moduleId * | Path | string | Module ID. |
Responses
200
Module details with lessons and your progress.
404
Module not found.
POST
/api/v1/education/modules/{moduleId}/publish
Beginner
Public
expand_more
Publish a module for public access.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| moduleId * | Path | string | Module ID to publish. |
Responses
200
Module published.
404
Module not found or you are not the instructor.
POST
/api/v1/education/enroll/{moduleId}
Beginner
Public
expand_more
Enroll in a module.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| moduleId * | Path | string | Module ID to enroll in. |
Responses
200
Enrolled successfully.
400
Already enrolled or module not published.
404
Module not found.
POST
/api/v1/education/enroll/code/{code}
Beginner
Public
expand_more
Enroll using a join code.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| code * | Path | string | The instructor's join code. |
Responses
200
Enrolled successfully.
404
Invalid join code.
POST
/api/v1/education/modules/{moduleId}/lessons/{lessonIndex}/complete
Beginner
Public
expand_more
Mark a lesson as complete.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| moduleId * | Path | string | Module ID. |
| lessonIndex * | Path | integer | 0-based lesson index. |
Responses
200
Lesson completed. Progress updated.
400
Lesson already completed or invalid index.
404
Not enrolled.
GET
/api/v1/education/my-progress
Beginner
Public
expand_more
Get your enrolled modules and progress.
Responses
200
List of enrollments with progress.
GET
/api/v1/education/instructor/dashboard
Intermediate
Public
expand_more
Instructor dashboard with student analytics.
View stats for all modules you've created: enrollment counts, completion rates, and average student progress. Use this data to improve your curriculum.
Responses
200
Dashboard with module stats.
SDK
Developer tools: quick-start guide, endpoint catalog, code snippets, and game status. No auth required.
GET
/api/v1/sdk/quickstart
Beginner
Public
expand_more
Quick-start guide for new API consumers.
Returns a structured quick-start guide with step-by-step instructions, authentication details, and example code snippets in multiple languages. Use this to bootstrap your client application.
Responses
200
Quick-start guide with steps and code examples.
GET
/api/v1/sdk/endpoints
Beginner
Public
expand_more
Full endpoint catalog organized by category.
Lists all available API endpoints grouped by feature category. Use this to discover endpoints and plan your client integration.
Responses
200
Categorized endpoint catalog.
GET
/api/v1/sdk/status
Beginner
Public
expand_more
Game status and public metrics.
Returns server health status and public game metrics — total players, active seasons, running tournaments, and completed battles. Useful for monitoring dashboards and bot status checks.
Responses
200
Game status with public metrics.
Discord
Link your Discord account, register webhooks for game events, and enable bot commands.
POST
/api/v1/discord/link
Beginner
Public
expand_more
Link your Discord account.
Initiates the Discord linking process. You'll receive a 6-digit verification code. Use the verify endpoint with this code to complete the link. Once linked, Discord bots can look up your game profile and send notifications.
Responses
200
Link initiated. Use the verification code to complete.
400
Already linked or Discord ID in use.
GET
/api/v1/discord/link
Beginner
Public
expand_more
Get your Discord link status.
Responses
200
Link status (or null if not linked).
DELETE
/api/v1/discord/link
Beginner
Public
expand_more
Unlink your Discord account.
Responses
200
Discord account unlinked.
404
No link found.
POST
/api/v1/discord/verify
Beginner
Public
expand_more
Verify Discord link with code.
Responses
200
Discord account verified and linked.
400
Invalid code.
POST
/api/v1/discord/webhooks
Intermediate
Public
expand_more
Register a webhook for game event notifications.
Register a Discord webhook URL to receive game events (battle results, level-ups, etc.). Maximum 5 webhooks per player. Specify which event types you want to receive.
Responses
201
Webhook registered.
400
Invalid URL or limit reached.
Examples
{
"webhookUrl": "https://discord.com/api/webhooks/...",
"label": "Battle Alerts",
"eventTypes": ["battle_won", "battle_lost", "level_up"]
}
GET
/api/v1/discord/webhooks
Beginner
Public
expand_more
List your registered webhooks.
Responses
200
List of webhooks.
GET
/api/v1/discord/lookup/{discordUserId}
Beginner
Public
expand_more
Look up a player by Discord user ID (for bots).
Discord bots can use this endpoint to look up a player's game profile by their Discord user ID. Only returns data for verified links.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| discordUserId * | Path | string | Discord user ID. |
Responses
200
Player profile.
404
No verified link found for this Discord ID.
Creators
Content creator program. Apply, get verified, track content performance, and earn gem revenue share.
POST
/api/v1/creators/apply
Beginner
Public
expand_more
Apply to become a content creator.
Submit your application to join the content creator program. Once verified by admins, you'll earn gems from strategy downloads, get a "creator" badge, and be eligible for the monthly spotlight.
Responses
201
Application submitted.
400
Already applied or invalid data.
Examples
{
"creatorName": "StrategyKing",
"bio": "I create advanced team compositions and publish educational guides."
}
GET
/api/v1/creators/me
Beginner
Public
expand_more
Get your creator profile.
Responses
200
Creator profile (or null if not applied).
GET
/api/v1/creators/stats
Beginner
Public
expand_more
Get your detailed creator stats.
View your content performance: strategy download counts, ratings, educational module enrollments, and gem earnings.
Responses
200
Detailed creator statistics.
404
No creator profile found.
GET
/api/v1/creators/verified
Beginner
Public
expand_more
Browse verified content creators.
Lists all verified creators, sorted by total downloads. Verified creators have been reviewed and approved by admins.
Responses
200
List of verified creators.
GET
/api/v1/creators/spotlight
Beginner
Public
expand_more
Get this month's creator spotlight.
View the featured creators for the current month. Spotlighted creators are selected based on content quality, download volume, and community impact.
Responses
200
Monthly spotlight with featured creators.
Models
object AbilityCondition 2 properties expand_more
Conditional rule defining when and how a specific ability should be used.
| Property | Type | Description |
|---|---|---|
| when | string | Condition that must be true to use this ability. Options: "always", "ally_hp_below_50", "ally_hp_below_25", "enemy_count_gte_2", "enemy_count_gte_3", "cooldown_ready". |
| target | string | How to select the target. Options: "priority" (use TargetPriority list), "lowest_ally_hp", "self", "all_enemies", "all_allies". |
object AchievementResponse 11 properties expand_more
An achievement with progress tracking and unlock status.
| Property | Type | Description |
|---|---|---|
| achievementId | string (uuid) | Unique achievement identifier. |
| name | string | Achievement title (e.g., "First Blood", "Strategist Supreme"). |
| description | string | What you need to do to unlock this achievement. |
| iconUrl | string | URL to the achievement's badge icon. |
| category | string | Achievement category (e.g., "Combat", "Collection", "Social"). |
| points | integer (int32) | Point value contributing to your achievement score. |
| progress | integer (int32) | Current progress toward unlocking. |
| requiredProgress | integer (int32) | Progress needed to unlock the achievement. |
| isUnlocked | boolean | Whether you have earned this achievement. |
| isSecret | boolean | Secret achievements have hidden descriptions until unlocked. |
| unlockedAt | string (date-time) | UTC timestamp when you unlocked this achievement. Null if locked. |
object ActivityFeedItem 6 properties expand_more
A single activity in the feed.
| Property | Type | Description |
|---|---|---|
| id | string (uuid) | |
| activityType | string | |
| description | string | |
| relatedEntityId | string (uuid) | |
| metadataJson | string | |
| createdAt | string (date-time) |
object ActivityFeedResponse 5 properties expand_more
Activity feed response with pagination.
| Property | Type | Description |
|---|---|---|
| username | string | |
| activities | array<ActivityFeedItem> | |
| totalCount | integer (int32) | |
| page | integer (int32) | |
| pageSize | integer (int32) |
object AiOpponentListResponse 4 properties expand_more
Full list of available AI opponents grouped by difficulty.
| Property | Type | Description |
|---|---|---|
| opponents | array<AiOpponentResponse> | Available AI opponents. |
| rewardMultiplier | number (double) | Reward modifier for practice battles (0.5 = 50% of normal rewards). |
| ratingAffected | boolean | Practice battles never affect your API rating. |
| countsTowardDailyLimit | boolean | Practice battles do not count against your daily battle limit. |
object AiOpponentResponse 8 properties expand_more
An AI opponent available for practice battles.
| Property | Type | Description |
|---|---|---|
| id | string | Unique identifier for this AI opponent preset. |
| name | string | Display name of the AI opponent. |
| description | string | Flavor text describing this opponent's personality and fighting style. |
| difficulty | string | Difficulty level: "novice", "intermediate", or "expert". |
| approximateRating | integer (int32) | Approximate API rating of this AI opponent. Compare against your own to gauge difficulty. |
| teamSize | integer (int32) | Number of units in the AI's team. |
| teamClasses | array<string> | Unit classes in the AI team (e.g. ["Warrior", "Mage", "Healer"]). |
| formation | string | The formation the AI uses: "balanced", "aggressive", or "defensive". |
object ApiLink 3 properties expand_more
A hypermedia link to a related API resource. Every response includes `_links` so you can navigate the API without memorizing URLs.
| Property | Type | Description |
|---|---|---|
| href | string | Relative URL of the linked resource. |
| method | string | HTTP method to use: GET, POST, PUT, DELETE. |
| title | string | Optional human-readable hint about what this link does. |
object ApplyCreatorRequest 2 properties expand_more
| Property | Type | Description |
|---|---|---|
| creatorName | string | |
| bio | string |
object AuthGuide 6 properties expand_more
| Property | Type | Description |
|---|---|---|
| tokenType | string | |
| headerName | string | |
| headerFormat | string | |
| tokenExpiryMinutes | integer (int32) | |
| loginEndpoint | string | |
| refreshEndpoint | string |
object AuthResponse 3 properties expand_more
Authentication result containing a JWT token for API access.
| Property | Type | Description |
|---|---|---|
| playerId | string (uuid) | Your unique player identifier. Used in leaderboard lookups and battle references. |
| token | string | JWT Bearer token. Include as `Authorization: Bearer <token>` in all authenticated requests. |
| expiresAt | string (date-time) | UTC timestamp when this token expires. Refresh before this time to maintain your session. |
object BadgeResponse 2 properties expand_more
Response after setting a badge.
| Property | Type | Description |
|---|---|---|
| badge | string | |
| message | string |
object BattleLogEntry 8 properties expand_more
Represents a single entry in the battle log.
| Property | Type | Description |
|---|---|---|
| turn | integer (int32) | The turn number (1-based) when this action occurred. |
| actor | string | Name of the unit performing the action. |
| action | string | The ability or action used (e.g., "Fireball", "Shield Wall", "Basic Attack"). |
| target | string | Name of the target unit. |
| damage | integer (int32) | Damage dealt to the target. 0 for non-offensive actions. |
| healing | integer (int32) | HP restored to the target. 0 for non-healing actions. |
| effects | array<string> | Status effects applied (e.g., "Stunned", "Defense Up"). |
| targetHpRemaining | integer (int32) | The target's remaining HP after this action resolved. |
object BattlePassLevelReward 7 properties expand_more
A single level's reward info.
| Property | Type | Description |
|---|---|---|
| level | integer (int32) | The level number (1-30). |
| track | string | "free" or "premium". |
| rewardType | string | Type of reward: "currency", "xp", "title", "loot_box". |
| rewardValue | integer (int32) | Numeric value (gold amount, XP amount, etc.). |
| description | string | Human-readable description. |
| claimed | boolean | Whether this reward has been claimed. |
| canClaim | boolean | Whether the player can claim this (level reached + track access). |
object BattlePassProgressResponse 10 properties expand_more
Player's current battle pass progress.
| Property | Type | Description |
|---|---|---|
| passName | string | Name of the current battle pass. |
| currentLevel | integer (int32) | Current level (0-30). |
| currentXp | integer (int32) | XP accumulated toward the next level. |
| xpToNextLevel | integer (int32) | XP needed to reach the next level. |
| maxLevel | integer (int32) | Maximum level in this pass. |
| overallProgressPercent | number (double) | Overall XP progress as a percentage (0-100). |
| hasPremium | boolean | Whether the player has premium track access. |
| rewards | array<BattlePassLevelReward> | All rewards with claim status. |
| endsAt | string (date-time) | When the pass expires. |
| daysRemaining | integer (int32) | Days remaining before the pass resets. |
object BattleQueueRequest 2 properties expand_more
Request to enter the battle matchmaking queue.
| Property | Type | Description |
|---|---|---|
| teamId * | string (uuid) | The team to fight with. Must be a team you own with at least one unit. |
| mode | string | Battle mode: "ranked" (affects API rating) or "casual" (no rating change). Default: "ranked". |
object BattleResultResponse 9 properties expand_more
Detailed outcome of a completed battle, including the full combat log.
| Property | Type | Description |
|---|---|---|
| _links | object | Hypermedia links to related resources (replay, player profiles, queue again). |
| battleId | string (uuid) | Unique battle identifier. |
| status | string | Final battle state. "Completed" for finished battles. |
| winnerId | string (uuid) | Player ID of the winner. Null for draws. |
| loserId | string (uuid) | Player ID of the loser. Null for draws. |
| turns | integer (int32) | Total number of turns the battle lasted (max 50). |
| battleLog | array<BattleLogEntry> | Turn-by-turn combat log. Each entry records one action by one unit. |
| rewards | BattleRewards | |
| completedAt | string (date-time) | UTC timestamp when the battle finished. |
object BattleRewards 7 properties expand_more
Rewards earned from a completed battle.
| Property | Type | Description |
|---|---|---|
| currency | integer (int32) | In-game currency earned. Winners earn more than losers. |
| ratingChange | integer (int32) | API rating change. Positive for wins, negative for losses. Zero in casual mode. |
| experienceEarned | integer (int32) | Experience points earned from this battle. |
| winStreak | integer (int32) | Current win streak count after this battle. |
| firstBattleBonus | boolean | Whether the first-battle-of-day bonus was applied. |
| newLevel | integer (int32) | New player level after this battle, if a level-up occurred. |
| tierMultiplier | number (double) | Tier-based gold multiplier applied (1.0x Free, 1.5x Premium, 2.0x Premium+). |
object BattleStatusResponse 8 properties expand_more
Real-time status of a battle from queue to completion.
| Property | Type | Description |
|---|---|---|
| _links | object | Hypermedia links to related resources. |
| battleId | string (uuid) | Unique battle identifier. Use this to poll for updates and retrieve results. |
| status | string | Current state: Queued, InProgress, Completed, or Cancelled. |
| queuePosition | integer (int32) | Your position in the matchmaking queue. Null once matched. |
| estimatedWaitSeconds | integer (int32) | Estimated seconds until a match is found. Null once matched. |
| queuedAt | string (date-time) | UTC timestamp when the battle was queued. |
| startedAt | string (date-time) | UTC timestamp when the battle began. Null if still queued. |
| completedAt | string (date-time) | UTC timestamp when the battle concluded. Null if not yet finished. |
object BossAttemptRequest 2 properties expand_more
Request to attack a guild boss with a specific team.
| Property | Type | Description |
|---|---|---|
| bossId | string (uuid) | The boss encounter to attack. |
| teamId | string (uuid) | Your team to send into the raid. |
object BossAttemptResponse 5 properties expand_more
Result of a guild boss attack attempt.
| Property | Type | Description |
|---|---|---|
| attemptId | string (uuid) | Unique attempt identifier for this attack. |
| playerName | string | Name of the attacking player. |
| damageDealt | integer (int32) | Total damage dealt to the boss in this attempt. |
| wasKillingBlow | boolean | Whether this attack delivered the final killing blow. |
| attemptedAt | string (date-time) | UTC timestamp of the attack. |
object BracketMatch 5 properties expand_more
| Property | Type | Description |
|---|---|---|
| matchNumber | integer (int32) | |
| player1Username | string | |
| player2Username | string | |
| winnerUsername | string | |
| status | string |
object BracketRound 3 properties expand_more
| Property | Type | Description |
|---|---|---|
| roundNumber | integer (int32) | |
| roundName | string | |
| matches | array<BracketMatch> |
object ChallengeResponse 13 properties expand_more
A daily challenge objective with progress tracking and rewards.
| Property | Type | Description |
|---|---|---|
| _links | object | Hypermedia links to related resources (claim reward when completed). |
| challengeId | string (uuid) | Unique challenge identifier. |
| name | string | Challenge title (e.g., "Warrior's Path", "Healing Hands"). |
| description | string | What you need to do to complete this challenge. |
| difficulty | string | Difficulty tier: "easy", "medium", or "hard". Harder = better rewards. |
| battlePassXp | integer (int32) | Battle pass XP awarded on completion. |
| progress | integer (int32) | Current progress toward completion. |
| requiredProgress | integer (int32) | Progress value needed to complete the challenge. |
| progressPercentage | number (double) | Completion percentage (0-100). Computed from progress / requiredProgress. |
| isCompleted | boolean | Whether the challenge objective has been met. Claim your reward when true. |
| rewardCurrency | integer (int32) | Currency reward for completing this challenge. |
| rewardExperience | integer (int32) | Experience points reward for completing this challenge. |
| expiresAt | string (date-time) | UTC timestamp when this challenge expires. Unclaimed rewards are forfeited. |
object ChatMessageResponse 6 properties expand_more
| Property | Type | Description |
|---|---|---|
| messageId | string (uuid) | |
| playerId | string (uuid) | |
| username | string | |
| message | string | |
| messageType | string | |
| createdAt | string (date-time) |
object ClaimLootResponse 4 properties expand_more
Result of claiming loot drops.
| Property | Type | Description |
|---|---|---|
| goldAwarded | integer (int32) | Total gold awarded from claimed drops. |
| xpAwarded | integer (int32) | Total XP awarded from claimed drops. |
| titlesUnlocked | array<string> | Titles unlocked (if any). |
| dropsClaimed | integer (int32) | Number of drops claimed. |
object ClaimRequest 1 properties expand_more
Request to claim a completed challenge reward.
| Property | Type | Description |
|---|---|---|
| challengeId | string (uuid) | The ID of the completed challenge to claim. |
object ClaimRewardResponse 7 properties expand_more
Response after claiming a reward.
| Property | Type | Description |
|---|---|---|
| success | boolean | |
| level | integer (int32) | |
| track | string | |
| rewardType | string | |
| rewardValue | integer (int32) | |
| description | string | |
| message | string |
object CosmeticShopItem 11 properties expand_more
A cosmetic item in the shop.
| Property | Type | Description |
|---|---|---|
| id | string (uuid) | |
| name | string | |
| description | string | |
| category | string | |
| rarity | string | |
| gemPrice | integer (int32) | |
| goldPrice | integer (int32) | |
| isLimited | boolean | |
| requiredTier | string | |
| locked | boolean | |
| owned | boolean |
object CosmeticShopResponse 3 properties expand_more
Shop listing with player balance.
| Property | Type | Description |
|---|---|---|
| playerGems | integer (int32) | |
| playerGold | integer (int32) | |
| items | array<CosmeticShopItem> |
object CreateGuildRequest 3 properties expand_more
| Property | Type | Description |
|---|---|---|
| name * | string | (min: 1, max: 50 chars) |
| tag * | string | (min: 3, max: 5 chars) |
| description | string | (max: 500 chars) |
object CreateLessonRequest 4 properties expand_more
| Property | Type | Description |
|---|---|---|
| title | string | |
| objective | string | |
| endpoint | string | |
| hint | string |
object CreateModuleRequest 4 properties expand_more
| Property | Type | Description |
|---|---|---|
| title | string | |
| description | string | |
| difficulty | string | |
| lessons | array<CreateLessonRequest> |
object CreateReplayRequest 1 properties expand_more
Request to generate a shareable replay from a completed battle.
| Property | Type | Description |
|---|---|---|
| battleId | string (uuid) | The completed battle ID to create a replay for. You must be a participant. |
object CreatorProfileResponse 10 properties expand_more
| Property | Type | Description |
|---|---|---|
| id | string (uuid) | |
| creatorName | string | |
| username | string | |
| bio | string | |
| isVerified | boolean | |
| gemsEarned | integer (int32) | |
| totalDownloads | integer (int32) | |
| modulesCreated | integer (int32) | |
| isSpotlighted | boolean | |
| appliedAt | string (date-time) |
object CreatorStatsResponse 8 properties expand_more
| Property | Type | Description |
|---|---|---|
| creatorName | string | |
| totalStrategiesUploaded | integer (int32) | |
| totalStrategyDownloads | integer (int32) | |
| averageStrategyRating | number (double) | |
| modulesCreated | integer (int32) | |
| studentsEnrolled | integer (int32) | |
| gemsEarned | integer (int32) | |
| isVerified | boolean |
object CurrentSeasonResponse 17 properties expand_more
Information about the current ranked season.
| Property | Type | Description |
|---|---|---|
| seasonId | string (uuid) | Unique season identifier. |
| name | string | Display name of the season (e.g. "Season 1: Dawn of Battle"). |
| seasonNumber | integer (int32) | Season number (1, 2, 3...). |
| startDate | string (date-time) | UTC start date of this season. |
| endDate | string (date-time) | UTC end date of this season. |
| daysRemaining | integer (int32) | Days remaining in this season. |
| currentTier | string | Your current ranked tier this season (Bronze through Legend). |
| seasonRating | integer (int32) | Your current season API rating. |
| peakRating | integer (int32) | Your peak rating achieved this season. |
| peakTier | string | Your highest tier achieved this season (for end-of-season rewards). |
| wins | integer (int32) | Wins this season. |
| losses | integer (int32) | Losses this season. |
| draws | integer (int32) | Draws this season. |
| winRate | number (double) | Win rate percentage this season. |
| ratingToNextTier | integer (int32) | Rating needed to reach the next tier. Null if already Legend. |
| nextTier | string | Name of the next tier. Null if already Legend. |
| tierThresholds | object | Rating thresholds for each tier this season. |
object CurriculumModuleResponse 10 properties expand_more
| Property | Type | Description |
|---|---|---|
| id | string (uuid) | |
| instructorUsername | string | |
| title | string | |
| description | string | |
| difficulty | string | |
| lessonCount | integer (int32) | |
| enrolledCount | integer (int32) | |
| isPublished | boolean | |
| joinCode | string | |
| createdAt | string (date-time) |
object DigestCategory 3 properties expand_more
| Property | Type | Description |
|---|---|---|
| category | string | |
| unreadCount | integer (int32) | |
| latestAt | string (date-time) |
object DigestItem 6 properties expand_more
| Property | Type | Description |
|---|---|---|
| id | string (uuid) | |
| type | string | |
| title | string | |
| message | string | |
| actionUrl | string | |
| createdAt | string (date-time) |
object DiscordLinkResponse 6 properties expand_more
| Property | Type | Description |
|---|---|---|
| discordUserId | string | |
| discordUsername | string | |
| isVerified | boolean | |
| notificationsEnabled | boolean | |
| verificationCode | string | |
| linkedAt | string (date-time) |
object DiscordProfileResponse 7 properties expand_more
| Property | Type | Description |
|---|---|---|
| username | string | |
| level | integer (int32) | |
| rating | integer (int32) | |
| winStreak | integer (int32) | |
| currentTier | string | |
| badge | string | |
| guildName | string |
object EndpointCatalogResponse 2 properties expand_more
Full API endpoint catalog.
| Property | Type | Description |
|---|---|---|
| totalEndpoints | integer (int32) | |
| categories | array<EndpointCategoryDto> |
object EndpointCategoryDto 3 properties expand_more
| Property | Type | Description |
|---|---|---|
| tag | string | |
| description | string | |
| endpoints | array<EndpointDto> |
object EndpointDto 4 properties expand_more
| Property | Type | Description |
|---|---|---|
| method | string | |
| path | string | |
| summary | string | |
| requiresAuth | boolean |
object EnrollmentProgressDto 5 properties expand_more
| Property | Type | Description |
|---|---|---|
| currentLesson | integer (int32) | |
| lessonsCompleted | integer (int32) | |
| totalLessons | integer (int32) | |
| progressPercent | number (double) | |
| isCompleted | boolean |
object GameMetrics 4 properties expand_more
| Property | Type | Description |
|---|---|---|
| totalPlayers | integer (int32) | |
| activeSeason | integer (int32) | |
| activeTournaments | integer (int32) | |
| totalBattlesCompleted | integer (int32) |
object GameStatusResponse 4 properties expand_more
Game status/health for external monitoring.
| Property | Type | Description |
|---|---|---|
| status | string | |
| version | string | |
| serverTime | string (date-time) | |
| metrics | GameMetrics |
object GemBalanceResponse 4 properties expand_more
Gem balance info.
| Property | Type | Description |
|---|---|---|
| gems | integer (int32) | |
| gold | integer (int32) | |
| gemsEarnedTotal | integer (int32) | |
| gemsSpentTotal | integer (int32) |
object GemStipendClaimResponse 3 properties expand_more
Response after claiming monthly gem stipend.
| Property | Type | Description |
|---|---|---|
| gemsAwarded | integer (int32) | |
| totalGems | integer (int32) | |
| nextClaimAvailable | string (date-time) |
object GoldenUpgradeRequest 1 properties expand_more
Request to apply golden upgrade.
| Property | Type | Description |
|---|---|---|
| unitId * | string (uuid) | The unit to upgrade. |
object GuildBossResponse 11 properties expand_more
Current state of a guild's raid boss encounter.
| Property | Type | Description |
|---|---|---|
| _links | object | Hypermedia links to related resources (attack, leaderboard). |
| bossId | string (uuid) | Unique boss encounter identifier. |
| name | string | Boss name (e.g., "Infernal Titan", "Void Reaper"). |
| description | string | Flavor text describing the boss and its abilities. |
| maxHp | integer (int32) | Boss's maximum hit points at full health. |
| currentHp | integer (int32) | Boss's remaining hit points. Reduced by guild member attacks. |
| hpPercentage | number (double) | Remaining HP as a percentage (0-100). Computed from currentHp / maxHp. |
| expiresAt | string (date-time) | UTC timestamp when this boss encounter expires. Defeat it before time runs out. |
| isDefeated | boolean | Whether the boss has been defeated by the guild. |
| rewardCurrency | integer (int32) | Currency reward distributed to participants when the boss is defeated. |
| rewardExperience | integer (int32) | Experience reward distributed to participants when the boss is defeated. |
object GuildInviteResponse 8 properties expand_more
| Property | Type | Description |
|---|---|---|
| inviteId | string (uuid) | |
| guildId | string (uuid) | |
| guildName | string | |
| guildTag | string | |
| invitedByUsername | string | |
| status | string | |
| createdAt | string (date-time) | |
| expiresAt | string (date-time) |
object GuildMemberDto 7 properties expand_more
| Property | Type | Description |
|---|---|---|
| playerId | string (uuid) | |
| username | string | |
| role | string | |
| joinedAt | string (date-time) | |
| contributionPoints | integer (int32) | |
| rating | integer (int32) | |
| level | integer (int32) |
object GuildResponse 10 properties expand_more
Guild information and membership details.
| Property | Type | Description |
|---|---|---|
| _links | object | Hypermedia links to related resources (members, boss, treasury, strategies). |
| guildId | string (uuid) | Unique guild identifier. |
| name | string | Guild name. |
| tag | string | Short guild tag shown next to member names (3-5 characters). |
| description | string | Guild's public description and recruitment message. |
| leaderName | string | Username of the guild leader. |
| level | integer (int32) | Guild level. Higher levels unlock more member slots and boss encounters. |
| memberCount | integer (int32) | Current number of guild members. |
| maxMembers | integer (int32) | Maximum members allowed at the guild's current level. |
| createdAt | string (date-time) | When the guild was founded. |
object GuildStrategyResponse 8 properties expand_more
| Property | Type | Description |
|---|---|---|
| id | string (uuid) | |
| name | string | |
| description | string | |
| creatorUsername | string | |
| strategy | object | |
| usageCount | integer (int32) | |
| createdAt | string (date-time) | |
| updatedAt | string (date-time) |
object GuildUpgradeOption 6 properties expand_more
| Property | Type | Description |
|---|---|---|
| id | string | |
| name | string | |
| description | string | |
| cost | integer (int32) | |
| canAfford | boolean | |
| alreadyPurchased | boolean |
object GuildWarHistoryResponse 7 properties expand_more
Guild war history entry.
| Property | Type | Description |
|---|---|---|
| warId | string (uuid) | |
| opponentGuild | string | |
| yourScore | integer (int32) | |
| opponentScore | integer (int32) | |
| result | string | |
| treasuryReward | integer (int32) | |
| endsAt | string (date-time) |
object GuildWarStatusResponse 10 properties expand_more
Current guild war status.
| Property | Type | Description |
|---|---|---|
| isAtWar | boolean | Whether your guild is currently in a war. |
| warId | string (uuid) | |
| yourGuild | string | Your guild's name and score. |
| yourScore | integer (int32) | |
| opponentGuild | string | Opposing guild's name and score. |
| opponentScore | integer (int32) | |
| endsAt | string (date-time) | When the war ends. |
| daysRemaining | integer (int32) | |
| treasuryReward | integer (int32) | Treasury bonus for winning. |
| topContributors | array<WarContributorDto> | Top contributors from your guild. |
object InstructorDashboardResponse 5 properties expand_more
| Property | Type | Description |
|---|---|---|
| totalModules | integer (int32) | |
| publishedModules | integer (int32) | |
| totalStudents | integer (int32) | |
| studentsCompleted | integer (int32) | |
| modules | array<ModuleStatsDto> |
object InvitePlayerRequest 1 properties expand_more
| Property | Type | Description |
|---|---|---|
| username * | string | (min: 1 chars) |
object KickMemberRequest 1 properties expand_more
| Property | Type | Description |
|---|---|---|
| playerId * | string (uuid) |
object LessonDto 5 properties expand_more
| Property | Type | Description |
|---|---|---|
| index | integer (int32) | |
| title | string | |
| objective | string | |
| endpoint | string | |
| hint | string |
object LinkDiscordRequest 2 properties expand_more
| Property | Type | Description |
|---|---|---|
| discordUserId | string | |
| discordUsername | string |
object LoginRequest 2 properties expand_more
Credentials for authenticating an existing player.
| Property | Type | Description |
|---|---|---|
| username * | string | Your registered username (case-sensitive). (min: 1 chars) |
| password * | string | Your account password. (min: 1 chars) |
object LootDropResponse 6 properties expand_more
A loot drop earned from a battle.
| Property | Type | Description |
|---|---|---|
| id | string (uuid) | Unique drop ID. |
| dropType | string | Drop type: "CurrencyPack", "XpBoost", "RareTitle", or "CriticalGold". |
| description | string | Human-readable description of what you received. |
| value | integer (int32) | Numeric value of the reward (gold, XP, etc). |
| battleId | string (uuid) | The battle that triggered this drop. |
| droppedAt | string (date-time) | When the drop occurred. |
object MasteryResponse 6 properties expand_more
A player's mastery progression with a specific unit.
| Property | Type | Description |
|---|---|---|
| unitId | string (uuid) | The unit this mastery record belongs to. |
| level | integer (int32) | Current mastery level. Increases with experience. |
| experiencePoints | integer (int32) | Total experience points earned with this unit. |
| battlesUsed | integer (int32) | Total number of battles this unit has participated in. |
| winsWithUnit | integer (int32) | Number of battles won while using this unit. |
| winRate | number (double) | Win rate percentage (0-100) with this unit. Computed from wins / battles. |
object ModifierResponse 5 properties expand_more
An environmental modifier that affects all battles during its active period.
| Property | Type | Description |
|---|---|---|
| modifierId | string (uuid) | Modifier identifier. Null when returning the "Normal" placeholder. |
| name | string | Modifier name (e.g., "Healing Surge", "Glass Cannon", "Normal"). |
| description | string | Description of the modifier's effect on battle mechanics. |
| startDate | string (date-time) | UTC start of this modifier's active period. Null for the "Normal" placeholder. |
| endDate | string (date-time) | UTC end of this modifier's active period. Null for the "Normal" placeholder. |
object ModuleDetailResponse 6 properties expand_more
| Property | Type | Description |
|---|---|---|
| id | string (uuid) | |
| title | string | |
| description | string | |
| difficulty | string | |
| lessons | array<LessonDto> | |
| myProgress | EnrollmentProgressDto |
object ModuleStatsDto 5 properties expand_more
| Property | Type | Description |
|---|---|---|
| id | string (uuid) | |
| title | string | |
| enrolledCount | integer (int32) | |
| completedCount | integer (int32) | |
| averageProgress | number (double) |
object NotificationDigestResponse 3 properties expand_more
Summarized notification digest grouped by category.
| Property | Type | Description |
|---|---|---|
| totalUnread | integer (int32) | |
| categories | array<DigestCategory> | |
| recentHighlights | array<DigestItem> |
object NotificationPreferences 5 properties expand_more
| Property | Type | Description |
|---|---|---|
| battle | boolean | |
| guild | boolean | |
| progression | boolean | |
| marketplace | boolean | |
| competitive | boolean |
object PendingLootResponse 2 properties expand_more
Pending loot drops waiting to be claimed.
| Property | Type | Description |
|---|---|---|
| drops | array<LootDropResponse> | Unclaimed loot drops. |
| totalUnclaimed | integer (int32) | Total unclaimed drops. |
object PlayerCosmeticResponse 5 properties expand_more
Player's owned cosmetics.
| Property | Type | Description |
|---|---|---|
| cosmeticId | string (uuid) | |
| name | string | |
| category | string | |
| rarity | string | |
| isEquipped | boolean |
object PlayerLifetimeStatsResponse 26 properties expand_more
Lifetime stats for a player (sunk cost investment).
| Property | Type | Description |
|---|---|---|
| username | string | |
| level | integer (int32) | |
| rating | integer (int32) | |
| currentTier | string | |
| badge | string | |
| totalBattlesPlayed | integer (int32) | |
| totalBattlesWon | integer (int32) | |
| totalBattlesLost | integer (int32) | |
| winRate | number (double) | |
| currentWinStreak | integer (int32) | |
| highestWinStreak | integer (int32) | |
| highestRating | integer (int32) | |
| totalGoldEarned | integer (int64) | |
| currentGold | integer (int32) | |
| totalXpEarned | integer (int64) | |
| gemsEarnedTotal | integer (int32) | |
| gemsSpentTotal | integer (int32) | |
| unitsUnlocked | integer (int32) | |
| teamsCreated | integer (int32) | |
| achievementsUnlocked | integer (int32) | |
| achievementPoints | integer (int32) | |
| cosmeticsOwned | integer (int32) | |
| loginStreak | integer (int32) | |
| daysPlayed | integer (int32) | |
| memberSince | string (date-time) | |
| investmentSummary | string |
object PostChatRequest 1 properties expand_more
| Property | Type | Description |
|---|---|---|
| message | string |
object PracticeBattleRequest 2 properties expand_more
Request to fight an AI opponent in a practice battle.
| Property | Type | Description |
|---|---|---|
| teamId * | string (uuid) | Your team ID. Must be a team you own with at least one unit. |
| opponentId * | string | AI opponent ID from the GET /api/v1/ai/opponents list (e.g. "novice-1", "expert-3"). (min: 1 chars) |
object PremiumPerksResponse 16 properties expand_more
All active perks for the player's current subscription tier.
| Property | Type | Description |
|---|---|---|
| currentTier | string | |
| goldMultiplier | number (double) | |
| xpMultiplier | number (double) | |
| battlePassXpBonus | number (double) | |
| dailyBattleLimit | integer (int32) | |
| maxTeamSlots | integer (int32) | |
| canCreateGuild | boolean | |
| canRefreshChallenges | boolean | |
| guaranteedLootEveryNBattles | integer (int32) | |
| hasPremiumBattlePassTrack | boolean | |
| monthlyGemStipend | integer (int32) | |
| hasCreatorBadge | boolean | |
| hasExclusiveCosmetics | boolean | |
| lootRarityBoost | number (double) | |
| badge | string | |
| nextGemStipendAvailable | string (date-time) |
object ProblemDetails 5 properties expand_more
| Property | Type | Description |
|---|---|---|
| type | string | |
| title | string | |
| status | integer (int32) | |
| detail | string | |
| instance | string |
object PromoteMemberRequest 2 properties expand_more
| Property | Type | Description |
|---|---|---|
| playerId * | string (uuid) | |
| newRole * | string | (min: 1 chars) |
object PublishGuildStrategyRequest 3 properties expand_more
| Property | Type | Description |
|---|---|---|
| name | string | |
| description | string | |
| strategy | object |
object PurchaseCosmeticRequest 1 properties expand_more
Purchase request.
| Property | Type | Description |
|---|---|---|
| paymentMethod | string | "gems" or "gold" |
object QuickStartResponse 8 properties expand_more
Quick-start guide for new API consumers.
| Property | Type | Description |
|---|---|---|
| gameTitle | string | |
| baseUrl | string | |
| version | string | |
| openApiSpecUrl | string | |
| steps | array<QuickStartStep> | |
| auth | AuthGuide | |
| tips | array<string> | |
| exampleSnippets | array<SdkSnippet> |
object QuickStartStep 6 properties expand_more
| Property | Type | Description |
|---|---|---|
| order | integer (int32) | |
| action | string | |
| method | string | |
| endpoint | string | |
| description | string | |
| exampleBody | string |
object RedeemReferralResponse 3 properties expand_more
Result of redeeming a referral code during registration.
| Property | Type | Description |
|---|---|---|
| success | boolean | |
| bonusGoldAwarded | integer (int32) | |
| referrerUsername | string |
object ReferralInfoResponse 5 properties expand_more
Your referral code and stats.
| Property | Type | Description |
|---|---|---|
| referralCode | string | Your unique referral code. Share this with friends. |
| totalReferrals | integer (int32) | Total players who signed up using your code. |
| totalGoldEarned | integer (int32) | Gold earned from referral rewards so far. |
| rewardPerReferral | integer (int32) | Gold reward per successful referral. |
| referredPlayerBonus | integer (int32) | Bonus gold the referred player receives. |
object ReferralLeaderboardEntry 3 properties expand_more
A leaderboard entry for the referral program.
| Property | Type | Description |
|---|---|---|
| rank | integer (int32) | |
| username | string | |
| totalReferrals | integer (int32) |
object ReferralLeaderboardResponse 3 properties expand_more
Referral leaderboard response.
| Property | Type | Description |
|---|---|---|
| rankings | array<ReferralLeaderboardEntry> | |
| yourRank | integer (int32) | |
| yourReferrals | integer (int32) |
object RegisterRequest 3 properties expand_more
Credentials for creating a new player account.
| Property | Type | Description |
|---|---|---|
| username * | string | Your unique display name, visible to other players. 3-50 characters. (min: 3, max: 50 chars) |
| email * | string (email) | Email address for account recovery. Must be unique across all accounts. (min: 1, max: 100 chars) |
| password * | string | Account password. Minimum 8 characters. (min: 8, max: 100 chars) |
object RegisterWebhookRequest 3 properties expand_more
| Property | Type | Description |
|---|---|---|
| webhookUrl | string | |
| label | string | |
| eventTypes | array<string> |
object RenameUnitRequest 2 properties expand_more
Request to rename a unit.
| Property | Type | Description |
|---|---|---|
| unitId * | string (uuid) | The unit to rename. |
| newName * | string | New display name for the unit (3-50 characters). (min: 3, max: 50 chars) |
object ReplayResponse 8 properties expand_more
Battle replay data with shareable link and viewer statistics.
| Property | Type | Description |
|---|---|---|
| replayId | string (uuid) | Unique replay identifier. |
| battleId | string (uuid) | The battle this replay captures. |
| shareUrl | string | Unique shareable URL identifier. Append to /api/v1/replays/ to view. |
| viewCount | integer (int32) | Number of times this replay has been viewed. |
| isFeatured | boolean | Whether this replay has been featured for exceptional gameplay. |
| createdAt | string (date-time) | When this replay was created. |
| player1Name | string | Username of Player 1 in the battle. |
| player2Name | string | Username of Player 2 in the battle. |
object RerollStatsRequest 1 properties expand_more
Request to reroll a unit's stats.
| Property | Type | Description |
|---|---|---|
| unitId * | string (uuid) | The unit to reroll. |
object RivalInfoResponse 10 properties expand_more
Your current rival assignment.
| Property | Type | Description |
|---|---|---|
| rivalId | string (uuid) | Your rival's player ID. |
| rivalUsername | string | Your rival's username. |
| rivalRating | integer (int32) | Your rival's current API rating. |
| rivalLevel | integer (int32) | Your rival's level. |
| winsAgainstRival | integer (int32) | Wins you've scored against this rival. |
| lossesAgainstRival | integer (int32) | Losses against this rival. |
| bonusGoldEarned | integer (int32) | Bonus gold earned from rival victories so far. |
| bonusPerWin | integer (int32) | Bonus gold awarded per win against your rival. |
| expiresAt | string (date-time) | When this rival assignment expires and a new one is assigned. |
| hasRival | boolean | Whether you currently have a rival assigned. |
object SdkSnippet 3 properties expand_more
| Property | Type | Description |
|---|---|---|
| language | string | |
| label | string | |
| code | string |
object SeasonLeaderboardEntry 8 properties expand_more
A player's ranking in the seasonal leaderboard.
| Property | Type | Description |
|---|---|---|
| rank | integer (int32) | Leaderboard position (1-based). |
| playerId | string (uuid) | Player ID. |
| username | string | Player display name. |
| tier | string | Current season tier. |
| rating | integer (int32) | Current season API rating. |
| wins | integer (int32) | Total wins this season. |
| losses | integer (int32) | Total losses this season. |
| winRate | number (double) | Win rate percentage. |
object SeasonLeaderboardResponse 4 properties expand_more
Response containing the seasonal leaderboard.
| Property | Type | Description |
|---|---|---|
| seasonName | string | Season name. |
| rankings | array<SeasonLeaderboardEntry> | Ranked players ordered by rating. |
| totalPlayers | integer (int32) | Total players ranked this season. |
| yourRank | integer (int32) | Your position on the leaderboard. Null if not ranked. |
object SeasonRewardsResponse 6 properties expand_more
Rewards earned at the end of a season based on peak tier achieved.
| Property | Type | Description |
|---|---|---|
| seasonName | string | Season this reward is from. |
| peakTier | string | Peak tier achieved during this season. |
| goldReward | integer (int32) | Gold reward earned. |
| xpReward | integer (int32) | XP reward earned. |
| exclusiveTitle | string | Exclusive title earned (if any). |
| claimed | boolean | Whether rewards were successfully claimed. |
object SetBadgeRequest 1 properties expand_more
Request to set a profile badge.
| Property | Type | Description |
|---|---|---|
| badge | string | Badge name to equip, or null to remove. |
object SpotlightResponse 2 properties expand_more
| Property | Type | Description |
|---|---|---|
| featuredCreators | array<CreatorProfileResponse> | |
| month | string |
object StrategyConfig 3 properties expand_more
Declarative battle strategy that controls how your team's AI behaves in combat. Assign this to a team to automate tactical decisions.
| Property | Type | Description |
|---|---|---|
| formation | string | Formation type controlling positioning and stat bonuses. Options: "aggressive" (+attack), "defensive" (+defense), "balanced" (no bonus). |
| targetPriority | array<string> | Ordered list of target selection priorities evaluated top-to-bottom. Options: "lowest_hp", "highest_hp", "healers", "highest_threat", "random". |
| abilities | object | Conditional ability rules keyed by ability name. Controls when and how each ability is used during battle. |
object StrategyDownloadResponse 3 properties expand_more
Full strategy data returned after purchase, including the JSON configuration.
| Property | Type | Description |
|---|---|---|
| strategyId | string (uuid) | Unique strategy identifier. |
| name | string | Strategy display name. |
| strategyJson | string | The full strategy JSON. Use directly as the strategy field in team configuration. |
object StrategyRatingRequest 2 properties expand_more
Request to rate a marketplace strategy.
| Property | Type | Description |
|---|---|---|
| rating | integer (int32) | Star rating from 1 (poor) to 5 (excellent). (range: 1-5) |
| comment | string | Optional review comment. Up to 500 characters. (max: 500 chars) |
object StrategyResponse 10 properties expand_more
A strategy listing in the marketplace.
| Property | Type | Description |
|---|---|---|
| strategyId | string (uuid) | Unique strategy identifier. |
| name | string | Strategy display name chosen by the creator. |
| description | string | Creator's description of the strategy and its intended playstyle. |
| creatorName | string | Username of the player who published this strategy. |
| price | integer (int32) | Cost in currency to purchase. 0 means free. |
| downloadCount | integer (int32) | Number of times this strategy has been downloaded. |
| averageRating | number (double) | Community rating average (1.0-5.0 scale). |
| winRate | number (double) | Historical win rate percentage of battles using this strategy (0-100). |
| effectivenessMultiplier | number (double) | Anti-meta decay multiplier (0.5-1.0). Strategies lose effectiveness over time to prevent stagnation. |
| createdAt | string (date-time) | When this strategy was published. |
object StrategyUploadRequest 4 properties expand_more
Request to publish a new strategy to the marketplace.
| Property | Type | Description |
|---|---|---|
| name * | string | Display name for your strategy. 1-100 characters. (min: 1, max: 100 chars) |
| description | string | Describe your strategy's approach and ideal use case. Up to 500 characters. (max: 500 chars) |
| strategyJson * | string | The strategy configuration as a JSON string matching the StrategyConfig schema. (min: 1 chars) |
| price | integer (int32) | Price in currency. Set to 0 to share for free. Buyers pay this amount to download. |
object TeamConfigRequest 3 properties expand_more
Configuration for creating or updating a team of combat units.
| Property | Type | Description |
|---|---|---|
| name * | string | Display name for this team. 1-100 characters. (min: 1, max: 100 chars) |
| unitIds * | array<string> | IDs of units from your roster to include. 1-5 units required. |
| strategy | StrategyConfig |
object TeamResponse 7 properties expand_more
A configured team with its units and battle strategy.
| Property | Type | Description |
|---|---|---|
| _links | object | Hypermedia links to related resources (queue battle, delete team). |
| id | string (uuid) | Unique team identifier. |
| name | string | Team display name. |
| units | array<UnitSummary> | The units assigned to this team with their current stats. |
| strategy | StrategyConfig | |
| createdAt | string (date-time) | When this team was first created. |
| updatedAt | string (date-time) | When this team was last modified. |
object TournamentBracketResponse 5 properties expand_more
Tournament bracket view.
| Property | Type | Description |
|---|---|---|
| tournamentId | string (uuid) | |
| name | string | |
| totalRounds | integer (int32) | |
| rounds | array<BracketRound> | |
| winnerUsername | string |
object TournamentEntryRequest 1 properties expand_more
Request to enter a tournament.
| Property | Type | Description |
|---|---|---|
| teamId | string (uuid) | The team to compete with. |
object TournamentInfoResponse 12 properties expand_more
Tournament information with your entry status.
| Property | Type | Description |
|---|---|---|
| tournamentId | string (uuid) | |
| name | string | |
| status | string | |
| maxParticipants | integer (int32) | |
| currentParticipants | integer (int32) | |
| entryFee | integer (int32) | |
| prizes | array<TournamentPrize> | |
| startsAt | string (date-time) | |
| completedAt | string (date-time) | |
| isRegistered | boolean | Whether you are registered in this tournament. |
| yourSeed | integer (int32) | |
| isEliminated | boolean |
object TournamentPrize 4 properties expand_more
| Property | Type | Description |
|---|---|---|
| place | integer (int32) | |
| currency | integer (int32) | |
| xp | integer (int32) | |
| title | string |
object TreasuryDepositRequest 1 properties expand_more
| Property | Type | Description |
|---|---|---|
| amount | integer (int32) |
object TreasuryResponse 5 properties expand_more
| Property | Type | Description |
|---|---|---|
| balance | integer (int32) | |
| goldBonusPercent | integer (int32) | |
| maxRaidAttempts | integer (int32) | |
| maxMembers | integer (int32) | |
| availableUpgrades | array<GuildUpgradeOption> |
object TreasurySpendRequest 1 properties expand_more
| Property | Type | Description |
|---|---|---|
| upgradeId | string |
object UnitCustomizationResponse 11 properties expand_more
Result of a customization action.
| Property | Type | Description |
|---|---|---|
| unitId | string (uuid) | Updated unit details. |
| name | string | |
| customName | string | |
| isGolden | boolean | |
| rerollCount | integer (int32) | |
| health | integer (int32) | Current stats after any changes. |
| attack | integer (int32) | |
| defense | integer (int32) | |
| speed | integer (int32) | |
| goldSpent | integer (int32) | Gold spent on this action. |
| remainingCurrency | integer (int32) | Player's remaining currency. |
object UnitSummary 8 properties expand_more
Compact view of a unit's identity and combat stats.
| Property | Type | Description |
|---|---|---|
| id | string (uuid) | Unique unit identifier. |
| name | string | Unit display name (e.g., "Shadow Mage", "Iron Guardian"). |
| class | string | Combat class: Warrior, Mage, Ranger, Healer, or Tank. |
| level | integer (int32) | Current unit level. Higher levels have better stats. |
| health | integer (int32) | Maximum hit points. When reduced to 0, the unit is eliminated. |
| attack | integer (int32) | Offensive power. Increases damage dealt by abilities. |
| defense | integer (int32) | Damage mitigation. Reduces incoming damage. |
| speed | integer (int32) | Turn order priority. Faster units act first each turn. |
object UnlockUnitRequest 1 properties expand_more
| Property | Type | Description |
|---|---|---|
| templateUnitId | string (uuid) |
object UpdateGuildStrategyRequest 3 properties expand_more
| Property | Type | Description |
|---|---|---|
| name | string | |
| description | string | |
| strategy | object |
object VerifyDiscordRequest 1 properties expand_more
| Property | Type | Description |
|---|---|---|
| verificationCode | string |
object WarContributorDto 3 properties expand_more
| Property | Type | Description |
|---|---|---|
| username | string | |
| points | integer (int32) | |
| wins | integer (int32) |
object WebhookResponse 5 properties expand_more
| Property | Type | Description |
|---|---|---|
| id | string (uuid) | |
| label | string | |
| eventTypes | string | |
| isActive | boolean | |
| createdAt | string (date-time) |