Teams, Players & Rosters
Player details
Requires the odds entitlement (a paid plan). See Responses & Errors for the success envelope and availability rules.
https://api.sportquanta.com/v1/{league}/players/{id}Reference 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
provenancebooleandefault: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.
Response
application/jsonPlayer document with materialized headshot_url.
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 id is well-formed but no document has been ingested for it yet.
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.
dataobjectrequireddata.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.activebooleandata.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'.
data.headshot_urlstringMaterialized player image URL, when resolvable. Omitted when no usable image is available.
_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.
_meta.provenanceobjectMap keyed by canonical source field name. Each value identifies the winning source, ingestion run, and ingestion timestamp for that field. Keys can use the stored camelCase field name even when the response uses snake_case.
_meta.provenance.{key}object_meta.provenance.{key}.sourcestring_meta.provenance.{key}.run_idstring_meta.provenance.{key}.ingested_atstring<date-time>errorobjectrequirederror.codestringrequiredStable machine-readable error code.
error.messagestringrequiredUser-facing error summary.
error.detailsanyOptional error details.