Find Moments API

April 1, 2026

Find Moments API

Find Moments API memungkinkan Anda mendeskripsikan momen yang Anda inginkan menggunakan bahasa alami — seperti "reaksi lucu" atau "demo produk" — dan API akan menemukan serta mengekstrak klip yang sesuai dengan stempel waktu, judul, deskripsi, dan tagar dari video dengan panjang berapa pun, termasuk konten berdurasi berjam-jam. Jika ekspor diaktifkan, respons juga menyertakan tautan unduhan video yang telah dirender untuk setiap klip, dengan opsi auto-reframe yang menjaga subjek utama tetap di tengah dan overlay Animated Caption untuk output yang lebih menarik.

Sumber Video yang Didukung

API menerima URL dari platform berikut: YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble, dan lainnya.

Anda juga dapat menggunakan file yang diunggah secara lokal. Unggah lokal memerlukan paket Standard atau lebih tinggi. Lihat Upload API untuk detailnya.


Kirim Tugas Find Moments

POST https://wayinvideo-api.wayin.ai/api/v2/clips/find-moments

Body Permintaan

Saat merender klip, Anda dapat mengaktifkan fitur seperti Animated Caption, AI Reframe, dan overlay teks AI Hook opsional. Dengan AI Reframe, sistem mendeteksi subjek utama dalam frame, menjaga subjek tersebut tetap di tengah, mengoptimalkan crop untuk rasio aspek yang dipilih, dan memilih layout paling sesuai berdasarkan struktur scene. Fitur-fitur ini dikontrol oleh parameter yang namanya diawali dengan enable_ (lihat tabel di bawah).

ParameterTipeWajibDefaultDeskripsi
video_urlstringYaURL video sumber. Untuk file yang diunggah secara lokal, gunakan identifier file yang dikembalikan oleh Upload API.
querystringYa""Kueri bahasa alami yang mendeskripsikan momen yang Anda inginkan (mis. "reaksi lucu", "demo produk")
project_namestringTidak""Nama tugas kustom
source_langstringTidaknullBahasa sumber video (lihat Bahasa yang Didukung). Jika null, sistem mendeteksi bahasa asli secara otomatis.
target_langstringTidaknullBahasa target untuk konten output termasuk judul klip, deskripsi, dan subtitel (lihat Bahasa yang Didukung). Jika null, bahasa output mengikuti source_lang.
limitnumberTidaknullJumlah maksimum klip yang dikembalikan, diurutkan dari skor viral tertinggi ke terendah. Jika null atau dihilangkan, semua klip dikembalikan.
enable_exportbooleanTidakfalseLihat di bawah. Jika false, hanya rentang waktu klip, judul, dan deskripsi yang dikembalikan (tanpa rendering); jika true, klip dirender segera dan setiap klip menyertakan tautan ekspor. Anda juga dapat mengekspor nanti dengan gaya berbeda melalui endpoint Ekspor Klip yang Ada.
resolutionstringTidakSD_480Resolusi output: SD_480, HD_720, FHD_1080, QHD_2K, UHD_4K. Hanya digunakan saat enable_export adalah true.
enable_captionbooleanTidakfalseApakah akan menambahkan Animated Caption saat rendering. Hanya digunakan saat enable_export adalah true. Jika true, caption_display dan cc_style_tpl berlaku; jika false, ekspor tidak memiliki Animated Caption.
caption_displaystringTidakoriginalMode subtitel: both, original, translation. Hanya digunakan saat enable_export dan enable_caption keduanya true.
cc_style_tplstringTidaktemp-7ID template gaya subtitel (lihat Gaya Subtitel). Hanya digunakan saat enable_export dan enable_caption keduanya true.
enable_ai_hookbooleanTidakfalseApakah akan menambahkan hook teks yang menarik perhatian dan dihasilkan secara otomatis di awal atau akhir setiap klip yang dirender. Hanya digunakan saat enable_export adalah true. Jika true, ai_hook_script_style dan ai_hook_position berlaku; jika false, tidak ada AI hook yang ditambahkan.
ai_hook_script_stylestringTidakseriousGaya teks hook yang dihasilkan. Nilai yang diizinkan: serious, casual, informative, conversational, humorous, parody, inspirational, dramatic, empathetic, persuasive, neutral, excited, calm. Hanya digunakan saat enable_export dan enable_ai_hook keduanya true.
ai_hook_positionstringTidakbeginningPosisi teks hook yang dihasilkan. Nilai yang diizinkan: beginning, end. Hanya digunakan saat enable_export dan enable_ai_hook keduanya true.
enable_ai_reframebooleanTidakfalseAktifkan AI Reframe. Hanya digunakan saat enable_export adalah true. Jika true, ratio wajib diisi; jika false, video diekspor dengan rasio aspek aslinya tidak berubah.
ratiostringYa jika enable_ai_reframe adalah trueRasio aspek: RATIO_9_16, RATIO_1_1, RATIO_4_5, RATIO_16_9. Hanya digunakan saat enable_export adalah true, dan wajib saat enable_ai_reframe adalah true.
reframe_layoutstringTidakAutoLayout AI Reframe. Hanya digunakan saat enable_export dan enable_ai_reframe keduanya true. Default Auto: model memilih layout terbaik untuk frame tersebut (hilangkan field ini atau berikan string kosong untuk perilaku yang sama). Jika diatur ke nilai lain yang diizinkan untuk ratio yang dipilih, reframe menggunakan layout tetap tersebut. Lihat Nilai layout Reframe.

