Generate video
POST /v1/videos/generations membuat video dari deskripsi teks. Permintaan bersifat sinkron: respons dikirim setelah video selesai, yang biasanya memakan beberapa menit.
Permintaan
| Field | Wajib | Keterangan |
|---|---|---|
model | ya | ID model bertipe video. |
prompt | ya | Deskripsi video, maksimal 4.000 karakter. |
duration_seconds | ya | Durasi dalam detik (alias duration). Maksimal max_duration_seconds model, atau 15 bila model tidak menyebutkannya. |
resolution | ya | Salah satu kunci pricing.resolutions model, misalnya 720P. Harga per detik bergantung pada resolusi. |
n | tidak | Jumlah video, bawaan 1. Batas per model ada di max_videos_per_request. |
aspect_ratio | tidak | Misalnya 16:9 atau 9:16. |
audio | tidak | true atau false. |
duration_seconds dan resolution wajib diisi supaya biaya selalu sesuai yang Anda maksud. Field lain seperti image_url tidak diteruskan.
Contoh
curl https://api.markas.ai.id/v1/videos/generations \
-H "Authorization: Bearer $MARKASAI_API_KEY" \
-H "Content-Type: application/json" \
--max-time 900 \
-d '{
"model": "VIDEO_MODEL_ID",
"prompt": "ombak pantai saat matahari terbenam",
"duration_seconds": 5,
"resolution": "720P",
"aspect_ratio": "16:9"
}'
import os, requests
resp = requests.post(
"https://api.markas.ai.id/v1/videos/generations",
headers={"Authorization": f"Bearer {os.environ['MARKASAI_API_KEY']}"},
json={
"model": "VIDEO_MODEL_ID",
"prompt": "ombak pantai saat matahari terbenam",
"duration_seconds": 5,
"resolution": "720P",
},
timeout=900,
)
resp.raise_for_status()
for video in resp.json()["videos"]:
print(video["url"])
const resp = await fetch("https://api.markas.ai.id/v1/videos/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.MARKASAI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "VIDEO_MODEL_ID",
prompt: "ombak pantai saat matahari terbenam",
duration_seconds: 5,
resolution: "720P",
}),
signal: AbortSignal.timeout(900_000),
});
if (!resp.ok) throw new Error(await resp.text());
const result = await resp.json();
console.log(result.videos.map((v) => v.url));
Respons
{
"id": "vid_...",
"status": "completed",
"created": 1790000000,
"duration_seconds": 5,
"videos": [{"url": "https://...", "duration_seconds": 5}]
}
videos[].url adalah alamat HTTPS dari CDN penyedia. Unduh dan simpan video di penyimpanan Anda sendiri.
Penagihan
- Saldo
n × durasi × harga per detik (resolusi)ditahan di awal. - Yang ditagih adalah durasi yang dilaporkan penyedia, tidak pernah lebih dari durasi yang diminta, dikali harga per detik.
- Permintaan yang gagal tidak ditagih. Memutus koneksi tidak membatalkan pembuatan video: video tetap dibuat dan ditagih.
Batas waktu dan kapasitas
- Pasang batas waktu klien yang panjang (beberapa menit), seperti pada contoh.
- Jumlah video yang diproses bersamaan dibatasi. Saat penuh, permintaan dijawab
503 overloadeddengan headerRetry-After.