88API88API
User GuideAI ApplicationsAPI ReferenceHelp & Support
Video

Veo Video API

Submit, poll, and download Veo 3.1 videos through 88API

The 88API Veo endpoint is asynchronous: submit a task first, then poll it with the returned task ID. A completed task contains a downloadable video_url.

Base URL and authentication

https://88api.ai
Authorization: Bearer sk-xxxx
Content-Type: application/json

Available models

ModelSpecificationUse case
veo-3.1-fast-1080p-8sVeo 3.1 Fast, fixed 8 secondsFaster generation
veo-3.1-1080p-8sVeo 3.1 Standard, fixed 8 secondsQuality-first generation

Always send the 88API model name shown above. The model field returned by the API may contain the mapped upstream model name.

1. Submit a task

POST /v1/videos
FieldTypeRequiredDescription
modelstringYesOne of the model names above
promptstringYesDescribe the subject, motion, camera, lighting, and style
sizestringNoRecommended: 1920x1080 or 1080x1920
durationintegerNoThe public models are fixed at 8 seconds; send 8
imagesstring[]NoImage URLs or Base64 reference images, up to 2
curl --request POST 'https://88api.ai/v1/videos' \
  --header 'Authorization: Bearer sk-xxxx' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "model": "veo-3.1-fast-1080p-8s",
    "prompt": "A cinematic drone shot over a mountain ridge at sunrise",
    "size": "1920x1080",
    "duration": 8
  }'

Example response:

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxx",
  "object": "video",
  "model": "veo-3.1-fast",
  "status": "queued",
  "progress": 0,
  "created_at": 1786106645
}

Store id for polling. Do not blindly retry the POST request after a client timeout, as doing so may create and bill multiple tasks.

2. Poll the task

GET /v1/videos/{id}
curl 'https://88api.ai/v1/videos/task_xxxxxxxxxxxxxxxxxxxxxxxx' \
  --header 'Authorization: Bearer sk-xxxx'

Poll every 5–10 seconds and use a total timeout of at least 600 seconds.

StatusMeaning
queuedWaiting in the queue
processingGeneration in progress
completedRead video_url
failedRead error
{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxx",
  "model": "veo-3.1-fast",
  "status": "completed",
  "video_url": "https://example-bucket.s3.amazonaws.com/video.mp4?...",
  "created_at": 1786106645
}

Download notes

  • Download the returned video_url directly; do not construct another content URL.
  • The signed URL normally expires, so save the result promptly.
  • A raw JSON string may display \u0026; a JSON parser automatically converts it to &.
  • Keep API keys out of browser-side code, public repositories, and logs.

Use duration: 8; do not copy multipart examples from retired or unrelated video formats.