For Agents · Videco

Overview

Base URL:https://app.videco.io

Who can use it: Pro and Business (and AppSumo LTD with API access). Free trial accounts cannot generate API keys.

projectId: Query or body projectId is an optional UUID. If omitted, Videco uses the user’s current project. API keys have no email; current project still resolves from membership.

In-app OpenAPI also lives at https://app.videco.io/openapi.yaml. Prefer this page when they differ (for example around projectId).

Authentication

Recommended

API key

API key from the in-app Developers page. Keys use the vd_live_ prefix.

Authorization: Bearer vd_live_…

Alternative

Session cookie

Session cookie works for logged-in browser / same-origin app requests.

Errors

Status Body When
401 { "error": "Unauthorized" } Missing or invalid auth.
400 { "error": "…" } Bad request (validation, empty folder delete, and similar).
404 { "error": "Not found" } Missing or not accessible. Responses do not leak existence.
402 { "error": "…", "code": "storage" | "duration" | "feature" } Upload or plan feature blocked by limits.
409 Folder name collision Conflicting folder name in the same parent.

Pagination

Used byGET /api/videos.

Endpoints

Public API only. Create keys in the app on Pro or Business.

GET/api/videos

List videos in a project library.

Response:{ videos, pagination }

POST/api/videos

Create a video record and receive TUS upload credentials.

Body

{
  "title": "Product demo",
  "fileSizeBytes": 10485760,
  "description": "Optional",
  "folderId": null,
  "projectId": null
}

Response:{ video, upload: { libraryId, videoId, expirationTime, signature, endpoint: "https://video.bunnycdn.com/tusupload" } }

GET/api/videos/{id}

Get a single video by id.

PATCH/api/videos/{id}

Update video metadata or player options.

Body

{
  "title": "Updated title",
  "visibility": "unlisted"
}

DELETE/api/videos/{id}

Delete a video.

Response:{ "ok": true }

POST/api/folders

Create a folder.

Body

{
  "name": "Demos",
  "parentId": null
}

PATCH/api/folders/{id}

Rename or move a folder.

Body

{
  "name": "Launch demos"
}

DELETE/api/folders/{id}

Delete an empty folder.

Objects

Video

durationSeconds / storageBytes may be numeric strings.

id, userId, projectId, folderId, bunnyVideoId, title, description, status, visibility, shareSlug, durationSeconds, storageBytes, thumbnailUrl, playerResponsive, playerAutoplay, playerPreload, playerLoop, playerMuted, createdAt, updatedAt

Folder

id, userId, projectId, parentId, name, createdAt, updatedAt

Not public API

Session-only or internal routes are not documented here:

/api/projects* · /api/invites/* · /api/videos/{id}/comments* · /api/videos/{id}/captions* · /api/videos/{id}/transcribe · /api/branding* · /api/billing* · /api/api-keys* · /api/webhooks/* · /api/cron/* · /api/appsumo* · /api/support/*

Examples

Create a folder

curl -H "Authorization: Bearer vd_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Demos"}' \
  https://app.videco.io/api/folders

List videos

curl -H "Authorization: Bearer vd_live_YOUR_KEY" \
  "https://app.videco.io/api/videos?limit=20"