ConcurredConcurred API

Video API

Generate videos with Veo 3.1, Kling 3, Wan 2.6, and more

Generate videos from text prompts or images using 6 models across 2 providers.

Endpoints

MethodEndpointDescription
POST/api/v1/video/generateText-to-video or image-to-video
GET/api/v1/video/statusPoll async video jobs

MiniMax Hailuo

MiniMax Hailuo video generation is available via the existing Media API. The Video API documented here covers additional providers (Google Veo, Kling, Wan).


Available Models

ModelIDProviderTypeNotes
Veo 3.1veo-3.1GoogleAsync720p/1080p/4K, native audio, 4-8s
Veo 3.1 Fastveo-3.1-fastGoogleAsyncFaster, slightly lower quality
Kling 3 Prokling-3-profal.aiSyncHigh quality, text-to-video
Kling 3 Pro (i2v)kling-3-pro-i2vfal.aiSyncImage-to-video
Wan 2.6wan-2.6fal.aiSyncText-to-video
Wan 2.6 (i2v)wan-2.6-i2vfal.aiSyncImage-to-video

Async models (Google Veo) return an operation_id immediately — poll /api/v1/video/status for results. Sync models (fal.ai) block until the video is ready (can take 1-3 minutes).

Auto Image-to-Video

If you pass image_url with kling-3-pro or wan-2.6, the API automatically switches to the image-to-video variant. No need to specify the -i2v suffix manually.


Generate Video

POST /api/v1/video/generate

Request

{
  "model": "veo-3.1",
  "prompt": "A cinematic sunset over ocean waves, slow motion",
  "duration": "8",
  "aspect_ratio": "16:9",
  "resolution": "1080p"
}

Parameters

ParameterTypeRequiredDescription
promptstringYesVideo description
modelstringNoModel ID (default: veo-3.1)
image_urlstringNoSource image for image-to-video
durationstringNoDuration: "4", "6", "8" seconds (Google Veo)
aspect_ratiostringNo"16:9" or "9:16"
resolutionstringNo"720p", "1080p", "4k" (Google Veo)

Response (Async — Google Veo)

{
  "success": true,
  "data": {
    "model": "veo-3.1",
    "provider": "google",
    "status": "processing",
    "operation_id": "operations/abc123",
    "poll_url": "/api/v1/video/status?provider=google&operation_id=operations%2Fabc123"
  }
}

Response (Sync — fal.ai)

{
  "success": true,
  "data": {
    "model": "kling-3-pro",
    "provider": "fal",
    "status": "completed",
    "video_url": "https://fal-cdn.example.com/video.mp4"
  }
}

Poll Video Status

GET /api/v1/video/status?provider=google&operation_id=operations/abc123

For async models (Google Veo), poll this endpoint until done: true.

Parameters

ParameterTypeRequiredDescription
providerstringYes"google"
operation_idstringYesOperation ID from generate response

Response (Processing)

{
  "success": true,
  "data": {
    "provider": "google",
    "operation_id": "operations/abc123",
    "done": false
  }
}

Response (Complete)

{
  "success": true,
  "data": {
    "provider": "google",
    "operation_id": "operations/abc123",
    "done": true,
    "video_url": "gs://storage-uri/video.mp4"
  }
}

Polling Interval

Poll every 10 seconds. Video generation typically takes 1-3 minutes depending on model, duration, and resolution.


Examples

# 1. Submit video generation
curl https://concurred.ai/api/v1/video/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo-3.1",
    "prompt": "A drone shot over a misty mountain forest at sunrise",
    "duration": "8",
    "resolution": "1080p"
  }'
 
# 2. Poll until done (use operation_id from response)
curl "https://concurred.ai/api/v1/video/status?provider=google&operation_id=operations/abc123" \
  -H "Authorization: Bearer YOUR_API_KEY"

On this page