Get Organization Matches
Returns matches for all teams in an organization. The identifier can be a Convex org ID or org slug. Requires API key with matches.org_matches permission. User must be an active member of the organization.
Documentation Index
Fetch the complete documentation index at: https://teambattles.gg/docs/llms.txt
Use this file to discover all available pages before exploring further.
Permission Required
This endpoint requires thematches.org_matches permission on your API key.
Membership Required
You must be an active member of the organization to access its matches. If you’re not a member, you’ll receive a403 error with code error_org_membership_required.
Organization Identifier
The{identifier} path parameter accepts either:
- Organization ID: The Convex document ID (e.g.,
kd8xyz789ghi012) - Organization Slug: The URL-friendly org name (e.g.,
Esports_Org)
What’s Returned
This endpoint returns matches for all teams within the organization. This is useful for organization admins or dashboards that need to see activity across all teams.Filtering Options
League Teams Only
TheleagueTeamsOnly parameter is unique to this endpoint:
| Parameter | Type | Description |
|---|---|---|
leagueTeamsOnly | boolean | Only include matches involving LEAGUE type teams |
Status Filtering
Filter matches by their status:- includeStatuses: Only return matches with these statuses (takes precedence)
- excludeStatuses: Return all matches except those with these statuses
Date Filtering
Filter by scheduled or creation dates using ISO 8601 format:- scheduledAfter / scheduledBefore: Filter by scheduled match time
- createdAfter / createdBefore: Filter by when the match was created
Other Filters
- gameId: Filter by a specific game
- opponentId: Filter by opponent team (accepts team ID or slug)
Pagination
Results are paginated with a default of 25 matches per page (maximum 100).Request Fields
| Parameter | Type | Description |
|---|---|---|
numItems | number | Number of items per page, 1-100, default 25 |
cursor | string | Opaque cursor string from a prior response (optional) |
Response Fields
| Field | Type | Description |
|---|---|---|
page | array | Array of matches for this page |
isDone | boolean | true when there are no more pages to fetch |
continueCursor | string | Pass back as cursor on the next request |
Errors
| Code | HTTP Status | When |
|---|---|---|
error_api_key_required | 401 | Missing Authorization header |
error_api_key_invalid | 401 | API key is unknown, revoked, or expired |
error_api_key_permission_denied | 403 | The key does not hold matches.org_matches: read |
error_org_membership_required | 403 | You are not an active member of the requested organization |
error_invalid_num_items | 400 | numItems is outside the allowed 1-100 range |
error_invalid_limit | 400 | Reserved for limit-style page sizes (registry-level error code) |
error_invalid_cursor | 400 | cursor is malformed or no longer valid |
error_invalid_date_format | 400 | One of the scheduled*/created* filters is not ISO 8601 |
error_org_not_found | 404 | The {identifier} could not be resolved to an organization |
error_team_not_found | 404 | opponentId could not be resolved to a team |
error_internal | 500 | Unhandled server error - retry or contact support |
Common Use Cases
Get All League Matches
Get Active Matches Across All Teams
Get Completed League Matches for Stats
Get Matches for a Specific Game
Get Organization Match History for a Season
Authorizations
API key authentication. Generate an API key from Settings > Developer in the TeamBattles app. Format: tb_xxxxxxxx...
Path Parameters
Organization ID or slug
Body
Optional filters and pagination options. Includes additional leagueTeamsOnly filter specific to organization queries.
Only include matches with these statuses. Takes precedence over excludeStatuses.
Current status of a match
PENDING, ACCEPTED, READY, IN_PROGRESS, COMPLETED, CANCELLED, DISPUTED, FORFEITED Exclude matches with these statuses. Ignored if includeStatuses is provided.
Current status of a match
PENDING, ACCEPTED, READY, IN_PROGRESS, COMPLETED, CANCELLED, DISPUTED, FORFEITED Filter by game ID
Filter to matches scheduled after this date (ISO 8601)
Filter to matches scheduled before this date (ISO 8601)
Filter to matches created after this date (ISO 8601)
Filter to matches created before this date (ISO 8601)
Filter by opponent team (ID or slug)
Maximum number of matches to return (1-100)
1 <= x <= 100Pagination cursor from previous response (opaque Convex cursor string)
Only include matches involving LEAGUE type teams