Nilai layout Reframe

Nilai reframe_layout yang diizinkan tergantung pada ratio. Auto selalu diizinkan (default); menghilangkan field ini atau memberikan string kosong memiliki perilaku yang sama. Berikan nama layout persis seperti di bawah (peka huruf besar/kecil dan spasi).

ratioNilai reframe_layout yang diizinkan
RATIO_16_9Auto, Full, Fit, Grid 4, Split 2, Trio, PiP, OTS, Screen First
RATIO_9_16Auto, Full, Fit, Grid 4, Split 2, Trio, PiP, Screen First, Gameplay A, Gameplay B
RATIO_1_1Auto, Full, Fit, Grid 4, Trio
RATIO_4_5Auto, Full, Fit, Grid 4, Split 2, Trio, PiP, Screen First, Gameplay A, Gameplay B

Perilaku enable_export

  • Jika enable_export kosong atau false, API hanya mengembalikan rentang waktu klip, judul, deskripsi, dan metadata terkait. Tidak ada rendering yang dilakukan, dan tidak ada tautan ekspor dalam hasil. Parameter ratio, reframe_layout, resolution, caption_display, enable_caption, cc_style_tpl, enable_ai_hook, ai_hook_script_style, ai_hook_position, dan enable_ai_reframe tidak berpengaruh saat pembuatan tugas. Anda dapat merender klip yang dipilih nanti dengan endpoint Ekspor Klip yang Ada.
  • Jika enable_export adalah true, parameter tersebut berlaku, setiap klip dirender segera, dan hasil menyertakan tautan unduhan untuk setiap klip. Karena setiap klip dirender, pemrosesan mungkin membutuhkan waktu lebih lama.

Body permintaan mengatur enable_export ke true. Klip dirender; setiap klip menyertakan export_link.

Permintaan

curl -X POST https://wayinvideo-api.wayin.ai/api/v2/clips/find-moments \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -d '{
    "video_url": "https://www.youtube.com/watch?v=example",
    "query": "sample query",
    "project_name": "sample project name",
    "enable_export": true,
    "resolution": "FHD_1080",
    "enable_caption": true,
    "enable_ai_reframe": true,
    "ratio": "RATIO_9_16"
  }'

Respons pengiriman

{
  "data": {
    "id": "proj_moment_789",
    "name": "sample project name",
    "status": "CREATED"
  }
}

Body permintaan menghilangkan enable_export atau mengaturnya ke false. Hanya rentang waktu klip, judul, deskripsi, dan tagar yang dikembalikan; tidak ada rendering, tidak ada tautan ekspor.

Permintaan

curl -X POST https://wayinvideo-api.wayin.ai/api/v2/clips/find-moments \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -d '{
    "video_url": "https://www.youtube.com/watch?v=example",
    "query": "sample query",
    "project_name": "sample project name"
  }'

Respons pengiriman

{
  "data": {
    "id": "proj_moment_456",
    "name": "sample project name",
    "status": "CREATED"
  }
}
FieldTipeDeskripsi
idstringIdentifier tugas unik
namestringNama tugas
statusstringCREATED, QUEUED, ONGOING, SUCCEEDED, FAILED

Ambil Hasil Find Moments

