Apply one action to up to 100 videos
Apply one action to up to 100 videos
/v1/videos/bulkThis operation supports dashboard session-cookie authentication. Call it only from trusted server code; browsers must not manufacture or expose the session cookie.
Runs one action over 1–100 video ids and returns a per-id result
list — the response is 200 even when some items fail, so inspect
each entry's ok flag. delete soft-deletes each video exactly like
DELETE /v1/videos/{id} (aborts any active upload session, emits the
video.deleted webhook event); set_visibility applies the given
visibility to every id. Ids outside the project, already deleted,
or unknown report video_not_found; a delete racing an in-flight
upload completion reports upload_completion_in_progress. On a
delete, an item that hits an unexpected infrastructure failure
reports internal_error and processing stops there: every id after it
reports not_attempted. The whole request is idempotent, so a retry
re-runs the stopped and not-attempted ids. Duplicate ids collapse to
one result entry. Requires an API key with write scope, or
session-cookie auth plus projectId. Rate limit: 30 requests per 60 s
per caller.
Error codes: unauthorized (401), insufficient_scope (403),
account_not_approved (403), invalid_project_id (400),
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 |
|---|---|---|---|---|
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: VideoBulkRequest
Responses
| Status | Meaning |
|---|---|
200 | Per-id results, in request order after deduplication. |
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. |
Try it
/v1/videos/bulkAPI 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/bulk