Rally Leagues API
Read and write your league data from your own software. The API covers leagues, seasons, categories, standings, matches, rosters and events.
No sandbox
Server to server only
Leagues plan required
The essentials
- Base URL
- Every operation starts from
https://gorally.games/v1. - Key
- Send it in the
Authorization: Bearer rk_live_…header, never in the URL. - Format
- JSON requests and responses. An error returns
error,codeandrequest_id. - Tracing
- Every response carries
X-Request-Id. Include it when you write to us.
Guides
Connect your software step by step, from your first key to webhooks.
- Quickstart
Create a key in the Integrations screen, make your first call to the Rally Leagues API, then read a category’s standings with curl, JavaScript or Python.
- Authentication and scopes
Send your rk_live_ key in the Authorization header, pick the read, write, members:read and members:write scopes, then rotate or revoke your key safely.
- Webhooks
Receive your league events by webhook: the 20 event types, the Standard Webhooks signature to verify, delivery retries and catch-up through GET /v1/events.
- Errors
The Rally Leagues API error format, its 16 stable codes with their cause and what to do, and the X-Request-Id and Retry-After headers to read.
- Idempotency
Send an Idempotency-Key on every POST to retry a write without duplicates for 24 hours, and protect your PATCH requests with the expected revision.
- Pagination
Walk the Rally Leagues API lists with the after cursor, a limit from 25 to 100 and the list envelope with has_more, without skipping or repeating an item.
- Limits
Your key’s quota of 120 requests per minute and 3,000 per hour, the Retry-After header to honor, the 10-second limit and the 16 KiB body cap.
What the API does
Operations are grouped into four families.
- Competition
Leagues, seasons, categories, standings.
- Results
Matches and result entry.
- Rosters
Under
members:*scopes only — the only surface that carries people's names. - Events
The same feed as webhooks, readable and replayable.
Full reference
Every operation with its scope, parameters, schemas, examples and error codes.
The OpenAPI contract
The reference is generated from this OpenAPI 3.1 contract. It can be read without a key.
Generate a client
There is no official SDK yet. Generate a typed client from the contract instead.
TypeScript, with openapi-typescript and openapi-fetch
npx openapi-typescript https://gorally.games/v1/openapi.json -o rally.d.ts
npm install openapi-fetchimport createClient from 'openapi-fetch';
import type { paths } from './rally';
const rally = createClient<paths>({
baseUrl: 'https://gorally.games/v1',
headers: { Authorization: `Bearer ${process.env.RALLY_API_KEY}` },
});
const { data, error } = await rally.GET('/leagues');Python, with openapi-python-client
pipx run openapi-python-client generate --url https://gorally.games/v1/openapi.jsonimport os
from rally_leagues_api_client import AuthenticatedClient
from rally_leagues_api_client.api.competition import lister_ligues
client = AuthenticatedClient(
base_url="https://gorally.games/v1",
token=os.environ["RALLY_API_KEY"],
)
ligues = lister_ligues.sync(client=client)