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.aiAuthorization: Bearer sk-xxxx
Content-Type: application/jsonAvailable models
| Model | Specification | Use case |
|---|---|---|
veo-3.1-fast-1080p-8s | Veo 3.1 Fast, fixed 8 seconds | Faster generation |
veo-3.1-1080p-8s | Veo 3.1 Standard, fixed 8 seconds | Quality-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| Field | Type | Required | Description |
|---|---|---|---|
model | string | Yes | One of the model names above |
prompt | string | Yes | Describe the subject, motion, camera, lighting, and style |
size | string | No | Recommended: 1920x1080 or 1080x1920 |
duration | integer | No | The public models are fixed at 8 seconds; send 8 |
images | string[] | No | Image 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.
| Status | Meaning |
|---|---|
queued | Waiting in the queue |
processing | Generation in progress |
completed | Read video_url |
failed | Read 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_urldirectly; 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.