Skip to main content
API Reference

ReadyRaider Public API

Build integrations with ReadyRaider using our REST API. Access tournaments, leagues, organizations, raids, and more.

Introduction

The ReadyRaider API is a RESTful JSON API that lets you programmatically access your tournament, league, organization, and raid data. It's designed for building Discord bots, overlay tools, stat trackers, and custom integrations.

RESTful Design

Predictable resource-oriented URLs with standard HTTP methods and status codes.

JSON Responses

All responses use a consistent JSON envelope with data, pagination, and error fields.

Scoped API Keys

Fine-grained permissions let you control exactly what each API key can access.

Rate Limited

Built-in rate limiting with clear headers so you can manage request budgets.

Base URL

All API requests are made to the following base URL:

url
https://readyraider.com/api/v1

All endpoints require HTTPS. HTTP requests will be rejected.

Quick Start

Get up and running in three steps:

1

Create an API Key

Go to your Account Settings → API Keys page, or use the API itself to create a key programmatically.

Create an API Keybash
curl -X POST https://readyraider.com/api/v1/me/api-keys \
  -H "Authorization: Bearer YOUR_EXISTING_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Discord Bot",
    "permissions": ["tournaments:read", "leagues:read"]
  }'
2

Make Your First Request

Use your API key as a Bearer token in the Authorization header.

List Tournamentsbash
curl https://readyraider.com/api/v1/tournaments \
  -H "Authorization: Bearer rr_live_abc123..."
3

Handle the Response

All responses follow a consistent JSON envelope format.

Success Responsejson
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Friday Night Valorant",
      "format": "single_elimination",
      "status": "registration",
      "max_participants": 32,
      "created_at": "2026-02-13T10:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 1,
    "total_pages": 1
  }
}

Tip

Save your API key securely when it's first created. The full key is only shown once and cannot be retrieved later.

Authentication

All API requests require authentication via an API key sent as a Bearer token. API keys are scoped with specific permissions to control access.

Authorization Headerhttp
Authorization: Bearer rr_live_your_api_key_here

Keys use the format rr_live_ followed by a 64-character hex string. Keys are hashed with SHA-256 before storage — ReadyRaider never stores your raw key.

Warning

Never share your API key or commit it to version control. Treat it like a password. If a key is compromised, revoke it immediately from your account settings.

Permission Scopes

API keys are granted specific scopes that determine which endpoints they can access. Each endpoint requires a specific scope.

ScopeDescription
tournaments:readList and view tournaments, participants, brackets, matches
leagues:readList and view leagues, seasons, standings
organizations:readList and view organizations
raids:readList and view raids (scoped to your organizations)
profiles:readView your profile and list API keys
profiles:writeCreate and revoke API keys

Note

You can also use the shorthand read to grant all :read scopes, or write for all :write scopes.

Available Endpoints

Explore the full API reference by resource type:

Response Format

All API responses follow a consistent JSON envelope structure.

Success (Single Resource)

json
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "My Tournament",
    "status": "registration"
  }
}

Success (Collection)

json
{
  "data": [ ... ],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 42,
    "total_pages": 2
  }
}

Error

json
{
  "error": {
    "code": "not_found",
    "message": "Tournament not found",
    "details": []
  }
}

Standard Headers

Every API response includes these headers:

HeaderDescription
X-Request-IdUnique request identifier for tracing and support
X-RateLimit-LimitMaximum requests allowed per window
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the rate limit window resets