API Platform

BattleXO API Services

Every capability that runs BattleXO, available to call from your own product.

Tournaments, brackets, chat, voice, wallets, payouts, game top-ups, and a 200+ title catalogue. These are the same production APIs that serve 1.3M+ players and 38,100+ tournaments, exposed as documented REST endpoints and real-time socket events. Take one API or the whole platform.

25API products
227+Documented endpoints
6Capability groups
REST + WSREST & WebSocket
Sandbox environment
REST API
https://uat-api.battlexo.com/api/v1
Real-time gateway
https://chat-uat.battlexo.com
Production
Host and keys issued at certification
Every integration is built and certified against sandbox, with seeded games, tournaments, and test wallets. Nothing there touches live players or real money.
Quick start

From first call to production in four steps

No procurement maze. Tell us which APIs you need, and you get sandbox credentials and a named solutions engineer on the same thread.

  1. 01
    Get credentialsWe issue a sandbox client ID and secret scoped to the APIs on your plan. Secrets are hashed at rest and can be rotated or revoked at any time.
  2. 02
    Build on sandboxA full sandbox with seeded games, tournaments, and test wallets. Nothing you do there touches live players or real money.
  3. 03
    Make your first callEvery endpoint returns the same envelope and the same error shape, so one client wrapper covers the whole platform.
  4. 04
    Certify and go liveWe test the edge cases together: disputes, refunds, tie-breaks, and retries. Then we issue production keys and turn on monitoring.
Authentication

Two ways to authenticate, depending on who is calling

Server-to-server calls use client credentials. Calls made on behalf of a signed-in player carry that player’s session token, so permissions follow the user rather than your key.

Client credentials (server to server)

Send your issued client ID and secret as headers on every request. Credentials are verified against a hashed store and cached, so authentication adds negligible latency.

  • x-api-client-idYour issued client identifier
  • x-api-client-secretYour issued secret. Never ship this to a browser or mobile binary

Player session token (on behalf of a user)

For anything scoped to one player, such as wallet, teams, or registrations, pass their BattleXO session token. Your backend can validate a token independently through the server verification endpoint.

  • Authorization: BearerA player session token, for endpoints scoped to that player
Verify a player session from your backend
curl -X POST "https://uat-api.battlexo.com/api/v1/server/user/verify/token" \
  -H "x-api-client-id: $BXO_CLIENT_ID" \
  -H "x-api-client-secret: $BXO_CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{ "token": "<player-session-token>" }'
Conventions

One envelope, one error shape, one pagination model

Every endpoint on the platform behaves the same way, so the client you write for one API works for all of them.

Request
curl "https://uat-api.battlexo.com/api/v1/core/tournament?page=0&size=20" \
  -H "x-api-client-id: $BXO_CLIENT_ID" \
  -H "x-api-client-secret: $BXO_CLIENT_SECRET"
Success response
{
  "status": 1,
  "message": "Success",
  "data": {
    "tournaments": [ /* ... */ ],
    "count": 128
  }
}
Error response
HTTP/1.1 401 Unauthorized

{
  "status": 0,
  "message": "Unauthorized client"
}
Response envelope

Every response carries status, message, and data. status is 1 on success and 0 on failure, so you can branch before parsing the payload.

Pagination

List endpoints accept page and size query parameters. page is zero-indexed, and the total count comes back alongside the rows.

Filters and sorting

List endpoints also accept filters and sorts as JSON-encoded query parameters, so you can narrow a result set without a bespoke endpoint.

Errors

Failures use standard HTTP status codes with a human-readable message. 400 for validation, 401 for credentials, 403 for scope, 429 for rate limits.

API catalogue

What you can buy, grouped by what it does

Each product is independently licensable. Start with one, a bracket API or a chat API, and add the rest as your product grows.

The engine behind 38,100+ tournaments. Create events, seed brackets, run matches, and settle results from your own product.

Tournament API

Create, publish, and operate tournaments across 200+ titles without building an events backend.

Growth
  • Every format: battle royale points tables, single and double elimination, round robin, leagues
  • Registration, roster locks, in-game name capture, and wildcard invite codes
  • Room credentials, check-in windows, and per-team schedules
  • AI-assisted tournament creation from a brief
