VideohatiDocs
API referenceVideos

Apply one action to up to 100 videos

Apply one action to up to 100 videos

POST/v1/videos/bulk

This 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) or Authorization: Bearer vh_test_... (test mode). Keys carry read and/or write scopes.
  • sessionCookie — Dashboard session cookie set by POST /v1/auth/login. Video and playback endpoints additionally require the projectId query parameter under cookie auth.

Parameters

NameInTypeRequiredDescription
projectIdquerystring (Ulid)NoRequired 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

StatusMeaning
200Per-id results, in request order after deduplication.
400The request body or query failed validation. The per-operation description lists the exact error.code values.
401No valid credential was presented.
403The credential is valid but does not permit this action. The per-operation description lists the exact error.code values.
404The resource does not exist or is not visible to this caller.
429Rate limit exceeded.

Try it

POST
/v1/videos/bulk
Test mode only

API playground

Send a live request to api.videohati.com with a test-mode key.

This playground blocks vh_live_ keys. Use a key that starts with vh_test_ only; a request with a live key never leaves your browser.

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