Videoslash API
A I Lab

Start AI Lab run

POST
/v1/ai-lab/{tool}/runs

Start an asynchronous AI Lab run. The body is the tool's input: read its inputSchema from GET /v1/ai-lab/tools/{tool}.

File fields take an upload ID from POST /v1/creative-studio/media-uploads (presigned PUT) or the URL of one of your earlier outputs.

Requires an API key with the creative:generate scope and an active plan (same rule as the dashboard: pay-per-use credits alone do not unlock generation). Credits are charged when the run starts; outputs that fail are refunded.

The response is the run with its outputs still processing. Poll GET /v1/ai-lab/runs/{id}.

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication. Create a key in your Account settings.

Pass the full key in the Authorization header:

Authorization: Bearer vsl_...

Keys are shown only once at creation. Treat them like passwords.

In: header

Path Parameters

tool*string

AI Lab tool identifier.

Value in

  • "recast"
  • "reshoot"
  • "erase"
  • "extend"
  • "edit"
  • "recreate"
  • "thumbnail"
  • "upscale"
  • "lipsync"
  • "voice"
  • "translate"
  • "background"
  • "sound"

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

The tool's input. Each tool has its own fields: read its inputSchema from GET /v1/ai-lab/tools/{tool}. File fields take an upload ID from POST /v1/creative-studio/media-uploads or the URL of one of your earlier outputs.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/ai-lab/recast/runs" \  -H "Content-Type: application/json" \  -d '{    "video": "UPLOAD_ID_FROM_MEDIA_UPLOADS",    "resolution": "1080p",    "fps": 30  }'
{  "id": "cmh4x2k9p0001ab12cdef3456",  "tool": "upscale",  "title": "Upscale",  "status": "processing",  "credits": 5.3,  "createdAt": "2026-10-24T10:15:00.000Z",  "items": [    {      "id": "cmh4x2k9p0001ab12cdef3456",      "status": "processing",      "type": "video",      "url": null,      "label": null,      "error": null,      "credits": 5.3,      "createdAt": "2026-10-24T10:15:00.000Z"    }  ]}
{  "error": {    "code": "validation_error",    "message": "resolution: Invalid option: expected one of \"720p\"|\"1080p\"|\"4k\""  }}
{  "error": {    "code": "missing_api_key",    "message": "string"  }}

{  "error": {    "code": "subscription_required",    "message": "An active Videoslash plan is required to generate. Subscribe to keep creating: https://www.videoslash.com/dashboard/billing."  }}

{  "error": {    "code": "missing_api_key",    "message": "string"  }}
{  "error": {    "code": "missing_api_key",    "message": "string"  }}
{  "error": {    "code": "rate_limited",    "message": "Too many runs started. Wait a minute and try again."  }}
{  "error": {    "code": "missing_api_key",    "message": "string"  }}