AimRank Brackets API
The Brackets API from AimRank — 5 operation(s) for brackets.
The Brackets API from AimRank — 5 operation(s) for brackets.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/aimrank-io:aimrank-io-brackets-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: AimRank Brackets API
description: Ranking-as-a-Service API — Turn binary comparisons into calibrated rankings with Glicko-2, Bradley-Terry, TrueSkill, and cross-domain transfer learning. Includes webhooks, API keys, RLHF exports, and embeddable widgets.
version: 4.12.0
tags:
- name: Brackets
paths:
/api/v1/brackets:
post:
tags:
- Brackets
summary: Create Bracket
description: 'Create a new single-elimination bracket for a ranking.
Requires the ranking to have at least `size` active entities. Seeding
strategy ''rating'' uses top-N by mu; ''random'' samples across the pool.'
operationId: create_bracket_api_v1_brackets_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBracketRequest'
required: true
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BracketResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/brackets/{tournament_id}:
get:
tags:
- Brackets
summary: Get Bracket
description: Fetch the full bracket tree with current entity info for rendering.
operationId: get_bracket_api_v1_brackets__tournament_id__get
parameters:
- name: tournament_id
in: path
required: true
schema:
type: string
title: Tournament Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BracketResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/brackets/{tournament_id}/next:
get:
tags:
- Brackets
summary: Get Next Match
description: Return the next playable match, or null when the bracket is complete.
operationId: get_next_match_api_v1_brackets__tournament_id__next_get
parameters:
- name: tournament_id
in: path
required: true
schema:
type: string
title: Tournament Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/BracketMatchResponse'
- type: 'null'
title: Response Get Next Match Api V1 Brackets Tournament Id Next Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/brackets/{tournament_id}/vote:
post:
tags:
- Brackets
summary: Vote On Bracket Match
description: 'Record a vote on a specific bracket match and advance the winner.
Creates a normal Vote row (so the underlying ranking''s mu/phi update
through the normal pipeline) inside the same atomic transaction that
advances the bracket state. Safe against concurrent votes on the same
match: the second request will get a 409 because the winner field
will already be set.'
operationId: vote_on_bracket_match_api_v1_brackets__tournament_id__vote_post
parameters:
- name: tournament_id
in: path
required: true
schema:
type: string
title: Tournament Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BracketVoteRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BracketVoteResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/rankings/{ranking_id}/brackets:
get:
tags:
- Brackets
summary: List Brackets For Ranking
description: List all brackets ever created for a given ranking.
operationId: list_brackets_for_ranking_api_v1_rankings__ranking_id__brackets_get
parameters:
- name: ranking_id
in: path
required: true
schema:
type: string
title: Ranking Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/BracketSummary'
title: Response List Brackets For Ranking Api V1 Rankings Ranking Id Brackets Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
BracketVoteResponse:
properties:
match:
$ref: '#/components/schemas/BracketMatchResponse'
next_match:
anyOf:
- $ref: '#/components/schemas/BracketMatchResponse'
- type: 'null'
tournament_status:
type: string
title: Tournament Status
champion:
anyOf:
- $ref: '#/components/schemas/EntityLite'
- type: 'null'
type: object
required:
- match
- tournament_status
title: BracketVoteResponse
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
BracketResponse:
properties:
id:
type: string
title: Id
ranking_id:
type: string
title: Ranking Id
name:
anyOf:
- type: string
- type: 'null'
title: Name
size:
type: integer
title: Size
status:
type: string
title: Status
seed_strategy:
type: string
title: Seed Strategy
total_rounds:
type: integer
title: Total Rounds
champion:
anyOf:
- $ref: '#/components/schemas/EntityLite'
- type: 'null'
matches:
items:
$ref: '#/components/schemas/BracketMatchResponse'
type: array
title: Matches
created_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Created At
completed_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Completed At
type: object
required:
- id
- ranking_id
- name
- size
- status
- seed_strategy
- total_rounds
- matches
- created_at
- completed_at
title: BracketResponse
CreateBracketRequest:
properties:
ranking_id:
type: string
maxLength: 36
minLength: 36
title: Ranking Id
size:
type: integer
title: Size
description: Power of 2 in (4, 8, 16, 32, 64)
strategy:
type: string
pattern: ^(rating|random)$
title: Strategy
default: rating
name:
anyOf:
- type: string
maxLength: 200
- type: 'null'
title: Name
type: object
required:
- ranking_id
- size
title: CreateBracketRequest
EntityLite:
properties:
id:
type: string
title: Id
name:
type: string
title: Name
image_url:
anyOf:
- type: string
- type: 'null'
title: Image Url
media_url:
anyOf:
- type: string
- type: 'null'
title: Media Url
rating:
type: integer
title: Rating
mu:
type: number
title: Mu
type: object
required:
- id
- name
- rating
- mu
title: EntityLite
BracketSummary:
properties:
id:
type: string
title: Id
ranking_id:
type: string
title: Ranking Id
name:
anyOf:
- type: string
- type: 'null'
title: Name
size:
type: integer
title: Size
status:
type: string
title: Status
champion_id:
anyOf:
- type: string
- type: 'null'
title: Champion Id
created_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Created At
type: object
required:
- id
- ranking_id
- name
- size
- status
- champion_id
- created_at
title: BracketSummary
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
BracketVoteRequest:
properties:
match_id:
type: string
maxLength: 36
minLength: 36
title: Match Id
winner_id:
type: string
maxLength: 36
minLength: 36
title: Winner Id
type: object
required:
- match_id
- winner_id
title: BracketVoteRequest
BracketMatchResponse:
properties:
id:
type: string
title: Id
round:
type: integer
title: Round
position:
type: integer
title: Position
entity_a:
anyOf:
- $ref: '#/components/schemas/EntityLite'
- type: 'null'
entity_b:
anyOf:
- $ref: '#/components/schemas/EntityLite'
- type: 'null'
winner_id:
anyOf:
- type: string
- type: 'null'
title: Winner Id
next_match_id:
anyOf:
- type: string
- type: 'null'
title: Next Match Id
next_slot:
anyOf:
- type: string
- type: 'null'
title: Next Slot
is_ready:
type: boolean
title: Is Ready
is_complete:
type: boolean
title: Is Complete
type: object
required:
- id
- round
- position
- is_ready
- is_complete
title: BracketMatchResponse
securitySchemes:
APIKeyHeader:
type: apiKey
in: header
name: X-API-Key