Developer Platform

Open Scoreboard API

Technical documentation for the current v1 REST API, with copyable examples, route-by-route notes, and authenticated personal API key management.

Public developer docs

Overview

The public developer surface is a bearer-authenticated REST API for synchronizing tournament data, assigning work to scoring tables, and inspecting connection state.

Available in v1

Start with a personal developer key for direct testing, then move to OAuth app installs when you need multi-account access or rotating refresh tokens. The v1 surface covers Broadcasts and Rosters alongside legacy player lists, teams, tables, matches, connection state, and webhooks.

Base path/api/v1
AuthBearer token
Reference/api/v1/openapi

Implementation notes

  • Every response includes OpenScoreboard-Request-ID for request correlation.
  • Authenticated responses expose RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset headers.
  • Collection endpoints support limit and cursor pagination when the underlying route advertises it.

Endpoints

OpenAPI
GET/openapi

Download the OpenAPI document

Fetch the canonical v1 schema for generated clients, contract checks, or API explorer tooling.

Response

Returns the OpenAPI 3.1 document for the public API surface.

  • This endpoint does not require authentication.
  • It includes the same path list that is currently wired into the app router.
curl
curl https://your-domain.example/api/v1/openapi
JavaScript
const response = await fetch("https://your-domain.example/api/v1/openapi");
const schema = await response.json();

console.log(schema.openapi, Object.keys(schema.paths));
GET/connection

Inspect the active connection

Confirm which app, connection, scopes, and token expiry are attached to the bearer token you are using.

Any valid bearer token
Response

Returns connection identity, approved scopes, and token expiry information.

curl
curl https://your-domain.example/api/v1/connection \
  -H "Authorization: Bearer osb_test_your_key_here"
JavaScript
const baseURL = "https://your-domain.example/api/v1";
const apiKey = "osb_test_your_key_here";

async function api(path, init = {}) {
  const response = await fetch(`${baseURL}${path}`, {
    ...init,
    headers: {
      "Authorization": `Bearer ${apiKey}`,
      "Content-Type": "application/json",
      "OpenScoreboard-Request-ID": "demo-request-001",
      ...(init.headers || {})
    }
  });

  const body = await response.json();
  if (!response.ok) {
    throw new Error(body.error?.message || "Request failed");
  }

  return body.data;
}

const connection = await api("/connection");
console.log(connection.connectionID, connection.scopes);