// Developer Documentation

API Reference

The Cloud Breach public API lets you build stat trackers, Discord bots, leaderboard sites, and community tools. All endpoints are free, unauthenticated, and return JSON.

Base URL https://api.cloudbreachgame.com/
Also accessible at https://server.ctksystem.com/games/steam/cb
Format JSON Auth None required Rate limit 60 req / min Status Operational
Rate Limits

All endpoints are rate limited per IP address. Exceeding the limit returns a 429 response.

60 requests per minute per IP address. The response includes X-RateLimit-Limit and X-RateLimit-Remaining headers so you can track your usage.
Rate limit headers
X-RateLimit-Limit: 60 X-RateLimit-Remaining: 58
429 response body
{ "error": "Rate limit exceeded. Max 60 requests/minute." }
Error Codes
StatusMeaningWhen it happens
200 OK Request succeeded.
400 Bad Request Invalid Steam ID format or missing parameter.
404 Not Found Player hasn't played Cloud Breach yet, or the resource doesn't exist.
429 Too Many Requests Rate limit exceeded. Back off and retry after 60 seconds.
500 Server Error Something went wrong on our end. Try again shortly.
All error responses follow the same shape: { "error": "Description of the problem" }
Players
GET /player/:steamid Get player profile

Returns a player's Cloud Breach profile including level, XP, loadout, and ban status. The Steam ID must be a valid 17-digit Steam64 ID.

