code v1 · OpenAPI 3.0

API Documentation

The API is the game. Build your own client, configure strategies, and compete through HTTP requests.

28 endpoint groups 121 endpoints 120 models JWT Bearer auth
school

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.

1

Register

POST /api/v1/auth/register

Create an account with username, email, and password. Get your JWT token.

2

Browse Units

GET /api/v1/player/roster/available

Explore the unit shop. Five classes, each with unique abilities.

3

Unlock Units

POST /api/v1/player/roster/unlock

Spend your starting 1000 currency to recruit combatants.

4

Build a Team

POST /api/v1/team/configure

Assemble up to 5 units with a declarative battle strategy.

5

Enter Battle

POST /api/v1/battle/queue

Queue for matchmaking. The system pairs you by API rating.

6

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:

1

Register or Login

POST to /api/v1/auth/register or /api/v1/auth/login

2

Save Your Token

The response includes a JWT token valid for 60 minutes.

3

Include in All Requests

Add the header Authorization: Bearer <token>

4

Refresh Before Expiry

POST to /api/v1/auth/refresh for a new token.

Example
# 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..."

What's Next After Your First Battle?

You've got the basics. Here's where the game really opens up.

flag

Daily Challenges

Complete daily objectives for bonus gold and XP. New challenges every 24 hours.

GET /api/v1/challenges/daily
groups

Join a Guild

Team up with other players to tackle cooperative boss raids and earn shared rewards.

POST /api/v1/guild/create
star

Unit Mastery

The more you battle with a unit, the stronger your bond. Track mastery across all classes.

GET /api/v1/mastery/progress
trophy

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

shield

Auth

Player registration, login, and token management. Your journey begins here.

POST /api/v1/auth/register 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.

Prerequisites:
None — this is your starting point!

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

