> 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/schema-api.md).

# Schema API

Schema API endpoints allow to get internal entities which exist in Odds88.

{% hint style="warning" %}
All endpoints in the API are rate-limited.
{% endhint %}

## Gets all existing leagues for a specific sport.

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

```json
{"openapi":"3.0.4","info":{"title":"[T728-STAGE] Odds88 API","version":"v1"},"tags":[{"name":"Schema"}],"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.Schema.LeagueViewModel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string","nullable":true},"sportId":{"type":"integer","format":"int64"},"locationId":{"type":"integer","format":"int64"}},"additionalProperties":false}}},"paths":{"/api/schema/leagues/{sportId}":{"get":{"tags":["Schema"],"summary":"Gets all existing leagues for a specific sport.","description":"\n**Rate Limits (per account):**\n- **20 req/1s**","operationId":"Get leagues","parameters":[{"name":"sportId","in":"path","description":"TradeArt sport id.","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.LeagueViewModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.LeagueViewModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.LeagueViewModel"}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"description":"Too many requests"},"500":{"description":"Internal Server Error"}}}}}}
```

{% hint style="warning" %}
This endpoint is rate-limited to **20 requests per second.**
{% endhint %}

## Gets all existing locations for a specific sport.

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

```json
{"openapi":"3.0.4","info":{"title":"[T728-STAGE] Odds88 API","version":"v1"},"tags":[{"name":"Schema"}],"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.Schema.LocationViewModel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string","nullable":true}},"additionalProperties":false}}},"paths":{"/api/schema/locations":{"get":{"tags":["Schema"],"summary":"Gets all existing locations for a specific sport.","description":"\n**Rate Limits (per account):**\n- **20 req/1s**","operationId":"Get locations","parameters":[{"name":"sportId","in":"query","description":"TradeArt sport id. Will return all locations if not specified.","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.LocationViewModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.LocationViewModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.LocationViewModel"}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"description":"Too many requests"},"500":{"description":"Internal Server Error"}}}}}}
```

{% hint style="warning" %}
This endpoint is rate-limited to **20 requests per second.**
{% endhint %}

## Gets all existing market types for a specific sport.

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

```json
{"openapi":"3.0.4","info":{"title":"[T728-STAGE] Odds88 API","version":"v1"},"tags":[{"name":"Schema"}],"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.Schema.MarketTypeViewModel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string","nullable":true},"groups":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.MarketGroupViewModel"},"nullable":true},"isMultilineMarket":{"type":"boolean"},"isFreeText":{"type":"boolean"}},"additionalProperties":false,"description":"Represents Market Type."},"Marlin.SportsbetApi.Host.Models.Schema.MarketGroupViewModel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string","nullable":true},"order":{"type":"integer","format":"int32"},"sportId":{"type":"integer","format":"int64"}},"additionalProperties":false,"description":"Represents Market Group."}}},"paths":{"/api/schema/market-types":{"get":{"tags":["Schema"],"summary":"Gets all existing market types for a specific sport.","description":"\n**Rate Limits (per account):**\n- **20 req/1s**","operationId":"Get market types","parameters":[{"name":"sportId","in":"query","description":"TradeArt sport id. Will return all market types if not specified.","schema":{"type":"integer","format":"int64"}},{"name":"includeFreeText","in":"query","description":"A flag indicating whether the response should include free text types or not.","schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.MarketTypeViewModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.MarketTypeViewModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.MarketTypeViewModel"}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"description":"Too many requests"},"500":{"description":"Internal Server Error"}}}}}}
```

{% hint style="warning" %}
This endpoint is rate-limited to **20 requests per second.**
{% endhint %}

## Gets all existing periods for a specific sport.

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

```json
{"openapi":"3.0.4","info":{"title":"[T728-STAGE] Odds88 API","version":"v1"},"tags":[{"name":"Schema"}],"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.Schema.SportPeriodViewModel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string","nullable":true},"sportId":{"type":"integer","format":"int64"}},"additionalProperties":false}}},"paths":{"/api/schema/periods":{"get":{"tags":["Schema"],"summary":"Gets all existing periods for a specific sport.","description":"\n**Rate Limits (per account):**\n- **20 req/1s**","operationId":"Get sport periods","parameters":[{"name":"sportId","in":"query","description":"TradeArt sport id. Will return all periods if not specified.","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.SportPeriodViewModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.SportPeriodViewModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.SportPeriodViewModel"}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"description":"Too many requests"},"500":{"description":"Internal Server Error"}}}}}}
```

{% hint style="warning" %}
This endpoint is rate-limited to **20 requests per second.**
{% endhint %}

## Gets all existing sports.

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

```json
{"openapi":"3.0.4","info":{"title":"[T728-STAGE] Odds88 API","version":"v1"},"tags":[{"name":"Schema"}],"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.Schema.SportViewModel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string","nullable":true}},"additionalProperties":false}}},"paths":{"/api/schema/sports":{"get":{"tags":["Schema"],"summary":"Gets all existing sports.","description":"\n**Rate Limits (per account):**\n- **1 req/1m**","operationId":"Get sports","responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.SportViewModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.SportViewModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Marlin.SportsbetApi.Host.Models.Schema.SportViewModel"}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"description":"Too many requests"},"500":{"description":"Internal Server Error"}}}}}}
```

{% hint style="warning" %}
This endpoint is rate-limited to **1 request per minute.**
{% endhint %}
