Update a video's metadata or visibility
Update a video's metadata or visibility
/v1/videos/{id}This operation supports dashboard session-cookie authentication. Call it only from trusted server code; browsers must not manufacture or expose the session cookie.
Partial update: send any subset of title, description, tags,
and visibility (at least one). title renames the video —
originalFilename never changes. description: null (or an empty
string) clears the description; tags replaces the full tag list,
deduplicated preserving order, at most 20 tags of at most 50
characters each. For visibility, private (the default) keeps
playback sessions mintable only through authenticated callers;
unlisted and public additionally enable the anonymous embed
surface — the hosted watch page, the copy-paste iframe, and oEmbed.
public alone marks the hosted page indexable. Requires an API key
with write scope, or session-cookie auth plus projectId. Rate
limit: 60 requests per 60 s per caller.
Error codes: unauthorized (401), insufficient_scope (403),
account_not_approved (403), invalid_project_id (400),
not_found (404), video_not_found (404), invalid_body (400).
Authentication
- apiKey — Project API key:
Authorization: Bearer vh_live_...(live mode) orAuthorization: Bearer vh_test_...(test mode). Keys carryreadand/orwritescopes. - sessionCookie — Dashboard session cookie set by
POST /v1/auth/login. Video and playback endpoints additionally require theprojectIdquery parameter under cookie auth.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (Ulid) | Yes | — |
projectId | query | string (Ulid) | No | Required when authenticating with the session cookie; ignored under API-key auth (the key is already project-scoped). |
Request body
required
Content type: application/json
Schema: VideoUpdateRequest
{
"title": "Launch keynote",
"tags": [
"keynote",
"arabic"
],
"visibility": "unlisted"
}Responses
| Status | Meaning |
|---|---|
200 | The updated video. |
400 | The request body or query failed validation. The per-operation description lists the exact error.code values. |
401 | No valid credential was presented. |
403 | The credential is valid but does not permit this action. The per-operation description lists the exact error.code values. |
404 | The resource does not exist or is not visible to this caller. |
429 | Rate limit exceeded. |
Example request
{
"title": "Launch keynote",
"tags": [
"keynote",
"arabic"
],
"visibility": "unlisted"
}Try it
/v1/videos/{id}API playground
Send a live request to api.videohati.com with a test-mode key.
The key is stored in your browser on docs.videohati.com only.
Required when authenticating with the session cookie; ignored under API-key auth (the key is already project-scoped).
https://api.staging.videohati.com/v1/videos/{id}