View 14 endpoints
MethodEndpointWhat it does
GET/core/tournamentList tournaments with filters, sorting, and pagination.
GET/core/tournament/:tournamentIdFull tournament detail including format, prize pool, and rules.
GET/core/tournament/space/:spaceIdTournaments belonging to one community space.
GET/core/tournament/teams/:tournamentIdRegistered teams and rosters for a tournament.
GET/core/tournament/result/:tournamentIdFinal standings and prize distribution.
GET/core/tournament/credential/:tournamentIdMatch room ID and password for entitled participants.
GET/core/tournament/team/:teamId/schedule/:tournamentIdMatch schedule for one team.
POST/team/join/tournamentRegister a squad for a tournament.
POST/team/join/tournament/soloRegister a solo player.
POST/core/tournament/wildcard/teamJoin through a wildcard invite as a team.
GET/core/tournament/:tournamentId/wildcard/validateInviteCode/:inviteCodeValidate a wildcard invite code before entry.
POST/admin/tournament/ai/createGenerate a tournament configuration from a natural-language brief.
PATCH/admin/tournament/publishPublish a draft tournament and open registration.
DELETE/admin/tournament/:tournamentIdCancel a tournament.

Bracket & Playoff API

Seeded brackets, live match state, check-ins, results, and dispute resolution as a service.

Growth
  • Generated brackets for elimination, round robin, and battle royale playoffs
  • Round-by-round progression and live standings
  • Team check-in, bulk check-in, and auto-resolve for no-shows
  • Result submission, opponent approval, and a disputed-match queue
View 15 endpoints
MethodEndpointWhat it does
GET/core/tournament/bracket/:tournamentIdFull bracket tree for a tournament.
GET/core/tournament/:tournamentId/playoffPlayoff rounds with match state, round by round.
GET/core/tournament/playoff/:playOffIdTeams and results inside one playoff round.
GET/core/tournament/playoff/battle-royale/:playOffIdBattle royale points table for a playoff round.
GET/core/tournament/vs-mode/brackets/:tournamentIdHead-to-head bracket list for VS-mode events.
GET/core/tournament/vs-mode/bracket/:bracketIdSingle VS-mode match detail.
GET/core/tournament/round-robin/standings/:tournamentIdLive round-robin standings table.
POST/core/tournament/vs-mode/resultSubmit a match result from the player side.
POST/core/tournament/vs-mode/result/approvalApprove or contest an opponent-submitted result.
GET/core/tournament/:tournamentId/vs-mode/checkin/:teamIdCheck-in status for a team.
POST/core/tournament/vs-mode/checkinCheck a team in for its match.
GET/moderator/vs-mode/bracket/disputed/:tournamentIdQueue of disputed matches awaiting review.
PUT/moderator/vs-mode/bracket/result/originalOverride a result as a moderator, with an audit trail.
POST/moderator/vs-mode/bracket/bulk/check-inBulk check-in across a round.
POST/admin/tournament/playoffGenerate playoff rounds and seed the bracket.

Scheduling API

AI-assisted auto-scheduling that slots large entry lists into rounds and time windows in minutes.

Growth
  • Automatic round and slot assignment across huge entry lists
  • Manual override for any match or round
  • Moderator assignment per match
  • Credential dispatch to participants ahead of each round
View 6 endpoints
MethodEndpointWhat it does
PUT/moderator/schedule/autoAuto-schedule all rounds for a tournament.
GET/moderator/schedule/manualFetch the editable manual schedule.
PUT/moderator/schedule/manualOverride slots, times, or match assignments.
GET/moderator/schedule/viewRead the published schedule.
GET/moderator/schedule/moderator/:tournamentIdModerator assignments per match.
POST/moderator/credentials/sendSend room credentials to scheduled participants.

Leaderboard API

Ranked tables you can render in your own UI: global, per game, per community, or per season.

Starter
  • Global and per-game leaderboards with configurable scoring params
  • Community-scoped leaderboards for spaces and sub-brands
  • Coin and rewards leaderboards
  • Pagination, filtering, and sorting on every list endpoint
