# Update video metadata
`PUT https://octopus.livepush.io/streams/{stream_id}/videos/{video_id}`
Updates the editable metadata on a video — label, description, tags and thumbnail.

Requires a token with the `streams.videos.write` scope.
- **Tag:** Videos
- **Operation ID:** `updateVideoMetadata`
- **Authentication:** Bearer token required
- **Docs:** https://developers.livepush.io/videos/update-video-metadata/

### Path parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `stream_id` | string | yes | Stream identifier. These handlers resolve the video by videoid scoped to the authenticated account and never read this value, which is why the dashboard passes the literal me. Any value routes correctly. |
| `video_id` | string | yes | Unique identifier of the video. |


### Request body

`application/json` (required)

- `label` (string) — Display name of the video.
- `title` (string)
- `description` (string)
- `game` (string)
- `gameId` (string)
- `thumbnailId` (string)
- `thumbnailFilename` (string)
- `tags` (string[])
- `isDefault` (boolean)


```json
{
  "label": "Sunday service — 12 Jan",
  "title": "string",
  "description": "string",
  "game": "string",
  "gameId": "string",
  "thumbnailId": "string",
  "thumbnailFilename": "string",
  "tags": [
    "string"
  ],
  "isDefault": false
}
```


### Example request

```bash
curl -X PUT 'https://octopus.livepush.io/streams/me/videos/vd_xxxxxxxxxxxx' \
  -H 'Authorization: Bearer YOUR_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "label": "Sunday service — 12 Jan",
    "title": "string",
    "description": "string",
    "game": "string",
    "gameId": "string",
    "thumbnailId": "string",
    "thumbnailFilename": "string",
    "tags": [
      "string"
    ],
    "isDefault": false
  }'
```


### Responses


#### 200 — Success.

- `success` (boolean)


```json
{
  "success": true
}
```


#### 401 — Response


#### 404 — Not found for this account.

