Buat video, gambar, dan musik dari kode Anda sendiri
Buat kunci, kirim permintaan dengan otentikasi Bearer, dan pantau tugas sampai file Anda siap. Model, harga, batas rencana, dan pengembalian dana sama seperti studio NovaMotions AI, dengan saldo kredit bersama.
https://novamotions.com/api/v1Mulai cepat
Tiga langkah dari nol hingga video selesai. Setiap permintaan menggunakan HTTPS biasa dengan JSON, jadi bahasa atau alat apa pun bisa digunakan.
- 1
Buat kunci
Buka halaman API di akun Anda dan buat kunci. Kunci lengkap hanya ditampilkan sekali, jadi simpan di variabel lingkungan bernama API_KEY.
- 2
Kirim tugas
Kirim model, prompt, dan opsi apa pun. Kredit dikenakan sekali saat pengiriman, dan respons memberi tahu berapa banyak yang digunakan dan sisa saldo.
curl -X POST https://novamotions.com/api/v1/videos \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "seedance-2-pro", "prompt": "Pengambilan gambar dolly lambat melewati jalan neon hujan di malam hari, pantulan di aspal basah, sinematik", "duration": 5, "resolution": "720p", "aspect_ratio": "16:9" }' - 3
Pantau sampai siap
Periksa tugas setiap beberapa detik. Saat status berhasil, unduh file dari output_url. Jika gagal, kredit sudah dikembalikan ke saldo Anda.
TASK_ID=your_task_id while true do TASK=$(curl -s https://novamotions.com/api/v1/tasks/$TASK_ID -H "Authorization: Bearer $API_KEY") STATUS=$(echo "$TASK" | jq -r .status) echo "$STATUS" if [ "$STATUS" = "succeeded" ] || [ "$STATUS" = "failed" ] then echo "$TASK" | jq break fi sleep 5 done
Otentikasi
Kirim kunci Anda di header Authorization setiap permintaan. Kunci dimulai dengan nm_live_ dan milik satu akun.
Authorization: Bearer nm_live_your_api_key
Content-Type: application/json- URL Dasar
- Semua endpoint berada di bawah https://novamotions.com/api/v1 dan mengembalikan JSON.
- Jaga kerahasiaan kunci
- Panggil API dari server Anda, jangan dari browser atau aplikasi seluler. Kunci yang dicabut langsung berhenti berfungsi.
- Satu saldo
- Panggilan API menggunakan kredit pemilik kunci, saldo yang sama dengan yang digunakan studio. Batas rencana per generasi juga berlaku.
- URL Media
- Gambar, video, dan audio yang Anda kirim harus berupa URL https publik yang dapat dimuat tanpa cookie atau login.
Daftar model
/api/v1/modelsSetiap model yang disediakan API, dengan mode, durasi, resolusi, rasio aspek, dukungan audio, batas referensi, dan harga terendah dalam kredit. Gunakan ini untuk membuat pemilih model daripada mengkode opsi secara statis.
Permintaan
curl https://novamotions.com/api/v1/models \
-H "Authorization: Bearer $API_KEY"Respons
{
"object": "list",
"data": [
{
"slug": "seedance-2-pro",
"name": "Seedance 2.0 Pro",
"kind": "video",
"endpoint": "/api/v1/videos",
"available": true,
"modes": [
"text-to-video",
"image-to-video",
"reference-to-video"
],
"durations": [
4,
5,
6,
8,
10,
12,
15
],
"default_duration": 5,
"resolutions": [
"480p",
"720p",
"1080p",
"4K"
],
"aspect_ratios": [
"16:9",
"9:16",
"1:1",
"4:3",
"3:4",
"21:9"
],
"audio": {
"supported": true,
"extra_credits": 20
},
"references": {
"images": 9,
"videos": 3,
"audio": 3,
"end_frame": true
},
"max_count": 4,
"prompt_max_length": 10000,
"from_credits": 35
}
]
}Periksa saldo
/api/v1/balanceKredit yang dapat digunakan pemilik kunci saat ini, dibagi dalam beberapa pool dengan tanggal kedaluwarsa, plus rencana saat ini.
Permintaan
curl https://novamotions.com/api/v1/balance \
-H "Authorization: Bearer $API_KEY"Respons
{
"object": "balance",
"balance": 1175,
"never_expiring": 375,
"next_expiry": "2026-11-17T00:00:00.000Z",
"pools": [
{
"source": "subscription",
"remaining": 800,
"granted": 2000,
"expires_at": "2026-11-17T00:00:00.000Z"
},
{
"source": "topup",
"remaining": 375,
"granted": 375,
"expires_at": null
}
],
"plan": {
"name": "Pro",
"status": "active",
"cycle": "monthly",
"renews_or_ends_at": "2026-11-14T00:00:00.000Z"
}
}Buat video
/api/v1/videosTeks ke video, gambar ke video (frame awal dan opsional frame akhir), atau referensi ke video (gambar, klip, dan audio yang mengarahkan hasil). Mode dipilih dari input jika tidak disertakan.
Parameter
modelstringWajibSlug model dari endpoint model.promptstringWajibApa yang harus terjadi dalam klip. Opsional untuk gambar-ke-video, di mana frame awal memimpin.modestringOpsionaltext-to-video, image-to-video, atau reference-to-video. Dipilih dari input Anda jika tidak disertakan.durationintegerOpsionalDurasi klip dalam detik. Harus salah satu durasi model, jika tidak digunakan default model.resolutionstringOpsionalResolusi output seperti 720p atau 1080p, dari daftar model.aspect_ratiostringOpsional16:9, 9:16, 1:1, 4:3, 3:4 atau 21:9, dari daftar model. Defaultnya 16:9.audiobooleanOpsionalBuat soundtrack dengan dialog, efek, dan suasana pada model yang mendukungnya. Menambah 20 kredit. Defaultnya false.image_urlstring (URL)OpsionalFrame awal untuk gambar-ke-video.end_image_urlstring (URL)OpsionalFrame akhir, pada model yang mendukung frame pertama dan terakhir.reference_image_urlsstring[]OpsionalGambar referensi untuk referensi-ke-video, hingga batas model.reference_video_urlsstring[]OpsionalKlip referensi untuk referensi-ke-video, hingga batas model.reference_audio_urlsstring[]OpsionalAudio yang mengarahkan soundtrack, hingga batas model.countintegerOpsionalBerapa banyak video yang dibuat dari permintaan yang sama, 1 sampai 4. Masing-masing adalah tugas terpisah dan dikenai biaya terpisah.seedintegerOpsionalSeed tetap untuk hasil yang dapat diulang. Setiap item tambahan dalam batch mendapat seed berikutnya.
Permintaan
curl -X POST https://novamotions.com/api/v1/videos \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-pro",
"prompt": "Pengambilan gambar dolly lambat melewati jalan neon hujan di malam hari, pantulan di aspal basah, sinematik",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9"
}'Respons
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 44,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 44,
"balance": 1131
}Buat gambar
/api/v1/imagesTeks ke gambar, atau edit gambar yang sudah ada dengan prompt. Minta hingga empat gambar per permintaan, masing-masing adalah tugas tersendiri.
Parameter
modelstringWajibSlug model dari endpoint model.promptstringWajibApa yang harus ditampilkan gambar, atau bagaimana mengubah gambar yang Anda berikan.modestringOpsionaltext-to-image atau image-edit. Dipilih dari input Anda jika tidak diisi.resolutionstringOpsional1K, 2K atau 4K, dari daftar model.aspect_ratiostringOpsionalRasio aspek dari daftar model, termasuk Auto pada model yang mendukungnya.image_urlstring (URL)OpsionalGambar yang akan diedit. Wajib untuk image-edit.reference_image_urlsstring[]OpsionalGambar referensi tambahan untuk edit, hingga batas model.countintegerOpsionalJumlah gambar per prompt, 1 sampai 4. Masing-masing adalah tugas terpisah.seedintegerOpsionalSeed tetap untuk hasil yang dapat diulang. Setiap item tambahan dalam batch mendapat seed berikutnya.
Permintaan
curl -X POST https://novamotions.com/api/v1/images \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Foto produk studio dari cangkir kopi keramik di atas kayu oak, cahaya jendela lembut, kedalaman bidang dangkal",
"resolution": "1K",
"aspect_ratio": "1:1",
"count": 1
}'Respons
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 3,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 3,
"balance": 1172
}Buat lagu
/api/v1/musicLagu lengkap dari deskripsi, dengan lirik Anda sendiri atau sebagai instrumental.
Parameter
modelstringWajibSlug model dari endpoint model.promptstringWajibGenre, suasana, instrumen, dan tempo lagu.durationintegerOpsionalDurasi lagu dalam detik, dari durasi model.lyricsstringOpsionalLirik Anda sendiri. Kosongkan agar model menulisnya.instrumentalbooleanOpsionalBuat lagu tanpa vokal. Defaultnya false.
Permintaan
curl -X POST https://novamotions.com/api/v1/music \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "ai-music",
"prompt": "Lo-fi hip hop hangat dengan piano lembut, suara vinyl berderak, dan groove santai larut malam",
"duration": 60,
"instrumental": false
}'Respons
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 11,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 11,
"balance": 1164
}Dapatkan tugas
/api/v1/tasks/{id}Pantau tugas berdasarkan id-nya. Setelah status berhasil, output_url menunjuk ke file selesai. Pemantauan menggunakan batas baca, jadi tidak mengurangi anggaran pengiriman Anda.
Permintaan
curl https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2 \
-H "Authorization: Bearer $API_KEY"Respons
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"object": "task",
"kind": "video",
"model": "seedance-2-pro",
"mode": "text-to-video",
"status": "succeeded",
"progress": 100,
"prompt": "Pengambilan gambar dolly lambat melewati jalan neon hujan di malam hari, pantulan di aspal basah, sinematik",
"params": {
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"audio": false,
"seed": null
},
"output_url": "https://novamotions.com/uploads/videos/2026/10/example.mp4",
"thumbnail_url": "https://novamotions.com/uploads/videos/2026/10/example.jpg",
"width": 1280,
"height": 720,
"duration_seconds": 5,
"credits": 44,
"refunded": false,
"error": null,
"created_at": "2026-10-18T09:30:00.000Z",
"completed_at": "2026-10-18T09:31:12.000Z"
}Daftar tugas
/api/v1/tasksTugas yang Anda buat melalui API dalam 30 hari terakhir, terbaru di atas, dengan format yang sama seperti tugas tunggal. Kirim next_cursor sebagai cursor untuk memuat halaman berikutnya.
Parameter
limitintegerOpsionalHasil per halaman, 1 sampai 50. Defaultnya 20.cursorstringOpsionalNilai next_cursor dari halaman sebelumnya.statusstringOpsionalHanya tugas dengan status ini: queued, running, succeeded atau failed.
Permintaan
curl https://novamotions.com/api/v1/tasks?limit=20 \
-H "Authorization: Bearer $API_KEY"Respons
{
"object": "list",
"data": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"object": "task",
"kind": "video",
"model": "seedance-2-pro",
"mode": "text-to-video",
"status": "succeeded",
"progress": 100,
"prompt": "Pengambilan gambar dolly lambat melewati jalan neon hujan di malam hari, pantulan di aspal basah, sinematik",
"params": {
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"audio": false,
"seed": null
},
"output_url": "https://novamotions.com/uploads/videos/2026/10/example.mp4",
"thumbnail_url": "https://novamotions.com/uploads/videos/2026/10/example.jpg",
"width": 1280,
"height": 720,
"duration_seconds": 5,
"credits": 44,
"refunded": false,
"error": null,
"created_at": "2026-10-18T09:30:00.000Z",
"completed_at": "2026-10-18T09:31:12.000Z"
}
],
"next_cursor": null
}Status tugas
Tugas bergerak dari queued ke running dan berakhir sebagai succeeded atau failed. Berhenti polling pada status akhir mana pun.
queued- Diterima dan menunggu slot render. Terus polling.
running- Sedang dirender. progres dari 0 sampai 99.
succeeded- Selesai. output_url dan thumbnail_url mengarah ke file jadi.
failed- Berakhir tanpa hasil. error menjelaskan alasannya dan refunded true, kredit dikembalikan ke saldo Anda.
Kode kesalahan
Setiap kesalahan memiliki bentuk yang sama. Cabang berdasarkan kode dan tampilkan pesan untuk pengguna. Tugas yang diterima bisa gagal kemudian, jadi periksa status saat polling.
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits for this request. Top up or renew your plan, then retry.",
"needed": 44,
"balance": 14
}
}- 400
invalid_jsonIsi bukan objek JSON. - 401
unauthorizedTidak ada Bearer key di header Authorization. - 401
invalid_api_keyKunci tidak ada atau salah format. - 401
key_revokedKunci dicabut. Buat yang baru. - 402
insufficient_creditsKredit tidak cukup untuk permintaan ini. Respon mencakup needed dan balance. - 403
plan_limit_exceededPermintaan melebihi batas per-generasi dari paket. Kurangi durasi atau resolusi. - 403
account_suspendedAkun pemilik kunci ditangguhkan. - 403
api_disabledAPI dimatikan untuk saat ini. - 404
not_foundTugas atau endpoint tidak ada di akun ini. - 404
model_not_foundTidak ada model dengan slug ini. Periksa endpoint model. - 409
too_many_runningAkun ini sudah memiliki 3 tugas yang berjalan. Tunggu salah satunya selesai. - 422
invalid_requestAda field yang hilang atau tipe salah. details mencantumkan setiap masalah. - 422
wrong_endpointModel milik endpoint lain, misalnya model gambar dikirim ke video. - 422
invalid_modeMode tidak dikenal oleh endpoint ini. - 422
mode_not_supportedModel tidak mendukung mode ini. - 422
prompt_requiredMode ini membutuhkan prompt. - 422
image_requiredMode ini membutuhkan image_url. - 429
rate_limitedTerlalu banyak permintaan. Tunggu detik di Retry-After, lalu coba lagi. - 500
internal_errorAda masalah di sisi kami. Coba lagi sebentar lagi. - 503
service_busyKami sedang penuh kapasitas. Coba lagi beberapa menit lagi.
Kredit dan pengembalian
Dikenai biaya sekali, saat submit
Setiap tugas dikenai biaya sama seperti pengaturan yang sama di studio. Respon submit mengembalikan credits_charged dan saldo baru Anda. Audio pada video menambah 20 kredit.
Tugas gagal dikembalikan penuh
Jika tugas gagal karena alasan apa pun, semua kreditnya dikembalikan ke pool asal dan tugas menunjukkan refunded true. Tidak perlu klaim.
Batas paket berlaku
Batas per-generasi paket Anda juga berlaku untuk tugas API. Kredit yang akan kedaluwarsa lebih dulu digunakan terlebih dahulu, kredit isi ulang terakhir.
Batas kecepatan
Batas dihitung per kunci selama satu menit berjalan. Jika melebihi batas, Anda mendapat HTTP 429 dengan header Retry-After dalam detik. Setiap respon membawa header X-RateLimit agar Anda bisa memperlambat sebelum mencapai batas.
- Kirim
- 30 per menit
- Membuat video, gambar, dan lagu.
- Baca
- 120 per menit
- Tugas, saldo, dan model. Dihitung terpisah dari kiriman.
- Berjalan sekaligus
- 3
- Tugas per akun yang dirender bersamaan.
HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 42Model
Model yang dapat Anda panggil hari ini dengan slug dan harga terendahnya. Endpoint model mengembalikan daftar yang sama dengan semua opsi.
- Seedance 2.5
seedance-2-5Video45 credits - Seedance 2.0 Pro
seedance-2-proVideo35 credits - Seedance 2.0 Mini
seedance-2-miniVideo24 credits - Wan 3.0
wan-3Video46 credits - MiniMax H3
minimax-h3Video30 credits - Kling 3
kling-3Video30 credits - Seedance 1.5 Pro
seedance-1-5-proVideo31 credits - Seedance 1.0
seedance-1Video32 credits - Kling O3
kling-o3Video46 credits - Kling 2.6
kling-2-6Video41 credits - Wan 2.7
wan-2-7Video35 credits - Wan
wanVideo32 credits - Grok
grok-videoVideo47 credits - Veo 3
veo-3Video42 credits - GPT Image 2.5
gpt-image-2-5Gambar4 credits - GPT Image 2
gpt-image-2Gambar3 credits - Seedream 5 Pro
seedream-5-proGambar4 credits - Seedream 5
seedream-5Gambar3 credits - Nano Banana Pro
nano-banana-proGambar5 credits - Nano Banana 2
nano-banana-2Gambar3 credits - Nano Banana 2 Lite
nano-banana-2-liteGambar2 credits - AI Music
ai-musicMusik6 credits
Siap untuk mulai?
Buat kunci di akun Anda dan kirim permintaan pertama dalam satu menit.