> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Generasi Video

> Hasilkan video dengan operasi publik eksplisit, polling asinkron, dan input media spesifik model.

Generasi video bersifat asinkron. `POST /v1/videos/generations` mengembalikan identitas tugas publik dan biasanya `poll_url`; video akhir muncul pada respons status selanjutnya.

Jika model Seedance yang dipilih dapat menggunakan pustaka material TokenLab, URL gambar dan data URL inline yang didukung disiapkan sebagai material TokenLab yang dapat digunakan ulang sebelum generasi. Jika persiapan lebih dari 60 detik, coba lagi setelah `auto_material_asset_ids` yang dikembalikan menjadi `ACTIVE`. Jika model yang dipilih tidak dapat menggunakan pustaka material, input gambar biasa tetap berjalan melalui jalur gambar normal.

## Operasi yang Didukung

Gunakan `operation` eksplisit dalam produksi. TokenLab dapat menyimpulkan beberapa operasi dari input, tetapi nilai operasi eksplisit membuat validasi, dukungan, dan pengulangan lebih jelas.

| Operasi              | Input yang Diperlukan atau Tipikal                                                   | Kasus Penggunaan                             |
| -------------------- | ------------------------------------------------------------------------------------ | -------------------------------------------- |
| `text-to-video`      | `prompt`                                                                             | Menghasilkan dari teks saja                  |
| `image-to-video`     | `image_url` atau `image` yang kompatibel                                             | Menganimasi gambar awal                      |
| `reference-to-video` | `reference_images` dan opsional `video_urls` / `audio_urls` pada model yang didukung | Menjaga identitas, gaya, atau referensi aset |
| `start-end-to-video` | `start_image`, `end_image`                                                           | Mengontrol frame pertama dan terakhir        |
| `video-to-video`     | `video_url` atau `task_id` spesifik model                                            | Mengubah atau meningkatkan klip yang ada     |
| `motion-control`     | `image_url` ditambah `video_url`                                                     | Menerapkan referensi gerakan pada subjek     |
| `audio-to-video`     | `audio_url`                                                                          | Aliran video yang dikondisikan oleh audio    |
| `video-extension`    | `task_id`, `extend_at`, atau bidang ekstensi spesifik model                          | Melanjutkan video yang dihasilkan            |

## Penemuan Model

```bash theme={null}
curl "https://api.tokenlab.sh/v1/models?recommended_for=video" \\
  -H "Authorization: Bearer sk-your-api-key"
```

Gunakan ID model yang ditampilkan TokenLab di `model`, lalu pilih varian fitur melalui `operation` dan input media yang sesuai. Contoh: `wan-2.7`, `happyhorse-1.0`, `viduq3`, `viduq3-mix`, `pixverse-v6`, `kling-3.0-video`, `veo3.1`, dan `seedance-2.0`; jangan gunakan sufiks khusus operasi sebagai nama model TokenLab.

Baca detail model yang dipilih sebelum bergantung pada bidang khusus seperti `reference_images`, `kling_elements`, `output_audio`, `duration`, `resolution`, atau `aspect_ratio`.

## Buat Permintaan

```bash theme={null}
curl https://api.tokenlab.sh/v1/videos/generations \\
  -H "Authorization: Bearer sk-your-api-key" \\
  -H "Content-Type: application/json" \\
  -d '{
    "model": "veo3.1",
    "operation": "text-to-video",
    "prompt": "Sebuah pengambilan sinematik tenang dari seekor kucing yang berjalan melalui taman yang diterangi sinar matahari",
    "duration": 4,
    "aspect_ratio": "16:9"
  }'
```

Untuk input media produksi, lebih baik gunakan URL publik `https` daripada URL inline `data:`. Jika Anda menggunakan URL sementara, pastikan URL tetap valid sampai TokenLab selesai membuat tugas.

## Input Dan Bidang Spesifik Model

* Permintaan keluarga Veo 3 secara default mengaktifkan audio ketika `output_audio` dihilangkan. Atur secara eksplisit ketika model mendukung toggle dan UX Anda bergantung pada suara.
* `kling_elements` digunakan untuk permintaan yang dikondisikan oleh gambar `kling-3.0-video`. Referensikan setiap elemen dalam `prompt` sebagai `@name`; jangan menggabungkannya dengan `output_audio=true`.
* Untuk keluarga Seedance 2.0, baca [panduan model video Seedance 2.0](/id/guides/seedance-2-video) sebelum memakai output 4K, batas resolusi Fast/Mini, atau input referensi multimodal.
* Untuk `grok-imagine-video`, video-to-video menggunakan `.mp4` `video_url` publik; batasan spesifik model seperti `duration` dan `resolution` harus berasal dari kontrak model.

