> For the complete documentation index, see [llms.txt](https://docs.odds88.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.odds88.io/odds88-client-api/odds88-api-endpoints/global-metadata-api.md).

# Global Metadata API

The global metadata API can be used to fetch supplementary information about shared entities like sport, location, league, or competitor.

{% hint style="warning" %}
The endpoints are rate-limited.
{% endhint %}

### Recommended Usage Pattern

To discover what types of metadata are available for a specific entity, it's recommended to call the `/types` endpoint **first**. This helps you query only the relevant data types afterward.

### Example:

* Get available metadata types for a team/competitor:

## GET /api/GlobalMetadata/sport/{sportId}/league/{leagueId}/competitor/{competitorId}/types

> \
> \*\*Rate Limits (per account):\*\*\
> \- \*\*40 req/1s\*\*

```json
{"openapi":"3.0.4","info":{"title":"[T728-STAGE] Odds88 API","version":"v1"},"tags":[{"name":"GlobalMetadata"}],"security":[{"Bearer":[]}],"components":{"securitySchemes":{"Bearer":{"type":"http","description":"JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"","scheme":"Bearer","bearerFormat":"JWT"}}},"paths":{"/api/GlobalMetadata/sport/{sportId}/league/{leagueId}/competitor/{competitorId}/types":{"get":{"tags":["GlobalMetadata"],"description":"\n**Rate Limits (per account):**\n- **40 req/1s**","parameters":[{"name":"sportId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"leagueId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"competitorId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"array","items":{"type":"string"}}},"application/json":{"schema":{"type":"array","items":{"type":"string"}}},"text/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"description":"Too many requests"}}}}}}
```

* Get available metadata for that specific metadata type:

## GET /api/GlobalMetadata/sport/{sportId}/league/{leagueId}/competitor/{competitorId}/{dataType}

> \
> \*\*Rate Limits (per account):\*\*\
> \- \*\*40 req/1s\*\*

```json
{"openapi":"3.0.4","info":{"title":"[T728-STAGE] Odds88 API","version":"v1"},"tags":[{"name":"GlobalMetadata"}],"security":[{"Bearer":[]}],"components":{"securitySchemes":{"Bearer":{"type":"http","description":"JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"","scheme":"Bearer","bearerFormat":"JWT"}},"schemas":{"Marlin.SportsbetApi.Host.Models.MetaData.GlobalMetadataViewModel":{"type":"object","properties":{"sportId":{"type":"integer","description":"ID of the sport.","format":"int64","nullable":true},"locationId":{"type":"integer","description":"ID of the location.","format":"int64","nullable":true},"leagueId":{"type":"integer","description":"ID of the league.","format":"int64","nullable":true},"competitorId":{"type":"integer","description":"ID of the Competitor.","format":"int64","nullable":true},"playerId":{"type":"integer","description":"ID of the Player.","format":"int64","nullable":true},"dataType":{"type":"string","description":"Type of data.","nullable":true},"version":{"type":"integer","description":"Version of the metadata.","format":"int64","nullable":true},"data":{"description":"The actual data.","nullable":true},"creationTime":{"type":"string","description":"Creation timestamp.","format":"date-time"},"feedSource":{"type":"integer","description":"ID of the feed source.","format":"int32"}},"additionalProperties":false,"description":"Metadata for an event."},"Microsoft.AspNetCore.Mvc.ProblemDetails":{"type":"object","properties":{"type":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"status":{"type":"integer","format":"int32","nullable":true},"detail":{"type":"string","nullable":true},"instance":{"type":"string","nullable":true}},"additionalProperties":{}}}},"paths":{"/api/GlobalMetadata/sport/{sportId}/league/{leagueId}/competitor/{competitorId}/{dataType}":{"get":{"tags":["GlobalMetadata"],"description":"\n**Rate Limits (per account):**\n- **40 req/1s**","parameters":[{"name":"sportId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"leagueId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"competitorId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"dataType","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"query","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.MetaData.GlobalMetadataViewModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.MetaData.GlobalMetadataViewModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.MetaData.GlobalMetadataViewModel"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}},"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}},"text/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}},"429":{"description":"Too many requests"}}}}}}
```

*
