---
search:
  tags:
    - Voiceovers
    - PATCH
seo:
  description: >-
    Update voiceover captions and watermark. Reference for the PATCH
    /v1/voiceovers/{product_id}/video-settings endpoint in the Jellypod API.
sidebar:
  label: Update voiceover captions and watermark
  badge: PATCH
title: Update voiceover captions and watermark
type: openapi-operation
---
`PATCH /v1/voiceovers/{product_id}/video-settings`

**Request body** (`application/json`, required)

- `caption_style_id` (string | null) — A caption style ID. Null returns to the default.
- `captions_enabled` (boolean | null) — Show or hide captions. Null returns to the default.
- `watermark` (object | null) — Moves the current watermark to this corner. Null clears the override so the default applies. Upload new watermark images in Studio.

Request body example:

```json
{
  "caption_style_id": "default",
  "captions_enabled": true,
  "watermark": {
    "position": "top-left"
  }
}
```

**Responses**

- `200` — Caption and watermark settings the next Render uses, resolved over the Organization default.
- `400` — Validation failed or malformed request.
- `401` — Missing or invalid API key.
- `403` — Authenticated, but this API key does not have access to this resource.
- `404` — Resource not found.
- `415` — Request \`Content-Type\` is not supported for this endpoint.
- `429` — Rate limit exceeded. Wait \`Retry-After\` seconds before retrying; \`RateLimit-Limit\`, \`RateLimit-Remaining\`, and \`RateLimit-Reset\` describe the window.
- `500` — Internal server error.

Response example, 200:

```json
{
  "data": {
    "captions": {
      "enabled": true,
      "inherited": true,
      "style_id": "default"
    },
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "watermark": {
      "inherited": true,
      "position": "top-left",
      "source": "upload"
    }
  }
}
```