Lakukan polling untuk hasil hingga status menjadi SUCCEEDED.

Hasil bertahap: Saat status adalah ONGOING, setiap panggilan mengembalikan klip yang sudah dihasilkan sejauh ini — Anda dapat mulai memproses hasil parsial segera. Saat status berubah menjadi SUCCEEDED, respons berisi seluruh kumpulan klip.

GET https://wayinvideo-api.wayin.ai/api/v2/clips/find-moments/results/{id}

Parameter Path

ParameterTipeWajibDeskripsi
idstringYaID tugas yang dikembalikan oleh endpoint pengiriman

Contoh Permintaan

curl -X GET https://wayinvideo-api.wayin.ai/api/v2/clips/find-moments/results/proj_moment_456 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2"

Saat tugas dikirim dengan enable_export: true, setiap klip menyertakan export_link untuk video yang telah dirender:

{
  "data": {
    "id": "proj_moment_789",
    "name": "sample project name",
    "status": "SUCCEEDED",
    "expire_at": 1775831883112,
    "cost_usage": 120.0,
    "clips": [
      {
        "idx": 0,
        "title": "sample title",
        "begin_ms": 120000,
        "end_ms": 185000,
        "thumbnail": "https://cdn.example.com/thumb/moment_001.jpg",
        "tags": ["product", "announcement"],
        "desc": "sample description",
        "score": 81,
        "export_link": "https://cdn.example.com/export/moment_001.mp4"
      }
    ]
  }
}

Saat tugas dikirim tanpa enable_export (atau dengan enable_export: false), klip tidak menyertakan export_link:

{
  "data": {
    "id": "proj_moment_456",
    "name": "sample project name",
    "status": "SUCCEEDED",
    "expire_at": 1775831883112,
    "cost_usage": 120.0,
    "clips": [
      {
        "idx": 0,
        "title": "sample title",
        "begin_ms": 120000,
        "end_ms": 185000,
        "thumbnail": "https://cdn.example.com/thumb/moment_001.jpg",
        "tags": ["product", "announcement"],
        "desc": "sample description",
        "score": 81
      }
    ]
  }
}

Field Respons

FieldTipeDeskripsi
idstringIdentifier tugas unik
namestringNama tugas
statusstringCREATED, QUEUED, ONGOING, SUCCEEDED, FAILED
error_messagestringAlasan error (hanya ada saat status adalah FAILED)
expire_atintegerStempel waktu kedaluwarsa dalam milidetik (epoch). Setelah waktu ini, tugas kedaluwarsa dan hasil tidak dapat lagi diambil melalui endpoint hasil. Periode kedaluwarsa tergantung pada paket langganan Anda. Lihat halaman Paket Langganan untuk detailnya.
cost_usagenumberKredit API yang digunakan untuk permintaan ini
clipsarrayDaftar objek klip (lihat di bawah). Saat status adalah ONGOING, ini berisi klip yang sudah dihasilkan sejauh ini (hasil parsial); saat status adalah SUCCEEDED, ini berisi semua klip (hasil akhir).

Objek Klip

FieldTipeDeskripsi
idxintegerIndeks klip (berbasis 0, diurutkan berdasarkan potensi viral)
titlestringJudul klip yang dihasilkan AI
begin_msnumberWaktu mulai dalam milidetik
end_msnumberWaktu berakhir dalam milidetik
thumbnailstringURL gambar thumbnail
tagsstring[]Tagar yang dihasilkan AI
descstringDeskripsi yang dihasilkan AI
scorenumberSkor potensi viral (0–100, semakin tinggi semakin baik)
export_linkstringURL unduhan video yang telah dirender (saat enable_export adalah true). Tautan baru dibuat setiap kali Anda memanggil endpoint hasil. Setiap tautan kedaluwarsa setelah 24 jam — harap unduh video sebelum kedaluwarsa. Jika tautan telah kedaluwarsa, panggil kembali endpoint hasil untuk mendapatkan tautan baru.

Ekspor Ulang Klip yang Ada

Jika Anda ingin merender klip nanti atau mengekspornya ulang dengan gaya subtitel berbeda, rasio aspek, AI hook, overlay, atau pengaturan ekspor lainnya, gunakan Clips Export API.

Untuk proyek Find Moments, berikan id tugas yang dikembalikan oleh POST /api/v2/clips/find-moments sebagai project_id dalam permintaan ekspor.