Register a new player
Request
{
  "username": "DragonSlayer42",
  "email": "player@example.com",
  "password": "SecurePass123!"
}
Response
{
  "playerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "username": "DragonSlayer42",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expiresAt": "2025-06-15T15:30:00Z"
}
tips_and_updates Save the JWT token from the response — you'll need it in the Authorization header for every subsequent request.
tips_and_updates Choose your username carefully! It's permanent and visible to other players on leaderboards.
POST /api/v1/auth/login 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>`.

Prerequisites:
Register an account

Responses

200 Authentication successful. Contains player ID, token, and expiration.
401 Invalid username or password.

Examples

Login with credentials
Request
{
  "username": "DragonSlayer42",
  "password": "SecurePass123!"
}
Response
{
  "playerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "username": "DragonSlayer42",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expiresAt": "2025-06-15T16:30:00Z"
}
tips_and_updates Tokens expire after 60 minutes. Set a timer or use the /auth/refresh endpoint before it lapses to avoid re-entering credentials.
POST /api/v1/auth/refresh 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.

Prerequisites:
Register or login to get a token

Responses

200 New token issued.
401 Current token is invalid or already expired.
tips_and_updates Set up an auto-refresh timer in your code to call this endpoint every 50 minutes, so your session never drops mid-battle.
person

Player

View your profile, manage your unit roster, and unlock new combatants.

GET /api/v1/player/profile expand_more

Get your player profile.

Returns your account details including level, currency balance, API rating, and counts of owned units and configured teams.

Prerequisites:
Register and login

Responses

200 Player profile with current stats.
401 Unauthorized
404 Player not found.
tips_and_updates Always check your currency balance here before attempting to unlock new units — insufficient funds will result in a 400 error.
GET /api/v1/player/roster 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.

Prerequisites:
Register and login

Responses

200 Array of owned units with full ability details.
tips_and_updates Review each unit's abilities carefully before building teams — knowing cooldown timers and AoE vs single-target can make or break your strategy.
POST /api/v1/player/roster/unlock 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.

Prerequisites:
Register and login Browse available units

Responses

201 Unit unlocked and added to your roster.
400 Insufficient currency or unit already owned.

Examples

Unlock a Warrior unit
Request
{
  "templateUnitId": "b7e4f2a1-9c38-4d56-a1e2-3f4b5c6d7e8f"
}
Response
{
  "id": "d4c3b2a1-8f7e-6d5c-4b3a-2e1f0a9b8c7d",
  "name": "Iron Vanguard",
  "class": "Warrior",
  "health": 120,
  "attack": 25,
  "defense": 30,
  "speed": 10,
  "currencyRemaining": 700
}
tips_and_updates Think rock-paper-scissors: Warriors beat Rogues, Rogues beat Mages, Mages beat Warriors. Choose units that complement each other to cover all matchups.
GET /api/v1/player/roster/available 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.

Prerequisites:
Register and login

Responses

200 Array of template units available for unlock.
tips_and_updates The class system (Warrior, Rogue, Mage, Healer, Tank) has built-in strengths and weaknesses — study the stats before spending currency.
GET /api/v1/player/achievements expand_more

Get your achievements.

Returns all achievements with your progress toward each one. Secret achievements are hidden until unlocked.

Prerequisites:
Register and login

Responses

200 Array of achievements with progress.
tips_and_updates Focus on combat achievements first — they reward gold and XP that accelerate your progression.
GET /api/v1/player/notifications/count expand_more

Get your unread notification count.

Responses

200 Unread count.
GET /api/v1/player/notifications 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 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 expand_more

Mark all notifications as read.

Responses

204 All notifications marked as read.
GET /api/v1/player/notifications/preferences expand_more

Get your notification preferences.

Responses

200 Current notification preferences.
PUT /api/v1/player/notifications/preferences expand_more

Update your notification preferences.

Responses

204 Preferences updated.
GET /api/v1/player/notifications/digest 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.

Prerequisites:
Register and login

Responses

200 Notification digest with category counts and highlights.
tips_and_updates Check the digest endpoint for a quick overview before diving into individual notifications.
groups

Team

Assemble squads of up to 5 units, assign battle strategies, and prepare for war.

POST /api/v1/team/configure 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.

Prerequisites:
Register and login Unlock at least 1 unit

Responses

201 Team created with full unit details and strategy.
400 Invalid team size, missing units, or units not in your roster.

Examples

Create a balanced team with strategy
Request
{
  "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"
      }
    ]
  }
}
Response
{
  "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"
}
tips_and_updates Mix unit classes for a balanced team — a pure Warrior squad gets shredded by Mages. Include at least one Healer or Tank for survivability.
tips_and_updates The strategy field is optional but powerful. Even a simple target-priority rule like 'focus healers first' can dramatically improve your win rate.
GET /api/v1/team/{teamId} expand_more

Get a specific team by ID.

Prerequisites:
Create a team

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} 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.

Prerequisites:
Create a team

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.
tips_and_updates This is a full replacement, not a partial update — always send the complete team configuration including all unit IDs, even the ones that haven't changed.
DELETE /api/v1/team/{teamId} expand_more

Delete a team.

Permanently removes a team configuration. The units themselves remain in your roster.

Prerequisites:
Create a team

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.
tips_and_updates Deleting a team only removes the configuration — all your units remain safely in your roster and can be reassigned to other teams.
GET /api/v1/team/list expand_more

List all your teams.

Returns every team you have configured, each with full unit details and strategy.

Prerequisites:
Create at least one team

Responses

200 Array of all your teams.
bolt

Battle

Enter the arena. Queue for matches, track ongoing battles, and review detailed results.

POST /api/v1/battle/queue 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.

Prerequisites:
Register and login Build a team

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

Queue Ranked Battle
Request
{
  "teamId": "a1b2c3d4-5678-9abc-def0-1234567890ab",
  "mode": "ranked"
}
Response
{
  "battleId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "status": "Queued",
  "queuedAt": "2026-02-11T14:30:00Z",
  "estimatedWaitSeconds": 12
}
tips_and_updates Always check the active modifiers via GET /api/v1/modifiers/active before queuing — a modifier that weakens your main unit class can cost you the match.
tips_and_updates Use casual mode to test new strategies without risking your ranked rating. Switch to ranked once your win rate in casual exceeds 60%.
GET /api/v1/battle/status/{battleId} expand_more

Check the status of a battle.

Poll this endpoint to track your battle from queue to completion. Status progresses: Queued → InProgress → Completed.

Prerequisites:
Queue a battle

Parameters

Name In Type Description
battleId * Path string The battle to check.

Responses

200 Current battle status with timing information.
404 Battle not found.
tips_and_updates Poll this endpoint every 3-5 seconds after queuing. Most battles resolve within 15 seconds, so aggressive polling just wastes your rate limit.
GET /api/v1/battle/results/{battleId} 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.

Prerequisites:
Queue a battle Wait for completion

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.
tips_and_updates Study the combat log turn by turn to see exactly where your units fell. Look for turns where your healer was targeted early — that usually signals a strategy gap you can fix with better positioning.
GET /api/v1/battle/history expand_more

Get your recent battle history.

Returns your past battles in reverse chronological order with pagination support.

Prerequisites:
Complete at least one battle

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.
tips_and_updates Pull your last 50 battles and tally losses by opponent unit class. If one class beats you consistently, adjust your team composition to add a counter before your next ranked session.
star

Leaderboard

See who dominates the rankings. Global leaderboards sorted by API (Arena Power Index) rating.

GET /api/v1/leaderboard expand_more

Get the global leaderboard.

Returns the top players ranked by API (Arena Power Index) rating with win/loss statistics.

Prerequisites:
Register and login

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.
tips_and_updates Fetch the top 10 and inspect their win rates. Players above 70% win rate often rely on specific unit-class synergies you can reverse-engineer by reviewing their public battle replays.
GET /api/v1/leaderboard/player/{playerId} expand_more

Get a specific player's ranking.

Look up any player's global rank, rating, and battle statistics.

Prerequisites:
Register and login

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.
tips_and_updates Compare your win rate against the top 10 players periodically. Once you break 50% against the upper bracket, you are ready to push for a higher rank in competitive seasons.
store

Strategy Marketplace

Browse, upload, purchase, and rate community-created battle strategies.

GET /api/v1/strategies/browse 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

Browse top-rated strategies
Request
GET /api/v1/strategies/browse?sortBy=rating&limit=5&offset=0
Response
[
  {
    "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
  }
]
tips_and_updates Sort by rating to find proven strategies that consistently win battles.
POST /api/v1/strategies/upload 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.

Prerequisites:
Register and login Build and test your strategy in battles first

Responses

201 Strategy published to the marketplace.
400 Invalid strategy configuration or missing required fields.

Examples

Publish a free strategy
Request
{
  "name": "Defensive Turtle",
  "description": "Tanky frontline with healer support",
  "strategyJson": "{\"formation\":\"defensive\",\"priority\":\"survive\"}",
  "price": 0
}
Response
{
  "strategyId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "name": "Defensive Turtle",
  "description": "Tanky frontline with healer support",
  "price": 0,
  "createdAt": "2026-02-11T14:30:00Z"
}
tips_and_updates You earn currency every time another player purchases your strategy.
tips_and_updates Strategies with high win rates attract more downloads and generate more income.
POST /api/v1/strategies/{strategyId}/download 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.

Prerequisites:
Register and login

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.
tips_and_updates Check the win rate and effectiveness multiplier before buying to ensure a good investment.
POST /api/v1/strategies/{strategyId}/rate expand_more

Rate a marketplace strategy.

Submit a 1-5 star rating with optional comment. You can only rate strategies you have downloaded.

Prerequisites:
Download a strategy

Parameters

Name In Type Description
strategyId * Path string The strategy to rate.

Responses

200 Rating submitted.
404 Strategy not found.
tips_and_updates Honest ratings help the community find the best strategies and reward quality creators.
shield

Guild

Create and manage guilds. Invite members, assign roles, coordinate via chat, and share strategies.

POST /api/v1/guild/create 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.

Prerequisites:
Register and login Premium subscription

Responses

201 Guild created. You are now the leader.
400 Already in a guild, name/tag taken, or insufficient tier.

Examples

Create a guild
Request
{
  "name": "Shadow Wolves",
  "tag": "SWLF",
  "description": "Elite PvP guild focused on ranked battles"
}
Response
{
  "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"
}
tips_and_updates Guild creation requires Premium tier. Once created, your guild starts with 20 member slots — purchase upgrades from the treasury to expand.
DELETE /api/v1/guild/{guildId} 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.

Prerequisites:
Create a guild

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.
tips_and_updates This action is irreversible and removes all members. Consider transferring leadership instead.
GET /api/v1/guild/{guildId} expand_more

Get guild details.

Prerequisites:
Register and login

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 expand_more

Get your current guild.

Returns guild details for the guild you currently belong to.

Prerequisites:
Join a guild

Responses

200 Your guild info.
404 You are not in a guild.
GET /api/v1/guild/{guildId}/members expand_more

List guild members.

Prerequisites:
Register and login

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 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.

Prerequisites:
Join a guild Officer or Leader role

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

Invite a player
Request
{
  "username": "EliteWarrior42"
}
Response
{
  "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"
}
tips_and_updates Invites expire after 7 days. If the player doesn't respond, you can send another invite once it expires.
GET /api/v1/guild/invites expand_more

View your pending guild invites.

Prerequisites:
Register and login

Responses

200 Array of pending invites.
POST /api/v1/guild/invites/{inviteId}/accept expand_more

Accept a guild invite.

Prerequisites:
Receive 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.
tips_and_updates Accepting an invite automatically declines all your other pending invites.
POST /api/v1/guild/invites/{inviteId}/decline expand_more

Decline a guild invite.

Prerequisites:
Receive 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 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.

Prerequisites:
Create or join a guild Leader role

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 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.

Prerequisites:
Create a guild Leader role

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

Promote to Officer
Request
{
  "playerId": "d4c3b2a1-8f7e-6d5c-4b3a-2e1f0a9b8c7d",
  "newRole": "Officer"
}
Response
{
  "message": "Player promoted to Officer."
}
tips_and_updates Promoting someone to Leader transfers ownership — you'll become an Officer. This cannot be undone without the new leader's cooperation.
POST /api/v1/guild/leave expand_more

Leave your current guild.

Voluntarily leave the guild you belong to. Guild leaders cannot leave — transfer leadership first or delete the guild.

Prerequisites:
Join a guild

Responses

204 You have left the guild.
400 Not in a guild, or you are the leader.
tips_and_updates Leaders must transfer leadership (promote someone to Leader) or delete the guild before they can leave.
GET /api/v1/guild/{guildId}/treasury expand_more

View guild treasury and available upgrades.

Shows the guild's gold balance, current upgrade levels, and what upgrades can be purchased.

Prerequisites:
Join a guild

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.
tips_and_updates Coordinate deposits with your guildmates to save up for powerful upgrades like the 20% gold bonus.
POST /api/v1/guild/{guildId}/treasury/spend 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.

Prerequisites:
Create a guild Deposit gold into treasury

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

Purchase an upgrade
Request
{
  "upgradeId": "gold_bonus_10"
}
Response
{
  "balance": 20000,
  "goldBonusPercent": 10,
  "maxRaidAttempts": 3,
  "maxMembers": 20
}
tips_and_updates The gold_bonus_10 upgrade (30,000g) pays for itself over time as every member earns 10% more gold.
POST /api/v1/guild/{guildId}/treasury/deposit 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.

Prerequisites:
Join a guild Have gold to 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.
tips_and_updates Depositing gold increases your contribution points — guilds often use this to track member participation.
GET /api/v1/guild/{guildId}/chat 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.

Prerequisites:
Join a guild

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.
tips_and_updates System messages (join/leave/boss events) appear automatically in the chat feed alongside player messages.
POST /api/v1/guild/{guildId}/chat 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.

Prerequisites:
Join a 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 expand_more

List guild strategies.

View all battle strategies shared in the guild library. Strategies are sorted by usage count.

Prerequisites:
Join a guild

Parameters

Name In Type Description
guildId * Path string The guild to view strategies of.

Responses

200 Array of guild strategies.
tips_and_updates Copy a high-usage strategy's JSON into your team configuration to benefit from proven tactics.
POST /api/v1/guild/{guildId}/strategies expand_more

Publish a strategy to the guild library.

Share a battle strategy with your guild. Requires Officer or Leader role.

Prerequisites:
Join a guild 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.
tips_and_updates Include a detailed description explaining when and how to use the strategy — your guildmates will thank you.
PUT /api/v1/guild/{guildId}/strategies/{strategyId} expand_more

Update a guild strategy.

Modify a strategy in the guild library. Only the original creator or the guild leader can update.

Prerequisites:
Publish a strategy

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} expand_more

Delete a guild strategy.

Remove a strategy from the guild library. Only the original creator or guild leader can delete.

Prerequisites:
Publish a strategy

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.
local_fire_department

Guild Boss

Cooperative raid encounters. Rally your guild to defeat powerful bosses for shared rewards.

GET /api/v1/guild/boss/current 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.

Prerequisites:
Register and login Join a guild

Responses

200 Active boss details with HP, rewards, and expiration.
404 Not in a guild, or no active boss encounter.

Examples

View current boss
Response
{
  "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
}
tips_and_updates Coordinate attack timing with your guildmates to chain damage before the boss expires.
POST /api/v1/guild/boss/attempt 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.

Prerequisites:
Join a guild Build a team

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

Attack the boss
Request
{
  "bossId": "b0a1c2d3-e4f5-6789-0abc-def123456789",
  "teamId": "d4e5f6a7-b8c9-0123-4567-890abcdef012"
}
Response
{
  "attemptId": "a1234567-b89c-def0-1234-567890abcdef",
  "damageDealt": 4250,
  "wasKillingBlow": false,
  "attemptedAt": "2026-02-11T15:22:00Z"
}
tips_and_updates Send your strongest team composition for maximum damage output against the boss.
tips_and_updates Landing the killing blow grants bonus currency and experience rewards to that player.
GET /api/v1/guild/boss/leaderboard expand_more

Get the boss damage leaderboard.

See which guild members dealt the most damage to a specific boss encounter.

Prerequisites:
Join a guild

Parameters

Name In Type Description
bossId Query string The boss encounter to view rankings for.

Responses

200 Damage attempts ranked by damage dealt.
track_changes

Challenges

Daily personalized objectives that reward currency and experience. Reset every 24 hours.

GET /api/v1/challenges/daily 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.

Prerequisites:
Register and login

Responses

200 Array of active challenges with progress and reward info.

Examples

Get daily challenges
Response
[
  {
    "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"
  }
]
tips_and_updates Check your daily challenges before queueing battles to maximize reward earnings.
POST /api/v1/challenges/claim 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.

Prerequisites:
Complete a challenge objective

Responses

200 Reward claimed successfully.
400 Challenge not yet completed or already claimed.
404 Challenge not found.
tips_and_updates Claim your rewards before the 24-hour expiry or they will be lost forever.
POST /api/v1/challenges/refresh 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.

Prerequisites:
Premium or Premium Plus subscription

Responses

200 Challenges refreshed. Fetch `/daily` to see new ones.
400 Not a Premium subscriber or no challenges to refresh.
tips_and_updates Use refresh strategically — if you get a hard challenge you can't complete, swap it for a new set.
star

Mastery

Track unit mastery progression. The more you battle with a unit, the stronger the bond.

GET /api/v1/mastery/units 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.

Prerequisites:
Register and login Complete at least one battle

Responses

200 Array of mastery records for all units with battle experience.

Examples

Get all unit mastery
Response
[
  {
    "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
  }
]
tips_and_updates Focus on mastering the units you use most often for faster progression and stronger teams.
GET /api/v1/mastery/unit/{unitId} 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.

Prerequisites:
Register and login

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.
tips_and_updates Win rate is the key driver of mastery growth -- winning battles grants more XP than losing.
bolt

Modifiers

Weekly environmental effects that shake up the meta. Adapt or fall behind.

GET /api/v1/modifiers/current 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

Get active modifier
Response
{
  "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"
}
tips_and_updates Adapt your team composition to the current modifier for a significant competitive edge.
GET /api/v1/modifiers/upcoming 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.
tips_and_updates Prepare your team for the next rotation by checking upcoming modifiers in advance.
movie

Replays

Create and share battle replays. Study your victories and learn from defeats.

POST /api/v1/replays/create 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.

Prerequisites:
Complete a 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

Create a replay
Request
{
  "battleId": "b7e8f9a0-1234-5678-9abc-def012345678"
}
Response
{
  "replayId": "r1a2b3c4-d5e6-7890-abcd-ef1234567890",
  "battleId": "b7e8f9a0-1234-5678-9abc-def012345678",
  "shareUrl": "xK9mPq2v",
  "viewCount": 0,
  "createdAt": "2026-02-11T16:45:00Z"
}
tips_and_updates Share your best victories with the community to build your reputation as a top strategist.
GET /api/v1/replays/{shareUrl} expand_more

View a battle replay.

Retrieve a battle replay by its share URL. No authentication required — anyone can view shared replays. Each view increments the replay's view counter.

Parameters

Name In Type Description
shareUrl * Path string The unique share URL identifier.

Responses

200 Replay details with player names and view count.
404 Replay not found or share URL is invalid.
tips_and_updates Study replays of your defeats to identify weaknesses and improve your battle strategies.
code

AI Practice

Fight AI opponents to learn, experiment, and test strategies without risking your rating.

GET /api/v1/ai/opponents 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.

Prerequisites:
Register and login

Responses

200 List of AI opponents with difficulty and team information.

Examples

List AI Opponents
Response
{
  "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
}
tips_and_updates Start with 'Training Dummy' (novice-1) to learn how the battle system works. Once you win consistently, move up to intermediate opponents to test real strategies.
tips_and_updates Expert AI opponents use the same max-tier units and optimized strategies that top-ranked players use. If you can beat 'The Undefeated', you're ready for competitive play.
POST /api/v1/ai/practice 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.

Prerequisites:
Register and login Build a team Choose an AI opponent

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

Fight AI Opponent
Request
{
  "teamId": "a1b2c3d4-5678-9abc-def0-1234567890ab",
  "opponentId": "novice-1"
}
Response
{
  "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
  }
}
tips_and_updates Fight the same AI opponent multiple times with different strategy configs to see which formation and ability conditions work best. The AI always uses the same strategy, making it a perfect control variable.
tips_and_updates Practice battles are the safest way to test expensive team compositions. Unlock a new 600g unit? Test it against AI before risking your ranked rating.
star

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 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.

Prerequisites:
Register and login

Responses

200 Current season info with your ranking progress.

Examples

Get Current Season
Response
{
  "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"
}
tips_and_updates Check your season progress daily. Knowing exactly how many rating points you need for the next tier helps you decide whether to play it safe or push for promotion.
tips_and_updates End-of-season rewards are based on your PEAK tier, not your current tier. Once you hit Diamond, your reward is locked even if you drop back to Platinum.
GET /api/v1/season/leaderboard 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.

Prerequisites:
Register and login

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.
tips_and_updates Study the top players' win rates and tiers. If the #1 player has a 70% win rate, that's the benchmark. Compare your win rate to gauge how close you are to climbing.
POST /api/v1/season/rewards/{seasonId} 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

Prerequisites:
Complete a ranked season Season must have ended

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

Claim Season Rewards
Response
{
  "seasonName": "Season 1: Dawn of Battle",
  "peakTier": "Gold",
  "goldReward": 500,
  "xpReward": 200,
  "exclusiveTitle": "Gold Gladiator",
  "claimed": true
}
tips_and_updates Don't forget to claim rewards from past seasons! Check for unclaimed rewards after each season ends. The gold and XP can give you a head start in the new season.
code

Loot

Random loot drops from battles. Collect currency packs, XP boosts, rare titles, and critical gold jackpots.

GET /api/v1/loot/pending 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.

Prerequisites:
Complete at least one battle

Responses

200 List of unclaimed loot drops.
tips_and_updates Loot drops stack up! Check your pending loot after a battle session and claim them all at once for a satisfying gold dump.
tips_and_updates Win streaks increase your drop chance from 15% to 25%. Going on a 3+ win streak means roughly 1 in 4 battles will drop bonus loot.
POST /api/v1/loot/claim 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.

Prerequisites:
Have unclaimed loot drops

Responses

200 Loot successfully claimed with totals.
400 No unclaimed loot drops to claim.

Examples

Claim All Loot
Response
{
  "goldAwarded": 750,
  "xpAwarded": 150,
  "titlesUnlocked": ["Lucky Strike"],
  "dropsClaimed": 4
}
tips_and_updates Don't sit on unclaimed loot for too long. That gold could be funding your next unit unlock or team upgrade right now!
code

Referral

Invite friends and earn rewards. Share your referral code for bonus gold when they sign up.

GET /api/v1/referral/info 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.

Prerequisites:
Register and login

Responses

200 Your referral code and statistics.

Examples

Get Referral Info
Response
{
  "referralCode": "ABCD1234",
  "totalReferrals": 3,
  "totalGoldEarned": 1500,
  "rewardPerReferral": 500,
  "referredPlayerBonus": 300
}
tips_and_updates Share your referral code in Discord servers, Reddit posts, or with classmates. Each referral nets you 500g — that's enough to unlock a mid-tier unit.
POST /api/v1/referral/redeem/{code} 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.

Prerequisites:
Register and login

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

Redeem Code
Response
{
  "success": true,
  "bonusGoldAwarded": 300,
  "referrerUsername": "FriendlyPlayer"
}
tips_and_updates Redeem a referral code right after registering to start with 1,300g instead of 1,000g. That extra 300g lets you unlock your first unit immediately.
GET /api/v1/referral/leaderboard expand_more

View the referral leaderboard.

See who has referred the most players. Top referrers are driving community growth.

Prerequisites:
Register and login

Parameters

Name In Type Description
limit Query integer Max entries (default 20, max 50). (default: 20)

Responses

200 Referral leaderboard with your rank.
code

Unit Customization

Gold sinks: rename units, reroll stats, and apply permanent golden upgrades.

POST /api/v1/units/rename 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).

Prerequisites:
Own at least one unit

Responses

200 Unit renamed successfully.
400 Insufficient gold, invalid name, or unit not found.

Examples

Rename Unit
Request
{
  "unitId": "...",
  "newName": "Thunderstrike"
}
Response
{
  "unitId": "...",
  "name": "Bronze Knight",
  "customName": "Thunderstrike",
  "goldSpent": 200,
  "remainingCurrency": 800
}
tips_and_updates Naming your units creates emotional attachment. You'll fight harder for 'Thunderstrike' than 'Bronze Knight'. That's psychology working in your favor.
POST /api/v1/units/reroll 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.

Prerequisites:
Own at least one unit Have 500g

Responses

200 Stat rerolled with new values.
400 Insufficient gold or unit not found.
tips_and_updates Rerolling is a gamble. Track your unit's stats before and after — if you get a worse roll, you can reroll again (for another 500g). High risk, high reward.
POST /api/v1/units/golden-upgrade 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.

Prerequisites:
Own at least one unit Have 2000g

Responses

200 Unit upgraded to golden status.
400 Already golden, insufficient gold, or unit not found.

Examples

Golden Upgrade
Request
{
  "unitId": "..."
}
Response
{
  "unitId": "...",
  "name": "Archmage",
  "isGolden": true,
  "health": 105,
  "attack": 47,
  "defense": 15,
  "speed": 21,
  "goldSpent": 2000,
  "remainingCurrency": 3000
}
tips_and_updates Golden upgrade your most-used units first. A 5% boost on a unit that fights every battle compounds into hundreds of extra damage over a season.
track_changes

Rival

Auto-assigned rivals for competitive motivation. Beat your nemesis for bonus gold.

GET /api/v1/rival/current 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.

Prerequisites:
Register and login

Responses

200 Your current rival info, or hasRival=false if no suitable rival found.

Examples

Get Rival
Response
{
  "rivalId": "...",
  "rivalUsername": "ShadowBlade42",
  "rivalRating": 1050,
  "rivalLevel": 5,
  "winsAgainstRival": 2,
  "lossesAgainstRival": 1,
  "bonusGoldEarned": 200,
  "bonusPerWin": 100,
  "hasRival": true
}
tips_and_updates Your rival is matched by rating, so they're always a fair challenge. Beating them proves you deserve your rank — and the 100g bonus doesn't hurt either.
tips_and_updates Rivals rotate weekly. If you get a tough rival, focus on other battles. If you get an easy one, farm those bonus wins!
star

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 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.

Prerequisites:
Register and login

Responses

200 Your battle pass progress with all reward details.

Examples

Get Progress
Response
{
  "passName": "Season 1 Battle Pass",
  "currentLevel": 12,
  "currentXp": 450,
  "xpToNextLevel": 550,
  "maxLevel": 30,
  "overallProgressPercent": 41.5,
  "hasPremium": false,
  "rewards": [...],
  "daysRemaining": 34
}
tips_and_updates Battle pass XP comes from everything you do — battles, challenges, and daily logins. Play regularly to maximize your progress.
tips_and_updates Premium Plus subscribers get the premium track automatically included, plus 25% bonus XP toward pass levels.
POST /api/v1/battlepass/claim/{level} 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.

Prerequisites:
Reach the specified battle pass level

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

Claim Level 5
Response
{
  "success": true,
  "level": 5,
  "track": "free",
  "rewardType": "currency",
  "rewardValue": 275,
  "description": "Level 5 Milestone: 250g",
  "message": "Claimed Level 5 Milestone: 250g!"
}
tips_and_updates Don't forget to claim your rewards! They don't auto-grant — you need to claim each level manually.
bolt

Guild Wars

Weekly guild vs guild matchups. Your ranked wins earn points — the winning guild gets a treasury bonus.

GET /api/v1/guildwar/status 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.

Prerequisites:
Join a guild with 3+ members

Responses

200 Current war status, or isAtWar=false if not matched.

Examples

Get War Status
Response
{
  "isAtWar": true,
  "warId": "...",
  "yourGuild": "Shadow Legion",
  "yourScore": 150,
  "opponentGuild": "Storm Riders",
  "opponentScore": 120,
  "daysRemaining": 4,
  "treasuryReward": 750,
  "topContributors": [...]
}
tips_and_updates Your ranked wins automatically contribute to guild wars — just play normally and you'll help your guild!
tips_and_updates Check the top contributors list to see who's carrying your guild this week.
GET /api/v1/guildwar/history 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.

Prerequisites:
Join a guild

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.
tips_and_updates Review past wars to see your guild's strength — are you winning more than losing?
star

Tournament

Weekly single-elimination tournaments. Pay entry fee, compete in brackets, win big prizes.

GET /api/v1/tournament/current 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.

Prerequisites:
Register and login, have at least 100g

Responses

200 Tournament info with your registration status.

Examples

Get Tournament
Response
{
  "tournamentId": "...",
  "name": "Weekly Tournament #20260212",
  "status": "registration",
  "maxParticipants": 16,
  "currentParticipants": 7,
  "entryFee": 100,
  "prizes": [...],
  "isRegistered": false
}
tips_and_updates Entry is only 100g but first place wins 5000g + a title. High risk, high reward — enter if you're confident in your strategy.
tips_and_updates Tournaments seed by rating, so high-rated players get easier first-round matchups.
POST /api/v1/tournament/enter 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.

Prerequisites:
Have a configured team and 100g

Responses

200 Successfully registered. Returns updated tournament info.
400 Not enough currency, already registered, or tournament full/closed.
tips_and_updates Pick your strongest team — you can't change it once registered.
GET /api/v1/tournament/bracket/{tournamentId} 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.

Prerequisites:
Tournament must have started

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.
tips_and_updates Study the bracket to see who you might face next — prepare a counter-strategy!
code

Cosmetics

Premium cosmetic shop. Customize your profile, units, and battle effects with gems or gold.

GET /api/v1/cosmetics/shop 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.

Prerequisites:
Register and login

Responses

200 Shop listing with your balance and ownership status.
tips_and_updates Legendary items can only be purchased with gems — save your premium currency for these exclusive cosmetics.
GET /api/v1/cosmetics/owned expand_more

View your owned cosmetics.

Prerequisites:
Register and login

Responses

200 List of cosmetics you own with equipped status.
POST /api/v1/cosmetics/purchase/{cosmeticId} 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).

Prerequisites:
Have enough gems or gold

Parameters

Name In Type Description
cosmeticId * Path string The cosmetic item to purchase.

Responses

200 Purchase successful.
400 Insufficient funds or already owned.
tips_and_updates Gold prices are much higher than gem equivalents — gems are the better deal if you have them.
POST /api/v1/cosmetics/equip/{cosmeticId} 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.

Prerequisites:
Own the cosmetic

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 expand_more

Check your gem and gold balance.

Prerequisites:
Register and login

Responses

200 Your current balance and lifetime gem stats.
code

Premium Plus

Exclusive perks for Premium Plus subscribers. Multipliers, badges, monthly gems, and exclusive content.

GET /api/v1/premium/perks expand_more

View all perks for your current subscription tier.

Returns a complete breakdown of every benefit your subscription tier provides, including multipliers, limits, and exclusive features. Free players can see what they're missing — use this to decide if upgrading is worth it.

Prerequisites:
Register and login

Responses

200 Perk breakdown for your current tier.

Examples

Get perks for Premium Plus
Response
{
  "currentTier": "PremiumPlus",
  "goldMultiplier": 2.0,
  "xpMultiplier": 1.5,
  "battlePassXpBonus": 0.25,
  "dailyBattleLimit": -1,
  "maxTeamSlots": 10,
  "canCreateGuild": true,
  "canRefreshChallenges": true,
  "guaranteedLootEveryNBattles": 3,
  "hasPremiumBattlePassTrack": true,
  "monthlyGemStipend": 500,
  "hasCreatorBadge": true,
  "hasExclusiveCosmetics": true,
  "lootRarityBoost": 0.15,
  "badge": "creator"
}
tips_and_updates Compare Free vs Premium vs Premium Plus perks to find the best value for your playstyle.
POST /api/v1/premium/claim-gems expand_more

Claim your monthly gem stipend (Premium Plus only).

Premium Plus subscribers receive 500 free gems every 30 days. Claim them here. The timer resets from your last claim date, not the calendar month.

Prerequisites:
Premium Plus subscription

Responses

200 Gems claimed successfully.
400 Not eligible or already claimed this period.
tips_and_updates Don't forget to claim your monthly gems — they don't auto-deposit!
POST /api/v1/premium/badge expand_more

Set your profile badge.

Equip a badge that displays on your profile. Different tiers unlock different badges. Premium Plus members get exclusive badges like "creator", "elite", and "vip". Send null to remove your badge.

Prerequisites:
Register and login

Responses

200 Badge updated.
400 Badge not available for your tier.

Examples

Set creator badge
Request
{ "badge": "creator" }
tips_and_updates The 'creator' badge is Premium Plus exclusive — show off your supporter status!
GET /api/v1/premium/badges expand_more

List badges available for your tier.

See which badges you can equip based on your subscription tier. Upgrading to Premium Plus unlocks exclusive badges.

Prerequisites:
Register and login

Responses

200 List of available badge names.
code

Activity Feed

Your game journey in a timeline. Track battles, achievements, level-ups, and view other players' activity.

GET /api/v1/activity/feed 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.

Prerequisites:
Register and login

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.
tips_and_updates Use the activity feed to track your progress and see a narrative of your game journey.
GET /api/v1/activity/feed/{username} 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.

Prerequisites:
Register and login

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.
tips_and_updates Scout your opponents' activity feeds to learn their strategies and playstyle.
GET /api/v1/activity/stats 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.

Prerequisites:
Register and login

Responses

200 Complete lifetime stats breakdown.

Examples

Get lifetime stats
Response
{
  "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"
}
tips_and_updates Show off your lifetime stats to flex your dedication. Total gold earned is the ultimate brag.
GET /api/v1/activity/stats/{username} 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.

Prerequisites:
Register and login

Parameters

Name In Type Description
username * Path string The player's username.

Responses

200 Player's lifetime stats.
404 Player not found.
code

Education

Learn API concepts through guided gameplay. Create curricula, enroll students, and track progress.

GET /api/v1/education/modules 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.

Prerequisites:
Register and login

Responses

200 List of published modules.
tips_and_updates Start with a beginner module to learn the game's API endpoints step by step.
POST /api/v1/education/modules 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.

Prerequisites:
Register and login

Responses

201 Module created. Use the join code or publish it for public access.
400 Invalid module data.

Examples

Create a beginner module
Request
{
  "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" }
  ]
}
tips_and_updates Structure lessons from simple (register, login) to complex (strategies, battles) for best learning flow.
GET /api/v1/education/modules/{moduleId} expand_more

Get detailed module info and your progress.

Prerequisites:
Register and login

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 expand_more

Publish a module for public access.

Prerequisites:
Create a module

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} expand_more

Enroll in a module.

Prerequisites:
Register and login

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} expand_more

Enroll using a join code.

Prerequisites:
Register and login

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 expand_more

Mark a lesson as complete.

Prerequisites:
Enroll in a module

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.
tips_and_updates Complete lessons in order for the best learning experience, but you can skip ahead if you already know the concepts.
GET /api/v1/education/my-progress expand_more

Get your enrolled modules and progress.

Prerequisites:
Enroll in at least one module

Responses

200 List of enrollments with progress.
GET /api/v1/education/instructor/dashboard 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.

Prerequisites:
Create at least one module

Responses

200 Dashboard with module stats.
code

SDK

Developer tools: quick-start guide, endpoint catalog, code snippets, and game status. No auth required.

GET /api/v1/sdk/quickstart 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.
tips_and_updates Start here! This endpoint gives you everything you need to build your first client.
GET /api/v1/sdk/endpoints 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.
tips_and_updates Pair this with the OpenAPI spec at /openapi/v1.json for full request/response schemas.
GET /api/v1/sdk/status 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.
tips_and_updates Use this endpoint for health checks and status monitoring in your bot or client.
code

Discord

Link your Discord account, register webhooks for game events, and enable bot commands.

POST /api/v1/discord/link 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.

Prerequisites:
Register and login

Responses

200 Link initiated. Use the verification code to complete.
400 Already linked or Discord ID in use.
tips_and_updates Link your Discord to get battle notifications and use bot commands to check your stats.
POST /api/v1/discord/verify expand_more

Verify Discord link with code.

Prerequisites:
Initiate Discord link

Responses

200 Discord account verified and linked.
400 Invalid code.
POST /api/v1/discord/webhooks 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.

Prerequisites:
Register and login

Responses

201 Webhook registered.
400 Invalid URL or limit reached.

Examples

Register battle webhook
Request
{
  "webhookUrl": "https://discord.com/api/webhooks/...",
  "label": "Battle Alerts",
  "eventTypes": ["battle_won", "battle_lost", "level_up"]
}
tips_and_updates Set up a webhook to get real-time battle results posted to your Discord channel.
GET /api/v1/discord/webhooks expand_more

List your registered webhooks.

Responses

200 List of webhooks.
GET /api/v1/discord/lookup/{discordUserId} 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.
tips_and_updates Use this from your Discord bot to display player stats when someone uses a slash command.
star

Creators

Content creator program. Apply, get verified, track content performance, and earn gem revenue share.

POST /api/v1/creators/apply 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.

Prerequisites:
Register and login

Responses

201 Application submitted.
400 Already applied or invalid data.

Examples

Apply as creator
Request
{
  "creatorName": "StrategyKing",
  "bio": "I create advanced team compositions and publish educational guides."
}
tips_and_updates Upload a few strategies before applying — active creators get verified faster.
GET /api/v1/creators/me expand_more

Get your creator profile.

Prerequisites:
Apply as content creator

Responses

200 Creator profile (or null if not applied).
GET /api/v1/creators/stats expand_more

Get your detailed creator stats.

View your content performance: strategy download counts, ratings, educational module enrollments, and gem earnings.

Prerequisites:
Apply as content creator

Responses

200 Detailed creator statistics.
404 No creator profile found.
GET /api/v1/creators/verified 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 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.
tips_and_updates Check the spotlight each month to discover new strategies from top 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)