---
title: "Streaming API v2: All endpoints"
description: "The full list of actions, plus the health check (identity) and the line status (account-info)."
---

All need `Authorization: Bearer` except `identity` and `login`.

| Method | Action | |
|---|---|---|
| GET | [`identity`](#get-identity) | Health check and capabilities |
| POST | [`login`](/docs/streaming-api-v2-sessions#sign-in) | Sign in a line |
| POST | [`refresh-session`](/docs/streaming-api-v2-sessions#keep-it-fresh-refresh-session) | Renew the session |
| POST | [`logout`](/docs/streaming-api-v2-sessions#sign-out) | Sign out this device |
| POST | [`logout-all`](/docs/streaming-api-v2-sessions#sign-out) | Sign out every device of the line |
| GET | [`account-info`](#get-account-info) | The line's status |
| GET | [`live-categories`, `vod-categories`, `series-categories`](/docs/streaming-api-v2-lists#get-categories) | Categories |
| GET | [`live-channels`](/docs/streaming-api-v2-lists#get-live-channels) | Channels, paginated |
| GET | [`vod-movies`](/docs/streaming-api-v2-lists#get-vod-movies) | Movies, paginated |
| GET | [`series`](/docs/streaming-api-v2-lists#get-series) | Series, paginated |
| GET | [`vod-info`](/docs/streaming-api-v2-details#get-vod-info) | One movie |
| GET | [`series-info`](/docs/streaming-api-v2-details#get-series-info) | One series with seasons and episodes |
| GET | [`episode-info`](/docs/streaming-api-v2-details#get-episode-info) | One episode with its series |
| GET | [`short-epg`](/docs/streaming-api-v2-epg#get-short-epg) | Upcoming programs of a channel |
| GET | [`epg`](/docs/streaming-api-v2-epg#get-epg) | Guide of a channel in a time range (with past programs) |
| GET | [`epg-now`](/docs/streaming-api-v2-epg#get-epg-now) | Now and next for up to 100 channels |
| GET | [`search`](/docs/streaming-api-v2-search#get-search) | Search by name |
| GET | [`recently-added`](/docs/streaming-api-v2-lists#get-recently-added) | Newest items |
| GET | [`events`](/docs/streaming-api-v2-lists#get-events) | Event channels |
| GET | [`history`](/docs/streaming-api-v2-history#get-history) | The line's watch history |
| GET | [`continue-watching`](/docs/streaming-api-v2-history#get-continue-watching) | Movies and episodes to resume, next episodes |
| POST | [`history-update`](/docs/streaming-api-v2-history#post-history-update) | Report what is being watched |
| POST | [`history-remove`, `history-clear`](/docs/streaming-api-v2-history#post-history-remove-post-history-clear) | Remove history |
| POST | [`diagnostics`](/docs/streaming-api-v2-playback-reports#post-diagnostics-on-the-api) | Report blocked streaming hosts (7.7) |
| GET | [`genres`](/docs/streaming-api-v2-more#get-genres) | Genre dictionary |
| GET | [`actor-images`](/docs/streaming-api-v2-more#get-actor-images) | Photos of an actor |
| GET | [`upcoming-matches`](/docs/streaming-api-v2-more#get-upcoming-matches) | Upcoming matches of a channel |
| GET | [`brand-info`](/docs/streaming-api-v2-more#get-brand-info) | Reseller branding |
| GET | [`playback-routes`](/docs/streaming-api-v2-playback#71-routes-playback-routes) | Which streaming node serves what |
| GET | [`get-playback-url`](/docs/streaming-api-v2-playback-url#75-slow-path-get-playback-url) | Server-issued playback URL |
| GET | [`streaming-servers`](/docs/streaming-api-v2-more#get-streaming-servers) | Streaming nodes of the line |

## `GET identity`

No session token needed.

```json
{
  "platform": "xtream-ai",
  "version": "2.6",
  "timestamp": 1767225600,
  "capabilities": ["token_auth", "playback_tokens", "api_keys", "branding",
                   "client_playback_tokens", "playback_routes",
                   "refresh_session", "renewable_sessions", "error_codes",
                   "epg_batch", "episode_info", "watch_history", "adult_flags",
                   "channel_thumbnails", "playback_reports",
                   "picture_routes", "list_fields", "search_relevance",
                   "relative_images"]
}
```

`timestamp` is the panel's clock. `version` is the contract described here.
Capabilities tell you what this panel supports; panels update at different
times, so check before relying on:

| Capability | Means |
|---|---|
| `client_playback_tokens`, `playback_routes` | Section 7 (direct playback). Without them, use `get-playback-url` |
| `renewable_sessions` | `refresh-session` accepts an expired token (90 days). Without it, an expired token means signing in again |
| `error_codes` | Errors carry `code` |
| `epg_batch` | `epg-now` and `epg` with a time range |
| `episode_info` | `episode-info` |
| `watch_history` | `history`, `continue-watching` and `history-*` |
| `adult_flags` | `is_adult` on categories and items |
| `channel_thumbnails` | Channel pictures (7.6), on nodes with `thumbnails: true` |
| `playback_reports` | `diagnostics` (7.7); stall reports go to nodes with `reports: true` |
| `picture_routes` | Channel routes list `pictures`: the nodes that keep that channel's picture (7.1, 7.6) |
| `list_fields` | `fields` on lists and compact series items (section 3) |
| `search_relevance` | `search` sorts by relevance by default (`sort_by=relevance`) |
| `relative_images` | `images=relative` (section 3) |

## `GET account-info`

```json
{ "username": "line1234", "status": "active", "exp_date": 1770000000, "is_trial": false,
  "created": 1720000000, "active_connections": 1, "max_connections": 2 }
```

- `status`: `active`, `expired`, `banned` or `disabled`.
- `exp_date`: unix seconds, or `null` if the line never expires. For a line
  whose clock starts on first use, the projected date.
- `active_connections`: what is playing right now.
