Endpoint

Text to video

POSThttps://lannevideo.com/api/v1/text-to-video

Turn a prompt into a clip. The request stays open while the model renders, usually 1 to 3 minutes, then returns the MP4 URL.

Request

curl https://lannevideo.com/api/v1/text-to-video \
  -X POST \
  --max-time 300 \
  -H "Authorization: Bearer $NB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prompt": "Slow push-in on a barista pouring latte art, warm morning light, shallow depth of field",
  "video_model": "minimax-h3",
  "duration": 8,
  "resolution": "768P",
  "aspect_ratio": "16:9"
}'
Set your client timeout to 300 seconds or more. If it gives up earlier, the render usually still finishes and shows up in your dashboard; read it with video status.

Body parameters

JSON body, sent with Content-Type: application/json.

promptstringrequired
What happens in the shot: subject, action, camera move, light, style. Up to 7,000 characters.
video_modelstringdefault minimax-h3
minimax-h3 MiniMax H3 Ultra Fast (default), seedance-2.5 Seedance 2.5 Fast, flux-3 FLUX 3 Max. The legacy ids veo3, seedance2 and flux3 still work. See Models.
durationintegerdefault 5
Length in seconds: minimax-h3 5 to 15, seedance-2.5 4 to 15, flux-3 5 to 20. A value outside the model's range falls back to 5.
resolutionstring
minimax-h3: 480P or 768P (default). seedance-2.5: 480p (default) or 720p. flux-3: 720p (default) or 1080p. Asking for more than a model renders gives its best resolution.
aspect_ratiostringdefault 16:9
21:9 16:9 4:3 1:1 3:4 9:16 on every model, plus 2:1 on flux-3.
motion_intensitystringdefault medium
low, medium or high.

Response

200 OK
{
    "success": true,
    "video_id": 48213,
    "video_url": "https://…/48213.mp4",
    "thumbnail_url": "https://…/48213.jpg",
    "credits_used": 5,
    "rate_limit": {
        "count": 3,
        "limit": 15,
        "remaining": 12,
        "reset_in_seconds": 1412,
        "reset_at": "2026-10-21 16:30:00"
    }
}
successboolean
true when the clip is rendered.
video_idinteger
Id of the generation. Pass it to video status.
video_urlstring
MP4 file. Download it if you need to keep it long term.
thumbnail_urlstring | null
Still frame, when the model produced one.
credits_usedinteger
Credits taken from the plan for this clip.
rate_limitobject
count, limit, remaining, reset_in_seconds and reset_at for the current 30 minute window.

Examples by model

The same call with each model's strengths. Switch the language once, every block follows.

MiniMax H3, the fast default

curl https://lannevideo.com/api/v1/text-to-video \
  -X POST \
  --max-time 300 \
  -H "Authorization: Bearer $NB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prompt": "Cinematic drone flyover of a glacier at golden hour",
  "video_model": "minimax-h3",
  "duration": 6,
  "resolution": "768P"
}'

Seedance 2.5, vertical social

curl https://lannevideo.com/api/v1/text-to-video \
  -X POST \
  --max-time 300 \
  -H "Authorization: Bearer $NB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prompt": "A creator unboxes sneakers to camera, natural window light, handheld",
  "video_model": "seedance-2.5",
  "duration": 8,
  "resolution": "720p",
  "aspect_ratio": "9:16"
}'

FLUX 3, long 1080p take

curl https://lannevideo.com/api/v1/text-to-video \
  -X POST \
  --max-time 300 \
  -H "Authorization: Bearer $NB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prompt": "One tracking shot through a neon-lit Tokyo street at night, rain reflections",
  "video_model": "flux-3",
  "duration": 15,
  "resolution": "1080p",
  "aspect_ratio": "21:9"
}'

Errors

StatusWhen
400prompt missing or longer than 7,000 characters.
401 / 403Key missing, invalid, or account not on the API plan. See Authentication.
410video_model is sora2, which was retired. The body lists the current ids.
429More than 15 generations in 30 minutes. Wait Retry-After seconds.
500The render failed, the plan has no credits left, or the content filter blocked the prompt. error says which.