---
title: "Update post metadata"
method: POST
path: "/v1/posts/{postId}/update-metadata"
tags: ["Posts"]
---

# Update post metadata

`POST /v1/posts/{postId}/update-metadata`

Updates metadata of a published video on the specified platform without re-uploading.
Currently only supported for YouTube. At least one updatable field is required.

Two modes:

1. Post-based (video published through Zernio): pass the Zernio postId in the URL and platform in the body.
2. Direct video ID (video uploaded outside Zernio, e.g. directly to YouTube): use _ as the postId,
   and pass videoId + accountId + platform in the body. The accountId is the Zernio social account ID
   for the connected YouTube channel.

## Path parameters

- `postId` string, required

## Request body

- object
  - `platform` 'youtube', required — The platform to update metadata on
  - `videoId` string — YouTube video ID (required for direct mode, ignored for post-based mode)
  - `accountId` string — Zernio social account ID (required for direct mode, ignored for post-based mode)
  - `title` string — New video title (max 100 characters for YouTube)
  - `description` string — New video description
  - `tags` string[] — Array of keyword tags (max 500 characters combined for YouTube)
  - `categoryId` string — YouTube video category ID
  - `privacyStatus` 'public' | 'private' | 'unlisted' — Video privacy setting
  - `thumbnailUrl` string, uri — Public URL of a custom thumbnail image (JPEG, PNG, or GIF, max 2 MB, recommended 1280x720). Works on any video you own, including existing videos not published through Zernio. The channel must be verified (phone verification) to set custom thumbnails.
  - `madeForKids` boolean — COPPA compliance flag. Set true for child-directed content (restricts comments, notifications, ad targeting).
  - `containsSyntheticMedia` boolean — AI-generated content disclosure. Set true if the video contains synthetic content that could be mistaken for real. YouTube may add a label.
  - `playlistId` string — YouTube playlist ID to add the video to (e.g. 'PLxxxxxxxxxxxxx'). Use GET /v1/accounts/{id}/youtube-playlists to list available playlists. Only playlists owned by the channel are supported.

## Response `200`

Metadata updated successfully

- object
  - `success` boolean
  - `message` string
  - `videoId` string — Only present in direct video ID mode
  - `updatedFields` string[]

## Other responses

- `400` — Invalid request: unsupported platform, post not published, missing fields, or validation error.
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Resource not found
- `500` — Platform API update failed

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/versions/51932b099b2f/schema)
