Teams, Players & Rosters
Team roster
Universal across baseball, basketball, soccer, football, and
hockey. Returns the sport-specific player records currently
attached to the team (currentTeamId), as filled by the
roster ingestion (24h cadence) and, for soccer, the
squad-membership reconciler. NFL rows carry the football
position cluster (QB/RB/WR/...), depth-chart slot, and draft
metadata; NHL rows carry the hockey position cluster
(C/LW/RW/D/G), shoots/catches handedness, and contract bits.
active defaults to true; set active=false to include
retired or released players still tagged with the team. Reads
are soft — a team whose roster has not been ingested yet
returns an empty array rather than 404.
Soccer responses also carry _meta.availability saying whether
an empty roster is expected: status is available (players
returned), not_available (the team's squad page was fetched and
lists nobody, and no recent cup lineup names its players,
typically an amateur club that only appears in a domestic cup)
or unknown (empty with nothing saying that is expected: no
squad page fetched yet, a failed or partial fetch, or a squad
page or cup lineup that lists players),
with a reason and, when a squad page was checked,
checked_at.
Requires the stats entitlement (a paid plan). See Responses & Errors for the success envelope and availability rules.
https://api.sportquanta.com/v1/{league}/teams/{id}/rosterReference context: WKBL.
Overview · Response conventions
Authorizations
AuthorizationstringheaderrequiredSend a workspace API token in the Authorization: Bearer <token> header.
Path Parameters
leagueenum<string>default:wkblrequiredLeague for this reference section: wkbl.
Available options: wkbl
idstringrequiredQuery Parameters
activebooleandefault:trueprovenancebooleandefault:falseOpt in to per-field provenance on supported single game, match, team, player, and venue reads. Lists and composites accept the flag but generally omit provenance. It is returned under _meta.provenance only when source metadata exists.
seasonstringBasketball only: season start year or label such as 2025-26. Historical roster uses that season; omitted selects current roster.
Response
application/jsonArray of sport-specific player records.
Query validation failed. Depending on the handler, invalid_query_parameter is returned with HTTP 400 or 422. Pre-read validation is non-billable.
Missing or invalid bearer API token.
Access is forbidden: the token lacks api.read scope, the plan lacks an endpoint/bookmaker capability, or configured billing access is inactive. Inspect error.code and details.feature when present.
The {league} segment is not in the Sportquanta catalog.
Hourly rate ceiling or monthly quota exceeded. The error code disambiguates
which limit was hit. X-RateLimit-* and X-Requests-*-Month response headers
carry the current state of both counters.
Token validation or an internal handler failed. Token-store failures use api_token_lookup_failed; unsupported internal sport dispatch can use data_layer_unavailable.
The data layer (Mongo / ClickHouse / Redis cache) is temporarily unreachable. The server attempted the lookup; it failed. Retry with backoff. Per the spec's order of evaluation, this DOES consume monthly quota — the request reached step 6.
The configured billing provider could not verify API access. The request is refused before the data handler and does not consume monthly quota.
dataobject[] | nullrequireddata.idstringdata.canonical_idstringdata.external_idsobjectMap from the exact stored source/namespace key to that provider's identifier for this entity. Keys vary by entity and league. Values are strings, even when the provider ID looks numeric. Use the exact key and value for external-ID lookups; these are distinct from the canonical ID. SOURCE_KEY below is an illustrative placeholder.
data.external_ids.{key}stringdata.created_atstring<date-time>Canonical document creation timestamp, when present; not the scheduled start or event time.
data.updated_atstring<date-time>Canonical document update timestamp, when present. It is not a guarantee that every field was refreshed at this time; field provenance carries individual ingestion times.
data.full_namestringdata.given_namestringdata.family_namestringdata.known_asstringdata.slugstringdata.jersey_numberstringdata.positionstringdata.date_of_birthstringdata.countrystringdata.nationalitystringdata.height_cmintegerdata.weight_kgintegerdata.headshot_asset_keystringStored asset key, when available. Prefer the materialized URL field for display instead of constructing a storage URL.
data.official_headshot_urlstringdata.current_team_idstringdata.activebooleanrequireddata.localized_namesobjectNames keyed by BCP-47 language tag, not a single translated string. Each value contains optional camelCase name fields (displayName, fullName, name, shortName, givenName, familyName), language, romanized, and nameSource; older records may use a plain string. Only populated languages appear. Common keys are en, ko, and ja; other supported keys include es, de, fr, pt, it, nl, zh-Hans, and zh-Hant. For display, try displayName → fullName → name → shortName → the entity's base name. This map can be absent or empty. See localized names.
data.localized_names.enobject | stringEnglish name entry, when available.
data.localized_names.en.option 1objectdata.localized_names.en.languagestring | nullBCP-47 tag echoing the map key. Retained for back-compat with the legacy baseball/basketball slot shape; new writers may omit it.
data.localized_names.en.namestring | nullShort / common display form (e.g. "두산", "맨유").
data.localized_names.en.fullNamestring | nullOfficial long form (e.g. "두산 베어스", "맨체스터 유나이티드").
data.localized_names.en.shortNamestring | nullShort-name variant (legacy baseball/basketball slot field).
data.localized_names.en.givenNamestring | nullGiven/first name in this locale, when split out.
data.localized_names.en.familyNamestring | nullFamily/last name in this locale, when split out.
data.localized_names.en.displayNamestring | nullPreferred UI display label for this locale.
data.localized_names.en.romanizedbooleanTrue when this name was produced by algorithmic transliteration (Korean Revised Romanization, Japanese Hepburn) as a fallback rather than sourced from an official/native feed. Absent or false means the value came from an authoritative source. Lets consumers distinguish a machine-romanized name from an official spelling.
data.localized_names.en.nameSourcestring | nullOrigin of the value for auditing, e.g. 'naver', 'koreabaseball', 'npb_official', 'flashscore', 'statsapi', 'rr', 'hepburn'.
data.localized_names.koobject | stringKorean name entry, when available.
data.localized_names.ko.option 1objectdata.localized_names.ko.languagestring | nullBCP-47 tag echoing the map key. Retained for back-compat with the legacy baseball/basketball slot shape; new writers may omit it.
data.localized_names.ko.namestring | nullShort / common display form (e.g. "두산", "맨유").
data.localized_names.ko.fullNamestring | nullOfficial long form (e.g. "두산 베어스", "맨체스터 유나이티드").
data.localized_names.ko.shortNamestring | nullShort-name variant (legacy baseball/basketball slot field).
data.localized_names.ko.givenNamestring | nullGiven/first name in this locale, when split out.
data.localized_names.ko.familyNamestring | nullFamily/last name in this locale, when split out.
data.localized_names.ko.displayNamestring | nullPreferred UI display label for this locale.
data.localized_names.ko.romanizedbooleanTrue when this name was produced by algorithmic transliteration (Korean Revised Romanization, Japanese Hepburn) as a fallback rather than sourced from an official/native feed. Absent or false means the value came from an authoritative source. Lets consumers distinguish a machine-romanized name from an official spelling.
data.localized_names.ko.nameSourcestring | nullOrigin of the value for auditing, e.g. 'naver', 'koreabaseball', 'npb_official', 'flashscore', 'statsapi', 'rr', 'hepburn'.
data.localized_names.jaobject | stringJapanese name entry, when available.
data.localized_names.ja.option 1objectdata.localized_names.ja.languagestring | nullBCP-47 tag echoing the map key. Retained for back-compat with the legacy baseball/basketball slot shape; new writers may omit it.
data.localized_names.ja.namestring | nullShort / common display form (e.g. "두산", "맨유").
data.localized_names.ja.fullNamestring | nullOfficial long form (e.g. "두산 베어스", "맨체스터 유나이티드").
data.localized_names.ja.shortNamestring | nullShort-name variant (legacy baseball/basketball slot field).
data.localized_names.ja.givenNamestring | nullGiven/first name in this locale, when split out.
data.localized_names.ja.familyNamestring | nullFamily/last name in this locale, when split out.
data.localized_names.ja.displayNamestring | nullPreferred UI display label for this locale.
data.localized_names.ja.romanizedbooleanTrue when this name was produced by algorithmic transliteration (Korean Revised Romanization, Japanese Hepburn) as a fallback rather than sourced from an official/native feed. Absent or false means the value came from an authoritative source. Lets consumers distinguish a machine-romanized name from an official spelling.
data.localized_names.ja.nameSourcestring | nullOrigin of the value for auditing, e.g. 'naver', 'koreabaseball', 'npb_official', 'flashscore', 'statsapi', 'rr', 'hepburn'.
data.localized_names.{key}object | stringdata.localized_names.{key}.option 1objectdata.localized_names.{key}.languagestring | nullBCP-47 tag echoing the map key. Retained for back-compat with the legacy baseball/basketball slot shape; new writers may omit it.
data.localized_names.{key}.namestring | nullShort / common display form (e.g. "두산", "맨유").
data.localized_names.{key}.fullNamestring | nullOfficial long form (e.g. "두산 베어스", "맨체스터 유나이티드").
data.localized_names.{key}.shortNamestring | nullShort-name variant (legacy baseball/basketball slot field).
data.localized_names.{key}.givenNamestring | nullGiven/first name in this locale, when split out.
data.localized_names.{key}.familyNamestring | nullFamily/last name in this locale, when split out.
data.localized_names.{key}.displayNamestring | nullPreferred UI display label for this locale.
data.localized_names.{key}.romanizedbooleanTrue when this name was produced by algorithmic transliteration (Korean Revised Romanization, Japanese Hepburn) as a fallback rather than sourced from an official/native feed. Absent or false means the value came from an authoritative source. Lets consumers distinguish a machine-romanized name from an official spelling.
data.localized_names.{key}.nameSourcestring | nullOrigin of the value for auditing, e.g. 'naver', 'koreabaseball', 'npb_official', 'flashscore', 'statsapi', 'rr', 'hepburn'.
_metaobjectResponse request/cache metadata. Optional evidence fields are specific to this handler; cache TTL does not measure source-data freshness.
_meta.request_idstring_meta.served_fromenum<string>Available options: live, cache
_meta.cache_ttl_secondsintegerResponse cache TTL; independent of source freshness. Omitted when zero.
errorobjectrequirederror.codestringrequiredStable machine-readable error code.
error.messagestringrequiredUser-facing error summary.
error.detailsanyOptional error details.