Path parameters
ParameterTypeRequiredDescription
steamid string Required 17-digit Steam64 ID of the player.
Example request
GET https://api.cloudbreachgame.com/player/76561199111784585
Response
{ "displayName": "Stacik", "level": 14, "xp": 2340, "xpMax": 5400, "status": "Dev", // "Dev", "Mod", "Playtester", or null "loadoutWeapon": "Phantom", "loadoutGadgets": ["EMP", "Smoke"], "playtester": false, "banned": false, "banReason": null, "lastUpdate": 1743500000000 }
displayNameSteam display name of the player.
levelCurrent level, starts at 1.
xp / xpMaxCurrent XP progress toward next level.
status"Dev", "Mod", "Playtester", or null for regular players.
loadoutWeaponActive weapon from last saved loadout, or null.
loadoutGadgetsArray of active gadgets, or empty array.
bannedWhether the player is banned from the game.
GET /leaderboard Top players by level

Returns the top players ranked by level, then XP. Banned players are excluded. Maximum 50 results.

Query parameters
ParameterTypeRequiredDescription
limit integer Optional Number of results to return. Default: 50. Max: 50.
Example request
GET https://api.cloudbreachgame.com/leaderboard?limit=10
Response
{ "leaderboard": [ { "rank": 1, "steamid": "76561199111784585", "displayName": "Stacik", "avatar": "https://avatars.steamstatic.com/...", "level": 14, "xp": 2340, "xpMax": 5400, "status": "Dev", "playtester": false } // ... up to 50 entries ], "total": 1 }
Steam Integration
GET /steam-profile/:steamid Steam persona + playtime + achievements

Fetches live Steam data for a player: online status, playtime in Cloud Breach, and unlocked achievements. Results are cached for 2 minutes.

Returns playtimeMinutes: null if the player's Steam profile is set to private.
Example request
GET https://api.cloudbreachgame.com/steam-profile/76561199111784585
Response
{ "steamid": "76561199111784585", "personaState": "Online", // "Online", "Offline", "Away", "In-Game", etc. "personaName": "Stacik", "avatarUrl": "https://avatars.steamstatic.com/...", "profileUrl": "https://steamcommunity.com/id/...", "gameExtraInfo": null, // game name if currently playing something else "playtimeMinutes": 482, "playtimeHours": 8.0, "achievements": [ { "apiname": "FIRST_HACK", "name": "Ghost Protocol", "description": "Hack your first terminal", "unlocktime": 1743000000 } ], "achievementCount": 1 }
GET /player-count Live concurrent players

Returns the current number of players in-game via Steam. Cached for 5 minutes.

Example request
GET https://api.cloudbreachgame.com/player-count
Response
{ "count": 47 }
Game
GET /version Current game version
Example request
GET https://api.cloudbreachgame.com/version
Response
{ "version": "1.2.0" }
GET /faq FAQ entries

Returns all published FAQ entries, grouped by category.

Example request
GET https://api.cloudbreachgame.com/faq
Response
{ "faq": [ { "id": "abc123", "q": "How do I report a cheater?", "a": "Use the in-game report button or visit /report.", "category": "General" } ] }
Code Examples

Practical examples for common use cases in JavaScript, Python, and for Discord bots.

Fetch player profile
const BASE = 'https://api.cloudbreachgame.com/'; async function getPlayer(steamId) { const res = await fetch(`${BASE}/player/${steamId}`); if (res.status === 404) throw new Error('Player not found'); if (!res.ok) throw new Error('API error: ' + res.status); return res.json(); } async function getLeaderboard(limit = 10) { const res = await fetch(`${BASE}/leaderboard?limit=${limit}`); const data = await res.json(); return data.leaderboard; } // Usage const player = await getPlayer('76561199111784585'); console.log(`${player.displayName} is Level ${player.level}`);
Fetch player profile
import requests BASE = "https://api.cloudbreachgame.com/" def get_player(steam_id: str) -> dict: r = requests.get(f"{BASE}/player/{steam_id}") r.raise_for_status() return r.json() def get_leaderboard(limit: int = 10) -> list: r = requests.get(f"{BASE}/leaderboard", params={"limit": limit}) r.raise_for_status() return r.json()["leaderboard"] # Usage player = get_player("76561199111784585") print(f"{player['displayName']} is Level {player['level']}")
Basic requests
# Get player profile curl https://api.cloudbreachgame.com/player/76561199111784585 # Get top 10 leaderboard curl "https://api.cloudbreachgame.com/leaderboard?limit=10" # Get live player count curl https://api.cloudbreachgame.com/player-count # Get current game version curl https://api.cloudbreachgame.com/version
Discord Bot Example

A minimal Discord.js bot command that looks up a player by Steam ID and posts their stats.

Uses discord.js v14 with slash commands. Replace YOUR_BOT_TOKEN and register the command with Discord's API to deploy.
commands/stats.js
const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); const BASE = 'https://api.cloudbreachgame.com/'; module.exports = { data: new SlashCommandBuilder() .setName('stats') .setDescription('Look up a Cloud Breach player') .addStringOption(opt => opt.setName('steamid') .setDescription('17-digit Steam64 ID') .setRequired(true)), async execute(interaction) { const steamId = interaction.options.getString('steamid'); await interaction.deferReply(); try { const [player, steam] = await Promise.all([ fetch(`${BASE}/player/${steamId}`).then(r => r.json()), fetch(`${BASE}/steam-profile/${steamId}`).then(r => r.json()), ]); if (player.error) { return interaction.editReply('❌ Player not found.'); } const xpPct = Math.round((player.xp / player.xpMax) * 100); const bar = '█'.repeat(Math.floor(xpPct / 10)) + '░'.repeat(10 - Math.floor(xpPct / 10)); const embed = new EmbedBuilder() .setColor(0xB6FF2E) .setTitle(`☁ ${player.displayName}`) .setThumbnail(steam.avatarUrl) .addFields( { name: 'Level', value: `**${player.level}**`, inline: true }, { name: 'Status', value: player.status || 'Player', inline: true }, { name: 'Playtime', value: `${steam.playtimeHours}h`, inline: true }, { name: `XP Progress (${xpPct}%)`, value: `\`${bar}\`\n${player.xp} / ${player.xpMax}` }, ) .setFooter({ text: `Steam ID: ${steamId}` }); await interaction.editReply({ embeds: [embed] }); } catch (e) { await interaction.editReply('❌ Failed to fetch player data.'); } } };
Changelog
Mar 2026 Public API launched. Player profiles, leaderboard, Steam integration, version, and FAQ endpoints now available at api.cloudbreachgame.com.
Mar 2026 Rate limiting added. 60 requests per minute per IP. Headers included in all responses.
Mar 2026 Match history added. Player match stats now stored server-side after each game.
Have an idea for the API or found a bug? Join our Discord and open a ticket.