## PixVerse dan HappyHorse

| Model                        | Operasi                                                                       | Input                                                                       | Resolusi                | Durasi                                                                                     | Pemilih audio                   |
| ---------------------------- | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------ | ------------------------------- |
| `pixverse-c1`, `pixverse-v6` | `text-to-video`, `image-to-video`, `start-end-to-video`, `reference-to-video` | `prompt`; `image_url`; `start_image` + `end_image`; `reference_images`      | 360p, 540p, 720p, 1080p | Bilangan bulat dari 1 hingga 15 detik                                                      | `output_audio`, default `false` |
| `pixverse-v5.6`              | `text-to-video`, `image-to-video`, `start-end-to-video`, `reference-to-video` | Field yang sama dengan C1 dan V6                                            | 360p, 540p, 720p, 1080p | 5, 8, atau 10 detik; 1080p mendukung 5 atau 8 detik                                        | `output_audio`, default `false` |
| `happyhorse-1.0`             | `text-to-video`, `image-to-video`, `reference-to-video`, `video-to-video`     | `prompt`; `image_url`; `reference_images`; `video_url` + `reference_images` | 720p, 1080p             | 3 hingga 15 detik untuk operasi generasi; output video-to-video dibatasi maksimal 15 detik | Jangan kirim `output_audio`     |

Di TokenLab, model-model PixVerse di atas tidak mendukung `operation=video-extension`.

```bash theme={null}
curl https://api.tokenlab.sh/v1/videos/generations \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "pixverse-v6",
    "operation": "image-to-video",
    "prompt": "A slow camera move through a neon-lit street",
    "image_url": "https://example.com/start.jpg",
    "resolution": "1080p",
    "duration": 5,
    "output_audio": true
  }'
```

## Memantau Hasil

Gunakan `poll_url` yang dikembalikan terlebih dahulu. Jika Anda memerlukan endpoint tetap, gunakan `GET /v1/tasks/{id}` dengan `id` / `task_id` yang sama dari respons pembuatan.

Tugas video yang selesai dapat mengembalikan `video_url`, `video`, atau `videos` bergantung pada model dan jumlah output. Perlakukan `billing_transaction_id` sebagai pengidentifikasi penagihan, bukan sebagai pengidentifikasi tugas.

## Kesalahan Umum

* Jangan mengkodekan jalur status video lama secara keras; lebih baik menggunakan `poll_url`.
* Jangan menggabungkan bidang frame pertama dengan aliran gambar referensi khusus kecuali kontrak model mengizinkannya.
* Jangan menganggap `duration` menggambarkan panjang video referensi input; biasanya mengontrol panjang output yang dihasilkan.
* Jangan mencoba ulang permintaan pembuatan setelah waktu habis tanpa memeriksa apakah tugas sudah dibuat.

## Referensi API

| Topik                 | Referensi                                                         |
| --------------------- | ----------------------------------------------------------------- |
| Buat Video            | [Buat Video](/id/api-reference/video/create-video)                |
| Dapatkan Status Video | [Dapatkan Status Video](/id/api-reference/video/get-video-status) |
| Dapatkan Status Tugas | [Dapatkan Status Tugas](/id/api-reference/tasks/get-task-status)  |
| Batalkan Tugas        | [Batalkan Tugas](/id/api-reference/tasks/cancel-task)             |
| Penagihan & Harga     | [Penagihan & Harga](/id/guides/billing)                           |

## API video gaya OpenAI dan kompatibel Volc

Gunakan `/v1/videos/generations` untuk API video terpadu TokenLab lintas model. Jika Anda memigrasikan integrasi Seedance 2.0 yang sudah memakai `content[]` atau permintaan Action bergaya Volc, gunakan endpoint kompatibilitas Seedance di bawah `/api/v3`. Kedua gaya memakai TokenLab Bearer API key dan polling asinkron, tetapi bentuk permintaan dan responsnya berbeda.