View 5 endpoints
MethodEndpointWhat it does
GET/core/global/leaderboardGlobal player leaderboard.
GET/core/leaderboard/gameGames that have a ranked leaderboard.
GET/core/game/leaderboard/params/:gameIdScoring parameters used to rank a given game.
GET/space/leaderboard/:spaceIdLeaderboard scoped to one community space.
GET/core/getXOCoinLeaderboardCoin-earning leaderboard.

Challenges API

Always-on solo challenges with proof upload and verification. Competition without scheduling a match.

Growth
  • Challenge catalogue with entry rules and rewards
  • Player result upload with screenshot or video proof
  • Moderator verification queue and status webhooks
View 6 endpoints
MethodEndpointWhat it does
GET/core/challengeList active challenges.
GET/core/challenge/:challengeIdChallenge detail, rules, and rewards.
POST/core/user/result/uploadUpload a challenge result with proof.
GET/core/user/result/statusVerification status of a submitted result.
GET/moderator/user/resultResults awaiting moderator verification.
PUT/moderator/user/result/statusApprove or reject a submitted result.
Plans

Priced for a side project, a scaling product, or a regulated platform

Every plan runs on the same infrastructure. What changes is how much you can call, which APIs you can reach, and how fast we answer when something breaks.

Starter

Starter

For small studios, indie apps, and community sites

Read-heavy APIs to put real gaming content and competition into a product without running any of the infrastructure.

  • Game catalogue, leaderboards, notifications, social graph, and product catalogue
  • Read access to tournaments, brackets, and standings
  • Sandbox plus production keys, self-serve rotation
  • Rate limits sized for a growing app, with burst headroom
  • Email support, next business day
Growth

Growth

For organizers, publishers, and scaling platforms

Full write access to the competition stack, plus chat, video, teams, and rewards. Enough to run a real competitive product end to end.

  • Everything in Starter, plus write access across tournaments and brackets
  • Chat, shorts, spaces, teams, scheduling, challenges, and rewards APIs
  • Game top-up and gift card catalogue for resale
  • Webhooks, higher rate limits, and usage analytics
  • Shared Slack channel and a named solutions engineer
Enterprise

Enterprise

For telcos, fintechs, and regulated platforms

The whole platform including money movement, identity, voice, and moderation, with the commercial terms a procurement team expects.

  • Everything in Growth, plus wallets, payouts, and payment gateway APIs
  • Identity, single sign-on, voice rooms, and the moderation stack
  • Dedicated infrastructure and regional data residency options
  • Contracted uptime, incident response, and a rollback plan per release
  • Security review, custom terms, and optional managed operations
Real-time

Webhooks and sockets, because polling a bracket does not scale

Match state, chat, and payments all move faster than a poll interval. Subscribe once and let the platform push.

Socket gateway

A Socket.IO gateway carries chat messages, room membership, presence, read receipts, voice signalling, and live notifications. Authenticate the socket with the same credentials you use for REST.

Webhooks

Subscribe to match started, result submitted, dispute raised, payout completed, order fulfilled, and gateway settlement events. Every payload is signed so you can verify origin.

Delivery guarantees

Webhooks retry with exponential backoff and carry an idempotency key, so a slow endpoint on your side never loses an event. Failed deliveries are replayable from the dashboard.

FAQ

Questions we get asked

Can we buy just one API, like brackets or chat?

Yes. Every product in the catalogue is licensed independently and your credentials are scoped to what you buy. Plenty of partners start with the bracket API alone and add chat or wallets a quarter later.

How long does an integration take?

A read-only integration such as leaderboards, a game catalogue, or a tournament listing is usually a few days. A full competitive flow with brackets, chat, wallets, and payouts is typically a few weeks including joint certification.

Who owns the data?

You do. We process what is needed to run the service and return it to you on request. When you use single sign-on, player identity stays in your system and we never hold a second credential for them.

What are the rate limits?

Limits are set per plan and per endpoint class, with burst headroom for launch days. If you expect a spike, such as a national final or a campaign launch, tell us and we raise the ceiling ahead of it rather than after.

What if we want the whole product instead of the APIs?

Then the API is the wrong shape for you. Look at White-label Platform, which ships a branded esports product on web, Android, and iOS built on this same stack.

Next step

Tell us which APIs you need.

Send the capabilities and your stack. You get sandbox credentials, the endpoint scope, and a solutions engineer who has integrated it before.