# Twitch Video API Reference

Canonical: https://monsterapi.co/docs/api/twitch-video

Read the Twitch Video reference. Review parameters, response fields, examples, and current credit prices.

OpenAPI specification: [Twitch](https://monsterapi.co/docs/openapi/platforms/twitch.yaml).

---

Current operation prices: [public catalog](https://monsterapi.co/account/api/v1/public/api-prices). Prices use credits per request.

---

# Twitch: Channel video shelves

`GET /twitch/api/channel/{login}/collections`

Documentation: https://monsterapi.co/docs/api/twitch#channel-video-shelves

Operation ID: `twitch_channel_collections`

Returns one page of a channel's video shelves: broadcasts, clips, highlights and collections.

## Authentication

Send your billing API key in the `Authorization: Bearer <YOUR_API_KEY>` header. Your account login is separate.

## Inputs

- `login` (path, required): Required account username: 1 to 25 ASCII letters, digits or underscores. Use `users[].username` from [GET /twitch/api/users](https://monsterapi.co/docs/api/twitch-channel#accounts-by-identifier).

- `cursor` (query, optional): Optional continuation cursor from `next_cursor` in the preceding response to
  GET /twitch/api/channel/{login}/collections or GET /twitch/api/collection/{id}.
  Keep the same endpoint and channel or collection.
  [Channel shelves](https://monsterapi.co/docs/api/twitch-video#channel-video-shelves),
  [Collection videos](https://monsterapi.co/docs/api/twitch-video#collection-videos).

## Responses

- 200: Shelves of the channel

- 400: bad_request: invalid path or query parameter, including a malformed continuation cursor

Refused at the gateway: the request target, path and query string together, is longer than 8,192 bytes; or the headers, the target counted among them, exceed 16,384 bytes or 64 fields

- 401: Refusal envelope

Refused at the gateway: the `Authorization` header carries no API key, or a malformed one

- 402: Refusal envelope

Refused at the gateway: the credits of the account do not cover the price of the operation

- 403: Refusal envelope

Refused at the gateway: the API key is unknown or revoked

- 404: not_found: resource absent, or no records and no next_cursor; an empty page with next_cursor returns 200

- 405: `method_not_allowed`: the endpoint answers GET alone, and any other method, HEAD included, is refused

Refused at the gateway: the path exists, but no operation on it takes the method of the request, HEAD included; `Allow` names the methods that do

- 409: Refusal envelope

Refused at the gateway: a repeat of a request the gateway already checked differs from the original

- 429: Refusal envelope

Refused at the gateway: the account calls faster than its rate limit allows

- 500: upstream_shape: Twitch returned an unreadable or unexpected response; this does not indicate the end of a listing

- 501: requires_auth: requested information is unavailable to anonymous viewers

- 503: rate_limited: retry after Retry-After; upstream_error: retry after Retry-After; upstream_stale: Twitch access temporarily unavailable; no_proxies: Twitch access temporarily unavailable; overloaded: capacity unavailable

Refused at the gateway: the check could not complete, the account is suspended, or the platform did not answer; each may pass later, and `Retry-After` comes only when the platform did not answer

- default: Refusal envelope

## Credits

Check the live price in the documentation before sending. Platform 2xx and 4xx responses can use credits, including empty data. Gateway refusals and 5xx responses do not use credits. Each pagination request is a separate call.

https://monsterapi.co/docs/pricing

## Request template

Replace path placeholders and add the required query parameters from the Inputs section before sending.

```shell

curl --get 'https://api.monsterapi.co/twitch/api/channel/{login}/collections' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'

```

---

# Twitch: Channel recordings

`GET /twitch/api/channel/{login}/videos`

Documentation: https://monsterapi.co/docs/api/twitch#channel-recordings

Operation ID: `twitch_channel_videos`

Returns the recordings of one channel, narrowed by kind and ordered by time or by views.

## Authentication

Send your billing API key in the `Authorization: Bearer <YOUR_API_KEY>` header. Your account login is separate.

## Inputs

- `login` (path, required): Required account username: 1 to 25 ASCII letters, digits or underscores. Use `users[].username` from [GET /twitch/api/users](https://monsterapi.co/docs/api/twitch-channel#accounts-by-identifier).

- `type` (query, optional): Kind of broadcast to list. Every kind is listed when the parameter is absent.

- `sort` (query, optional): Order of the listing. Defaults to newest first.

- `limit` (query, optional): Entries to ask for, between 1 and 100. Defaults to the largest page.

- `cursor` (query, optional): Optional continuation cursor from `next_cursor` in the preceding response to
  GET /twitch/api/channel/{login}/videos; keep the same channel, kind and sort order.
  [Channel recordings](https://monsterapi.co/docs/api/twitch-video#channel-recordings).

## Responses

- 200: Page of recordings

- 400: bad_request: invalid path or query parameter, including a malformed continuation cursor

Refused at the gateway: the request target, path and query string together, is longer than 8,192 bytes; or the headers, the target counted among them, exceed 16,384 bytes or 64 fields

- 401: Refusal envelope

Refused at the gateway: the `Authorization` header carries no API key, or a malformed one

- 402: Refusal envelope

Refused at the gateway: the credits of the account do not cover the price of the operation

- 403: Refusal envelope

Refused at the gateway: the API key is unknown or revoked

- 404: not_found: resource absent, or no records and no next_cursor; an empty page with next_cursor returns 200

- 405: `method_not_allowed`: the endpoint answers GET alone, and any other method, HEAD included, is refused

Refused at the gateway: the path exists, but no operation on it takes the method of the request, HEAD included; `Allow` names the methods that do

- 409: Refusal envelope

Refused at the gateway: a repeat of a request the gateway already checked differs from the original

- 429: Refusal envelope

Refused at the gateway: the account calls faster than its rate limit allows

- 500: upstream_shape: Twitch returned an unreadable or unexpected response; this does not indicate the end of a listing

- 501: requires_auth: requested information is unavailable to anonymous viewers

- 503: rate_limited: retry after Retry-After; upstream_error: retry after Retry-After; upstream_stale: Twitch access temporarily unavailable; no_proxies: Twitch access temporarily unavailable; overloaded: capacity unavailable

Refused at the gateway: the check could not complete, the account is suspended, or the platform did not answer; each may pass later, and `Retry-After` comes only when the platform did not answer

- default: Refusal envelope

## Credits

Check the live price in the documentation before sending. Platform 2xx and 4xx responses can use credits, including empty data. Gateway refusals and 5xx responses do not use credits. Each pagination request is a separate call.

https://monsterapi.co/docs/pricing

## Request template

Replace path placeholders and add the required query parameters from the Inputs section before sending.

```shell

curl --get 'https://api.monsterapi.co/twitch/api/channel/{login}/videos' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'

```

---

# Twitch: Collection videos

`GET /twitch/api/collection/{id}`

Documentation: https://monsterapi.co/docs/api/twitch#collection-videos

Operation ID: `twitch_collection_details`

Returns collection metadata and one page of recordings. Use `shelves[].collection_id` from [GET /twitch/api/channel/{login}/collections](https://monsterapi.co/docs/api/twitch-video#channel-video-shelves).

## Authentication

Send your billing API key in the `Authorization: Bearer <YOUR_API_KEY>` header. Your account login is separate.

## Inputs

- `id` (path, required): Collection identifier from `shelves[].collection_id` in [GET /twitch/api/channel/{login}/collections](https://monsterapi.co/docs/api/twitch-video#channel-video-shelves)

- `cursor` (query, optional): Optional continuation cursor from `next_cursor` in the preceding response to
  GET /twitch/api/channel/{login}/collections or GET /twitch/api/collection/{id}.
  Keep the same endpoint and channel or collection.
  [Channel shelves](https://monsterapi.co/docs/api/twitch-video#channel-video-shelves),
  [Collection videos](https://monsterapi.co/docs/api/twitch-video#collection-videos).

## Responses

- 200: Collection and its recordings

- 400: bad_request: invalid path or query parameter, including a malformed continuation cursor

Refused at the gateway: the request target, path and query string together, is longer than 8,192 bytes; or the headers, the target counted among them, exceed 16,384 bytes or 64 fields

- 401: Refusal envelope

Refused at the gateway: the `Authorization` header carries no API key, or a malformed one

- 402: Refusal envelope

Refused at the gateway: the credits of the account do not cover the price of the operation

- 403: Refusal envelope

Refused at the gateway: the API key is unknown or revoked

- 404: not_found: resource absent, or no records and no next_cursor; an empty page with next_cursor returns 200

- 405: `method_not_allowed`: the endpoint answers GET alone, and any other method, HEAD included, is refused

Refused at the gateway: the path exists, but no operation on it takes the method of the request, HEAD included; `Allow` names the methods that do

- 409: Refusal envelope

Refused at the gateway: a repeat of a request the gateway already checked differs from the original

- 429: Refusal envelope

Refused at the gateway: the account calls faster than its rate limit allows

- 500: upstream_shape: Twitch returned an unreadable or unexpected response; this does not indicate the end of a listing

- 501: requires_auth: requested information is unavailable to anonymous viewers

- 503: rate_limited: retry after Retry-After; upstream_error: retry after Retry-After; upstream_stale: Twitch access temporarily unavailable; no_proxies: Twitch access temporarily unavailable; overloaded: capacity unavailable

Refused at the gateway: the check could not complete, the account is suspended, or the platform did not answer; each may pass later, and `Retry-After` comes only when the platform did not answer

- default: Refusal envelope

## Credits

Check the live price in the documentation before sending. Platform 2xx and 4xx responses can use credits, including empty data. Gateway refusals and 5xx responses do not use credits. Each pagination request is a separate call.

https://monsterapi.co/docs/pricing

## Request template

Replace path placeholders and add the required query parameters from the Inputs section before sending.

```shell

curl --get 'https://api.monsterapi.co/twitch/api/collection/{id}' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'

```

---

# Twitch: Live HLS manifest

`GET /twitch/api/stream/{login}/playback`

Documentation: https://monsterapi.co/docs/api/twitch#live-hls-manifest

Operation ID: `twitch_stream_playback`

Returns a channel’s HLS variants and media tracks. Requires `token` and `sig` from GET /twitch/api/stream/{login}/playback/token; an offline channel is not_found, expired permission is bad_request with message token expired, request a new one.

## Authentication

Send your billing API key in the `Authorization: Bearer <YOUR_API_KEY>` header. Your account login is separate.

## Inputs

- `login` (path, required): Required account username: 1 to 25 ASCII letters, digits or underscores. Use `users[].username` from [GET /twitch/api/users](https://monsterapi.co/docs/api/twitch-channel#accounts-by-identifier).

- `token` (query, required): Required signed value from the top-level `token` field in
  GET /twitch/api/video/{id}/playback/token ([Recording token](https://monsterapi.co/docs/api/twitch-video#recording-playback-token))
  or GET /twitch/api/stream/{login}/playback/token ([Live token](https://monsterapi.co/docs/api/twitch-video#live-playback-token)).
  Pass unchanged and URL-encoded for the matching recording or channel, at most 8192 characters.
  Requires a JSON object with integer expires/version, authorization and chansub objects,
  and a numeric vod_id or channel string matching the path.

- `sig` (query, required): Required signature from the top-level `signature` field in the same
  GET /twitch/api/video/{id}/playback/token or GET /twitch/api/stream/{login}/playback/token response.
  [Recording token](https://monsterapi.co/docs/api/twitch-video#recording-playback-token),
  [Live token](https://monsterapi.co/docs/api/twitch-video#live-playback-token).
  Pass unchanged and URL-encoded; nonempty, at most 8192 characters, without control characters.

## Responses

- 200: HLS variant URIs and string attributes

- 400: bad_request: token or signature is malformed or expired, permission does not match the channel, or a required parameter is missing; request a new token when expired

Refused at the gateway: the request target, path and query string together, is longer than 8,192 bytes; or the headers, the target counted among them, exceed 16,384 bytes or 64 fields

- 401: Refusal envelope

Refused at the gateway: the `Authorization` header carries no API key, or a malformed one

- 402: Refusal envelope

Refused at the gateway: the credits of the account do not cover the price of the operation

- 403: private: playback is unavailable to anonymous viewers in this region or requires a subscription

Refused at the gateway: the API key is unknown or revoked

- 404: not_found: channel is offline or the stream is unavailable

- 405: `method_not_allowed`: the endpoint answers GET alone, and any other method, HEAD included, is refused

Refused at the gateway: the path exists, but no operation on it takes the method of the request, HEAD included; `Allow` names the methods that do

- 409: Refusal envelope

Refused at the gateway: a repeat of a request the gateway already checked differs from the original

- 429: Refusal envelope

Refused at the gateway: the account calls faster than its rate limit allows

- 500: upstream_shape: Twitch returned an unreadable or unexpected response; this does not indicate the end of a listing

- 503: rate_limited: retry after Retry-After; upstream_error: retry after Retry-After; upstream_stale: Twitch access temporarily unavailable; no_proxies: Twitch access temporarily unavailable; overloaded: capacity unavailable

Refused at the gateway: the check could not complete, the account is suspended, or the platform did not answer; each may pass later, and `Retry-After` comes only when the platform did not answer

- default: Refusal envelope

## Credits

Check the live price in the documentation before sending. Platform 2xx and 4xx responses can use credits, including empty data. Gateway refusals and 5xx responses do not use credits. Each pagination request is a separate call.

https://monsterapi.co/docs/pricing

## Request template

Replace path placeholders and add the required query parameters from the Inputs section before sending.

```shell

curl --get 'https://api.monsterapi.co/twitch/api/stream/{login}/playback' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'

```

---

# Twitch: Live playback token

`GET /twitch/api/stream/{login}/playback/token`

Documentation: https://monsterapi.co/docs/api/twitch#live-playback-token

Operation ID: `twitch_stream_playback_token`

Returns signed playback permission for one channel. Pass `token` and `signature` as `token` and `sig` to GET /twitch/api/stream/{login}/playback; permission does not guarantee a live broadcast.

## Authentication

Send your billing API key in the `Authorization: Bearer <YOUR_API_KEY>` header. Your account login is separate.

## Inputs

- `login` (path, required): Required account username: 1 to 25 ASCII letters, digits or underscores. Use `users[].username` from [GET /twitch/api/users](https://monsterapi.co/docs/api/twitch-channel#accounts-by-identifier).

## Responses

- 200: Signed stream permission

- 400: bad_request: invalid path or query parameter

Refused at the gateway: the request target, path and query string together, is longer than 8,192 bytes; or the headers, the target counted among them, exceed 16,384 bytes or 64 fields

- 401: Refusal envelope

Refused at the gateway: the `Authorization` header carries no API key, or a malformed one

- 402: Refusal envelope

Refused at the gateway: the credits of the account do not cover the price of the operation

- 403: Refusal envelope

Refused at the gateway: the API key is unknown or revoked

- 404: not_found: requested resource does not exist or is unavailable

- 405: `method_not_allowed`: the endpoint answers GET alone, and any other method, HEAD included, is refused

Refused at the gateway: the path exists, but no operation on it takes the method of the request, HEAD included; `Allow` names the methods that do

- 409: Refusal envelope

Refused at the gateway: a repeat of a request the gateway already checked differs from the original

- 429: Refusal envelope

Refused at the gateway: the account calls faster than its rate limit allows

- 500: upstream_shape: Twitch returned an unreadable or unexpected response; this does not indicate the end of a listing

- 501: requires_auth: requested information is unavailable to anonymous viewers

- 503: rate_limited: retry after Retry-After; upstream_error: retry after Retry-After; upstream_stale: Twitch access temporarily unavailable; no_proxies: Twitch access temporarily unavailable; overloaded: capacity unavailable

Refused at the gateway: the check could not complete, the account is suspended, or the platform did not answer; each may pass later, and `Retry-After` comes only when the platform did not answer

- default: Refusal envelope

## Credits

Check the live price in the documentation before sending. Platform 2xx and 4xx responses can use credits, including empty data. Gateway refusals and 5xx responses do not use credits. Each pagination request is a separate call.

https://monsterapi.co/docs/pricing

## Request template

Replace path placeholders and add the required query parameters from the Inputs section before sending.

```shell

curl --get 'https://api.monsterapi.co/twitch/api/stream/{login}/playback/token' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'

```

---

# Twitch: Recording metadata

`GET /twitch/api/video/{id}`

Documentation: https://monsterapi.co/docs/api/twitch#recording-metadata

Operation ID: `twitch_video_details`

Returns one recording by its numeric identifier, with its category, owner and content labels.

## Authentication

Send your billing API key in the `Authorization: Bearer <YOUR_API_KEY>` header. Your account login is separate.

## Inputs

- `id` (path, required): Numeric recording identifier from `videos[].id` in [GET /twitch/api/channel/{login}/videos](https://monsterapi.co/docs/api/twitch-video#channel-recordings)

## Responses

- 200: Recording metadata

- 400: bad_request: invalid path or query parameter

Refused at the gateway: the request target, path and query string together, is longer than 8,192 bytes; or the headers, the target counted among them, exceed 16,384 bytes or 64 fields

- 401: Refusal envelope

Refused at the gateway: the `Authorization` header carries no API key, or a malformed one

- 402: Refusal envelope

Refused at the gateway: the credits of the account do not cover the price of the operation

- 403: Refusal envelope

Refused at the gateway: the API key is unknown or revoked

- 404: not_found: requested resource does not exist or is unavailable

- 405: `method_not_allowed`: the endpoint answers GET alone, and any other method, HEAD included, is refused

Refused at the gateway: the path exists, but no operation on it takes the method of the request, HEAD included; `Allow` names the methods that do

- 409: Refusal envelope

Refused at the gateway: a repeat of a request the gateway already checked differs from the original

- 429: Refusal envelope

Refused at the gateway: the account calls faster than its rate limit allows

- 500: upstream_shape: Twitch returned an unreadable or unexpected response; this does not indicate the end of a listing

- 501: requires_auth: requested information is unavailable to anonymous viewers

- 503: rate_limited: retry after Retry-After; upstream_error: retry after Retry-After; upstream_stale: Twitch access temporarily unavailable; no_proxies: Twitch access temporarily unavailable; overloaded: capacity unavailable

Refused at the gateway: the check could not complete, the account is suspended, or the platform did not answer; each may pass later, and `Retry-After` comes only when the platform did not answer

- default: Refusal envelope

## Credits

Check the live price in the documentation before sending. Platform 2xx and 4xx responses can use credits, including empty data. Gateway refusals and 5xx responses do not use credits. Each pagination request is a separate call.

https://monsterapi.co/docs/pricing

## Request template

Replace path placeholders and add the required query parameters from the Inputs section before sending.

```shell

curl --get 'https://api.monsterapi.co/twitch/api/video/{id}' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'

```

---

# Twitch: Recording chapters

`GET /twitch/api/video/{id}/chapters`

Documentation: https://monsterapi.co/docs/api/twitch#recording-chapters

Operation ID: `twitch_video_chapters`

Returns the marked points of one recording, such as every moment its category changed.

## Authentication

Send your billing API key in the `Authorization: Bearer <YOUR_API_KEY>` header. Your account login is separate.

## Inputs

- `id` (path, required): Numeric recording identifier from `videos[].id` in [GET /twitch/api/channel/{login}/videos](https://monsterapi.co/docs/api/twitch-video#channel-recordings)

## Responses

- 200: Chapters of the recording

- 400: bad_request: invalid path or query parameter

Refused at the gateway: the request target, path and query string together, is longer than 8,192 bytes; or the headers, the target counted among them, exceed 16,384 bytes or 64 fields

- 401: Refusal envelope

Refused at the gateway: the `Authorization` header carries no API key, or a malformed one

- 402: Refusal envelope

Refused at the gateway: the credits of the account do not cover the price of the operation

- 403: Refusal envelope

Refused at the gateway: the API key is unknown or revoked

- 404: not_found: resource absent or all primary lists are empty

- 405: `method_not_allowed`: the endpoint answers GET alone, and any other method, HEAD included, is refused

Refused at the gateway: the path exists, but no operation on it takes the method of the request, HEAD included; `Allow` names the methods that do

- 409: Refusal envelope

Refused at the gateway: a repeat of a request the gateway already checked differs from the original

- 429: Refusal envelope

Refused at the gateway: the account calls faster than its rate limit allows

- 500: upstream_shape: Twitch returned an unreadable or unexpected response; this does not indicate the end of a listing

- 501: requires_auth: requested information is unavailable to anonymous viewers

- 503: rate_limited: retry after Retry-After; upstream_error: retry after Retry-After; upstream_stale: Twitch access temporarily unavailable; no_proxies: Twitch access temporarily unavailable; overloaded: capacity unavailable

Refused at the gateway: the check could not complete, the account is suspended, or the platform did not answer; each may pass later, and `Retry-After` comes only when the platform did not answer

- default: Refusal envelope

## Credits

Check the live price in the documentation before sending. Platform 2xx and 4xx responses can use credits, including empty data. Gateway refusals and 5xx responses do not use credits. Each pagination request is a separate call.

https://monsterapi.co/docs/pricing

## Request template

Replace path placeholders and add the required query parameters from the Inputs section before sending.

```shell

curl --get 'https://api.monsterapi.co/twitch/api/video/{id}/chapters' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'

```

---

# Twitch: Recorded chat

`GET /twitch/api/video/{id}/chat`

Documentation: https://monsterapi.co/docs/api/twitch#recorded-chat

Operation ID: `twitch_video_chat_replay`

Returns a recording's chat window around offset in seconds, possibly including earlier messages. Pass next_cursor unchanged as cursor for sequential continuation; cursor takes precedence over offset.

## Authentication

Send your billing API key in the `Authorization: Bearer <YOUR_API_KEY>` header. Your account login is separate.

## Inputs

- `id` (path, required): Numeric recording identifier from `videos[].id` in [GET /twitch/api/channel/{login}/videos](https://monsterapi.co/docs/api/twitch-video#channel-recordings)

- `offset` (query, optional): Nonnegative seek position in seconds, up to 2,147,483,647. Defaults to 0.
  The chat window may include messages before this position.
  Ignored when a cursor is given; otherwise must be less than the recording length.

- `cursor` (query, optional): Optional continuation cursor from `next_cursor` in the preceding response to
  GET /twitch/api/video/{id}/chat for the same recording; takes precedence over `offset`.
  [Recorded chat](https://monsterapi.co/docs/api/twitch-video#recorded-chat).

## Responses

- 200: Slice of the recorded chat

- 400: bad_request: identifier, offset or cursor is malformed, or offset is past the recording length

Refused at the gateway: the request target, path and query string together, is longer than 8,192 bytes; or the headers, the target counted among them, exceed 16,384 bytes or 64 fields

- 401: Refusal envelope

Refused at the gateway: the `Authorization` header carries no API key, or a malformed one

- 402: Refusal envelope

Refused at the gateway: the credits of the account do not cover the price of the operation

- 403: Refusal envelope

Refused at the gateway: the API key is unknown or revoked

- 404: not_found: resource absent, or no records and no next_cursor; an empty page with next_cursor returns 200

- 405: `method_not_allowed`: the endpoint answers GET alone, and any other method, HEAD included, is refused

Refused at the gateway: the path exists, but no operation on it takes the method of the request, HEAD included; `Allow` names the methods that do

- 409: Refusal envelope

Refused at the gateway: a repeat of a request the gateway already checked differs from the original

- 429: Refusal envelope

Refused at the gateway: the account calls faster than its rate limit allows

- 500: upstream_shape: Twitch returned an unreadable or unexpected response; this does not indicate the end of a listing

- 501: requires_auth: requested information is unavailable to anonymous viewers

- 503: rate_limited: retry after Retry-After; upstream_error: retry after Retry-After; upstream_stale: Twitch access temporarily unavailable; no_proxies: Twitch access temporarily unavailable; overloaded: capacity unavailable

Refused at the gateway: the check could not complete, the account is suspended, or the platform did not answer; each may pass later, and `Retry-After` comes only when the platform did not answer

- default: Refusal envelope

## Credits

Check the live price in the documentation before sending. Platform 2xx and 4xx responses can use credits, including empty data. Gateway refusals and 5xx responses do not use credits. Each pagination request is a separate call.

https://monsterapi.co/docs/pricing

## Request template

Replace path placeholders and add the required query parameters from the Inputs section before sending.

```shell

curl --get 'https://api.monsterapi.co/twitch/api/video/{id}/chat' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'

```

---

# Twitch: Recording HLS manifest

`GET /twitch/api/video/{id}/playback`

Documentation: https://monsterapi.co/docs/api/twitch#recording-hls-manifest

Operation ID: `twitch_video_playback`

Returns a recording’s HLS variants and media tracks. Requires `token` and `sig` from GET /twitch/api/video/{id}/playback/token; expired permission returns bad_request with message token expired, request a new one.

## Authentication

Send your billing API key in the `Authorization: Bearer <YOUR_API_KEY>` header. Your account login is separate.

## Inputs

- `id` (path, required): Numeric recording identifier from `videos[].id` in [GET /twitch/api/channel/{login}/videos](https://monsterapi.co/docs/api/twitch-video#channel-recordings)

- `token` (query, required): Required signed value from the top-level `token` field in
  GET /twitch/api/video/{id}/playback/token ([Recording token](https://monsterapi.co/docs/api/twitch-video#recording-playback-token))
  or GET /twitch/api/stream/{login}/playback/token ([Live token](https://monsterapi.co/docs/api/twitch-video#live-playback-token)).
  Pass unchanged and URL-encoded for the matching recording or channel, at most 8192 characters.
  Requires a JSON object with integer expires/version, authorization and chansub objects,
  and a numeric vod_id or channel string matching the path.

- `sig` (query, required): Required signature from the top-level `signature` field in the same
  GET /twitch/api/video/{id}/playback/token or GET /twitch/api/stream/{login}/playback/token response.
  [Recording token](https://monsterapi.co/docs/api/twitch-video#recording-playback-token),
  [Live token](https://monsterapi.co/docs/api/twitch-video#live-playback-token).
  Pass unchanged and URL-encoded; nonempty, at most 8192 characters, without control characters.

## Responses

- 200: HLS variant URIs and string attributes

- 400: bad_request: token or signature is malformed or expired, permission does not match the recording, or a required parameter is missing; request a new token when expired

Refused at the gateway: the request target, path and query string together, is longer than 8,192 bytes; or the headers, the target counted among them, exceed 16,384 bytes or 64 fields

- 401: Refusal envelope

Refused at the gateway: the `Authorization` header carries no API key, or a malformed one

- 402: Refusal envelope

Refused at the gateway: the credits of the account do not cover the price of the operation

- 403: private: playback is unavailable to anonymous viewers in this region or requires a subscription

Refused at the gateway: the API key is unknown or revoked

- 404: not_found: requested resource does not exist or is unavailable

- 405: `method_not_allowed`: the endpoint answers GET alone, and any other method, HEAD included, is refused

Refused at the gateway: the path exists, but no operation on it takes the method of the request, HEAD included; `Allow` names the methods that do

- 409: Refusal envelope

Refused at the gateway: a repeat of a request the gateway already checked differs from the original

- 429: Refusal envelope

Refused at the gateway: the account calls faster than its rate limit allows

- 500: upstream_shape: Twitch returned an unreadable or unexpected response; this does not indicate the end of a listing

- 503: rate_limited: retry after Retry-After; upstream_error: retry after Retry-After; upstream_stale: Twitch access temporarily unavailable; no_proxies: Twitch access temporarily unavailable; overloaded: capacity unavailable

Refused at the gateway: the check could not complete, the account is suspended, or the platform did not answer; each may pass later, and `Retry-After` comes only when the platform did not answer

- default: Refusal envelope

## Credits

Check the live price in the documentation before sending. Platform 2xx and 4xx responses can use credits, including empty data. Gateway refusals and 5xx responses do not use credits. Each pagination request is a separate call.

https://monsterapi.co/docs/pricing

## Request template

Replace path placeholders and add the required query parameters from the Inputs section before sending.

```shell

curl --get 'https://api.monsterapi.co/twitch/api/video/{id}/playback' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'

```

---

# Twitch: Recording playback token

`GET /twitch/api/video/{id}/playback/token`

Documentation: https://monsterapi.co/docs/api/twitch#recording-playback-token

Operation ID: `twitch_video_playback_token`

Returns signed playback permission for one recording. Pass `token` and `signature` as `token` and `sig` to GET /twitch/api/video/{id}/playback.

## Authentication

Send your billing API key in the `Authorization: Bearer <YOUR_API_KEY>` header. Your account login is separate.

## Inputs

- `id` (path, required): Numeric recording identifier from `videos[].id` in [GET /twitch/api/channel/{login}/videos](https://monsterapi.co/docs/api/twitch-video#channel-recordings)

## Responses

- 200: Signed recording permission

- 400: bad_request: invalid path or query parameter

Refused at the gateway: the request target, path and query string together, is longer than 8,192 bytes; or the headers, the target counted among them, exceed 16,384 bytes or 64 fields

- 401: Refusal envelope

Refused at the gateway: the `Authorization` header carries no API key, or a malformed one

- 402: Refusal envelope

Refused at the gateway: the credits of the account do not cover the price of the operation

- 403: Refusal envelope

Refused at the gateway: the API key is unknown or revoked

- 404: not_found: requested resource does not exist or is unavailable

- 405: `method_not_allowed`: the endpoint answers GET alone, and any other method, HEAD included, is refused

Refused at the gateway: the path exists, but no operation on it takes the method of the request, HEAD included; `Allow` names the methods that do

- 409: Refusal envelope

Refused at the gateway: a repeat of a request the gateway already checked differs from the original

- 429: Refusal envelope

Refused at the gateway: the account calls faster than its rate limit allows

- 500: upstream_shape: Twitch returned an unreadable or unexpected response; this does not indicate the end of a listing

- 501: requires_auth: requested information is unavailable to anonymous viewers

- 503: rate_limited: retry after Retry-After; upstream_error: retry after Retry-After; upstream_stale: Twitch access temporarily unavailable; no_proxies: Twitch access temporarily unavailable; overloaded: capacity unavailable

Refused at the gateway: the check could not complete, the account is suspended, or the platform did not answer; each may pass later, and `Retry-After` comes only when the platform did not answer

- default: Refusal envelope

## Credits

Check the live price in the documentation before sending. Platform 2xx and 4xx responses can use credits, including empty data. Gateway refusals and 5xx responses do not use credits. Each pagination request is a separate call.

https://monsterapi.co/docs/pricing

## Request template

Replace path placeholders and add the required query parameters from the Inputs section before sending.

```shell

curl --get 'https://api.monsterapi.co/twitch/api/video/{id}/playback/token' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'

```

---

# Twitch: Seekbar preview index

`GET /twitch/api/video/{id}/storyboard`

Documentation: https://monsterapi.co/docs/api/twitch#seekbar-preview-index

Operation ID: `twitch_video_storyboard`

Returns the address of the seekbar preview index of one recording, which a client fetches itself.

## Authentication

Send your billing API key in the `Authorization: Bearer <YOUR_API_KEY>` header. Your account login is separate.

## Inputs

- `id` (path, required): Numeric recording identifier from `videos[].id` in [GET /twitch/api/channel/{login}/videos](https://monsterapi.co/docs/api/twitch-video#channel-recordings)

## Responses

- 200: Address of the preview index

- 400: bad_request: invalid path or query parameter

Refused at the gateway: the request target, path and query string together, is longer than 8,192 bytes; or the headers, the target counted among them, exceed 16,384 bytes or 64 fields

- 401: Refusal envelope

Refused at the gateway: the `Authorization` header carries no API key, or a malformed one

- 402: Refusal envelope

Refused at the gateway: the credits of the account do not cover the price of the operation

- 403: Refusal envelope

Refused at the gateway: the API key is unknown or revoked

- 404: not_found: requested resource does not exist or is unavailable

- 405: `method_not_allowed`: the endpoint answers GET alone, and any other method, HEAD included, is refused

Refused at the gateway: the path exists, but no operation on it takes the method of the request, HEAD included; `Allow` names the methods that do

- 409: Refusal envelope

Refused at the gateway: a repeat of a request the gateway already checked differs from the original

- 429: Refusal envelope

Refused at the gateway: the account calls faster than its rate limit allows

- 500: upstream_shape: Twitch returned an unreadable or unexpected response; this does not indicate the end of a listing

- 501: requires_auth: requested information is unavailable to anonymous viewers

- 503: rate_limited: retry after Retry-After; upstream_error: retry after Retry-After; upstream_stale: Twitch access temporarily unavailable; no_proxies: Twitch access temporarily unavailable; overloaded: capacity unavailable

Refused at the gateway: the check could not complete, the account is suspended, or the platform did not answer; each may pass later, and `Retry-After` comes only when the platform did not answer

- default: Refusal envelope

## Credits

Check the live price in the documentation before sending. Platform 2xx and 4xx responses can use credits, including empty data. Gateway refusals and 5xx responses do not use credits. Each pagination request is a separate call.

https://monsterapi.co/docs/pricing

## Request template

Replace path placeholders and add the required query parameters from the Inputs section before sending.

```shell

curl --get 'https://api.monsterapi.co/twitch/api/video/{id}/storyboard' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'

```
