API/videos
Tạo video chạy bất đồng bộ: tạo một job, hỏi trạng thái theo id, rồi tải MP4 về khi hoàn tất.
https://api.ltnproxy.com/v1/videosAuthorization: Bearer sk-your_api_keyĐể tạo và sửa video bằng Gemini Omni, dùng POST /v1/interactions.
POST /v1/videos nhận model, prompt và seconds (1–15, mặc định 8). Một giá trị size (1280x720) đặt cùng lúc độ phân giải và tỉ lệ khung hình, hoặc bạn đặt riêng từng thứ: độ phân giải qua extra_body.resolution: 480p (mặc định), 720p hoặc 1080p; tỉ lệ khung hình qua extra_body.aspect_ratio (16:9 mặc định, 1:1, 9:16…).
curl "https://api.ltnproxy.com/v1/videos" \
-H "Authorization: Bearer sk-your_api_key" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-lite-generate-preview",
"prompt": "Sóng vỗ vào bờ đá lúc hoàng hôn",
"seconds": "6",
"extra_body": { "resolution": "720p" }
}'Request trả về một job ngay lập tức — giữ lại id để hỏi trạng thái:
{
"id": "video_bGl0ZWxsbTpjdXN0b21fbGxt...",
"object": "video",
"status": "queued",
"model": "veo-3.1-lite-generate-preview",
"seconds": "6",
"size": "720p"
}Mỗi video dưới đây được tạo từ endpoint này, mỗi video một job, kèm prompt đã tạo ra nó.
Để tạo chuyển động cho một ảnh bạn đã có (ảnh sang video), thêm trường image chứa URL công khai hoặc data URL base64:
{
"model": "veo-3.1-lite-generate-preview",
"prompt": "Cho con thuyền trong ảnh trôi chầm chậm về phía chân trời",
"seconds": "6",
"image": { "url": "data:image/jpeg;base64,/9j/4AAQSkZJRg..." }
}Kéo thanh trượt: bên trái là ảnh tĩnh đưa vào, bên phải là video mà một request tạo ra từ ảnh đó.

Nhiều ảnh có thể cùng dẫn dắt một clip thay vì ghim khung hình đầu tiên: extra_body.reference_images nhận một danh sách, được gọi trong prompt là <IMAGE_0> theo đúng thứ tự bạn gửi, còn extra_body.last_frame ghim khung hình kết thúc.
{
"model": "veo-3.1-lite-generate-preview",
"prompt": "Nhân vật trong <IMAGE_0> đi ngang qua căn phòng trong <IMAGE_1>",
"seconds": "6",
"extra_body": {
"reference_images": [
{ "url": "https://example.com/character.jpg" },
{ "url": "https://example.com/room.jpg" }
],
"last_frame": { "url": "https://example.com/final-shot.jpg" }
}
}Clip được dẫn dắt bằng ảnh tham chiếu hoặc khung hình ghim sẵn có độ phân giải tối đa 720p. Ảnh tham chiếu, ghim khung hình và giọng tham chiếu là tính năng của các mô hình mới hơn; mô hình không hỗ trợ tính năng nào sẽ từ chối request thay vì bỏ qua trường đó.
Gọi GET /v1/videos/{id} vài giây một lần cho đến khi job ra khỏi trạng thái đang xử lý. Một video thường xong trong khoảng vài chục giây đến vài phút, tùy độ dài và độ phân giải.
curl "https://api.ltnproxy.com/v1/videos/video_bGl0ZWxsbTpjdXN0b21fbGxt..." \
-H "Authorization: Bearer sk-your_api_key"Khi status là completed, tải MP4 về qua GET /v1/videos/{id}/content. Hãy tải và lưu tệp ở phía bạn ngay khi job hoàn tất — job cũ sẽ hết hạn và không thể tải lại.
curl "https://api.ltnproxy.com/v1/videos/video_bGl0ZWxsbTpjdXN0b21fbGxt.../content" \
-H "Authorization: Bearer sk-your_api_key" \
-o video.mp4POST /v1/videos/edits nhận video.id của một job đã hoàn tất và một prompt mô tả thay đổi; phần còn lại của cảnh được giữ nguyên.
curl "https://api.ltnproxy.com/v1/videos/edits" \
-H "Authorization: Bearer sk-your_api_key" \
-H "Content-Type: application/json" \
-d '{
"video": { "id": "video_bGl0ZWxsbTpjdXN0b21fbGxt..." },
"prompt": "Biến cảnh ban ngày thành cảnh đêm dưới ánh đèn đường"
}'Một lần sửa không nhận độ dài hay độ phân giải: kết quả kế thừa cả hai từ video nguồn — tối đa 720p và tối đa 8,7 giây — và bạn nhận về một id job mới để hỏi trạng thái và tải về giống hệt một job mới tạo.
POST /v1/videos/extensions nối dài một video đã xong từ khung hình cuối của nó; seconds (2–10, mặc định 6) là độ dài của phần mới, không phải của kết quả.
curl "https://api.ltnproxy.com/v1/videos/extensions" \
-H "Authorization: Bearer sk-your_api_key" \
-H "Content-Type: application/json" \
-d '{
"video": { "id": "video_bGl0ZWxsbTpjdXN0b21fbGxt..." },
"prompt": "Máy quay tiếp tục lùi ra xa và con thuyền rời khỏi khung hình",
"seconds": "6"
}'Id trả về có thể tiếp tục được nối dài hoặc sửa, nên một chuỗi cảnh dài được dựng lên từng đoạn một.
Credit được trừ khi job được tạo: số giây yêu cầu nhân với đơn giá mỗi giây của độ phân giải đó. Mô hình video được mở theo từng API key — GET /v1/models với key của bạn liệt kê đúng những mô hình bạn gọi được; nhắn Framewharf nếu bạn cần thêm quyền truy cập.