---
title: "Streaming API v2: Channel pictures"
description: "Show the channel's current picture while the player loads."
---

## 7.6 Channel picture while the player loads

Show the channel's current picture while the player fills its buffer. Each
streaming node keeps a recent picture of every always-on channel it is
running, so the request only reads a file: it answers in a few
milliseconds, before the player has its first frame.

Build a token with `str` = `channel/<channel id>/jpg` (same recipe, 7.2) and
open it (7.4) at the same time as the stream or just before. With the
capability `picture_routes`, ask a node in the channel's `pictures` (7.1):
the one you are about to play from if it is listed, otherwise the first;
no `pictures`, no request. Without the capability, ask the node you are
about to play from:

```
https://<host>:<port><prefix>/<token>~<session_token>
```

| Status | Meaning |
|---|---|
| `200` | `image/jpeg`, up to 540 px high, usually 20-60 KB. `Last-Modified` is when it was taken; `If-Modified-Since` gives `304` |
| `404` | No picture: the channel is not running on this node, starts on demand, or its picture is not ready yet (right after the node restarts, or on a busy node). Show the logo |
| `403` | The channel is not in the line's package, or the line cannot play |

- Only ask nodes with `thumbnails: true` in `playback-routes`. **Never send
  a `jpg` token to a node without it**: it would treat the request as a
  stream.
- The picture is from the last 1-10 minutes, not live. Replace it with the
  video as soon as the first frame plays.
- It does not count as a screen and never starts a channel.
- You can reuse the same picture token for that channel until it expires
  (5 minutes).
- Nodes limit requests per IP, and pictures share that limit with the
  stream, its playlist and its segments. When the user picks a channel, ask
  only for that channel's picture. Preload neighbours in a channel list only
  once the channel is playing, with at most 2-3 requests in flight. A `503`
  or `429` on a picture just means no picture: never retry it, and never
  move to another node because of it.
