Endpoint

Video status

GEThttps://lannevideo.com/api/v1/video-status

Read a generation you own: where it stands, its MP4 URL and the credits it used. Calls to this endpoint do not count toward the rate limit.

Request

curl "https://lannevideo.com/api/v1/video-status?video_id=48213" \
  -H "Authorization: Bearer $NB_API_KEY"

Query parameters

video_idintegerrequired
The video_id returned by text to video or image to video.

Response

200 OK
{
    "success": true,
    "video": {
        "id": 48213,
        "status": "completed",
        "title": "Text to Video",
        "description": "Slow push-in on a barista pouring latte art…",
        "mode": "text-to-video",
        "resolution": "768P",
        "duration_seconds": 8,
        "output_url": "https://…/48213.mp4",
        "thumbnail_url": "https://…/48213.jpg",
        "credits_used": 8,
        "created_at": "2026-10-21 14:02:11",
        "updated_at": "2026-10-21 14:03:40",
        "processing_started_at": "2026-10-21 14:02:12",
        "processing_completed_at": "2026-10-21 14:03:40"
    }
}
video.statusstring
See the values below.
video.output_urlstring | null
MP4 file once the status is completed.
video.descriptionstring
The prompt that was sent.
video.modestring
text-to-video or image-to-video.
video.*_atstring
Timestamps, YYYY-MM-DD HH:MM:SS, server time.

Status values

StatusMeaning
queuedAccepted, waiting for a render slot.
processingThe model is rendering. Reading the status also refreshes it from the model.
completedDone. output_url is set.
failedThe render did not finish. Start a new generation.

Recover after a timeout

If your client stopped waiting on a generation, poll the status every 10 seconds until it settles. Keep the video_id from the generation response, or find the clip in your dashboard.

import os, time, requests

def wait_for_video(video_id: int, timeout: int = 600) -> str:
    headers = {"Authorization": f"Bearer {os.environ['NB_API_KEY']}"}
    deadline = time.time() + timeout
    while time.time() < deadline:
        video = requests.get(
            "https://lannevideo.com/api/v1/video-status",
            headers=headers, params={"video_id": video_id}, timeout=30,
        ).json()["video"]
        if video["status"] == "completed":
            return video["output_url"]
        if video["status"] == "failed":
            raise RuntimeError(f"Video {video_id} failed")
        time.sleep(10)
    raise TimeoutError(f"Video {video_id} still rendering")

Errors

StatusWhen
400video_id is missing.
401No key, or the key is invalid.
403The video belongs to another account.
404No video with this id.