Kensa
API Reference

Video Generation API

Start AI video generations, poll their status, and list, download and delete videos with the Kensa API.

All paths are relative to https://www.kensa.cc/api/v1 and need an API key (see API Overview), except List models.

Generate a video

POST /video/generate
curl -X POST https://www.kensa.cc/api/v1/video/generate \
  -H "Authorization: Bearer kens_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo-3.1",
    "prompt": "A golden retriever running through a sunlit meadow, cinematic slow motion",
    "aspectRatio": "16:9"
  }'

Request body

FieldTypeRequiredDescription
modelstringYesModel ID: seedance-2.5, seedance-2.0, veo-3.1, seedance-1.5-pro, grok-image-video or minimax-h3
promptstringYesWhat the video should show, 1 to 5,000 characters
durationnumberNoLength in seconds; one of the model's durations below. Defaults to the shortest.
aspectRatiostringNoOne of the model's aspect ratios below. Defaults to 16:9.
qualitystringNoResolution: 480p, 720p or 1080p, as the model supports
imageUrlstringNoOne https image URL (JPG, PNG or WebP, up to 20 MB) to use as the first frame
imageUrlsstring[]NoSeveral https image URLs, up to 9 per request. With seedance-2.5, seedance-2.0, veo-3.1 and seedance-1.5-pro, two images are the first and last frame. Use either imageUrl or imageUrls.
modestringNoreference-to-video to use imageUrls as reference images of the subject instead of frames (seedance-2.5, seedance-2.0 and veo-3.1 only)
generateAudiobooleanNoSeedance models generate audio unless you send false

Options per model

modeldurationaspectRatioquality
seedance-2.54, 5, 6, 8, 10, 12, 15, 20, 3016:9, 9:16, 1:1, 4:3, 3:4, 21:9 (image-to-video follows the image)480p (default), 720p, 1080p (paid plans)
seedance-2.04, 5, 6, 8, 10, 12, 1516:9, 9:16, 1:1, 4:3, 3:4, 21:9480p (default), 720p
veo-3.1Always 816:9, 9:16, 1:1Not needed
seedance-1.5-pro4, 5, 6, 8, 10, 1216:9, 9:16, 1:1, 4:3, 3:4, 21:9480p, 720p (default), 1080p
grok-image-video6, 1016:9, 9:16, 1:1, 4:3, 3:4480p (default), 720p
minimax-h3Any whole number from 5 to 1516:9, 9:16, 1:1480p, 768p (default), 2k (paid plans)

kling-3 is under maintenance; requests for it return 503 with details.reason: "model_maintenance". Prices are on AI Models.

Before a generation starts, the prompt and every image are checked against the usage policy. A request that fails the check, or whose image can't be read, returns 400 and costs nothing.

Response

{
  "success": true,
  "data": {
    "videoUuid": "vid_V1StGXR8_Z5jdHi6B-myT",
    "taskId": "task_8f2c1e",
    "provider": "evolink",
    "status": "GENERATING",
    "creditsUsed": 13
  }
}

creditsUsed is the exact price. The credits are reserved when the generation starts and returned if it fails. Use videoUuid for the other endpoints.

Image examples

First and last frame:

{
  "model": "seedance-2.0",
  "prompt": "The flower bud slowly opens into a full bloom, soft morning light",
  "duration": 5,
  "aspectRatio": "9:16",
  "imageUrls": ["https://example.com/bud.jpg", "https://example.com/bloom.jpg"]
}

Reference images:

{
  "model": "veo-3.1",
  "mode": "reference-to-video",
  "prompt": "The character from the reference images walks through a rainy night market",
  "imageUrls": ["https://example.com/front.png", "https://example.com/side.png"]
}

Check the status

GET /video/{uuid}/status
{
  "success": true,
  "data": {
    "status": "COMPLETED",
    "videoUrl": "https://..."
  }
}

A failed generation returns "status": "FAILED" and an error message. Poll every 10 to 15 seconds; most clips are ready in a few minutes. A generation that hasn't finished after 2 hours is marked FAILED and its credits are returned.

StatusMeaning
PENDINGCreated, waiting for the model
GENERATINGThe model is generating the video
UPLOADINGThe video is being saved
COMPLETEDReady; videoUrl is set
FAILEDFailed; the reserved credits are returned

Get a video

GET /video/{uuid}

Returns the video, including uuid, status, prompt, model, videoUrl, thumbnailUrl, duration, aspectRatio, creditsUsed, errorMessage, createdAt and completedAt. Returns 404 if the video doesn't exist or was deleted.

Download a video

GET /video/{uuid}/download

Redirects (302) to a temporary download link for the MP4 file. Returns 409 while the file isn't ready.

curl -L -o video.mp4 https://www.kensa.cc/api/v1/video/vid_V1StGXR8_Z5jdHi6B-myT/download \
  -H "Authorization: Bearer kens_your_key"

List videos

GET /video/list?limit=20
ParameterDefaultDescription
limit20Videos per page
cursorThe nextCursor value from the previous page
statusOnly videos with this status, for example COMPLETED
{
  "success": true,
  "data": {
    "videos": [{ "uuid": "vid_V1StGXR8_Z5jdHi6B-myT", "status": "COMPLETED", "model": "veo-3.1" }],
    "nextCursor": "vid_Uakgb_J5m9g-0JDMbcJqL"
  }
}

Videos are sorted newest first. nextCursor is missing on the last page.

Delete a video

DELETE /video/{uuid}

Removes the video from your list. Returns { "success": true, "data": { "deleted": true } }.

List models

GET /config/models

No API key needed. Returns each model with its id, name, supportImageToVideo, durations, aspectRatios, qualities and creditCost. kling-3 is listed while it is under maintenance, but generating with it returns 503.