ClipMaster API
Otomatiskan ClipMaster dari command line, skrip kamu sendiri, atau asisten AI. Endpoint yang sama dengan yang dipakai aplikasi — dihitung dengan token yang sama, tanpa tagihan terpisah.
Lebih suka teks polos? Baca halaman ini sebagai Markdown — dibuat untuk LLM dan agen. Pakai Claude? Hubungkan server MCP alih-alih memanggil endpoint secara manual.
Ikhtisar
Akses ClipMaster secara terprogram dengan kunci API. Setiap endpoint berperilaku persis seperti di aplikasi, terbatas pada proyek dan klip milikmu sendiri. Akses API tersedia di paket berbayar.
URL dasar:
https://api.clipmaster.app/api/v1
Autentikasi
Buat kunci di aplikasi lewat Pengaturan → Akses API. Kunci lengkap (cm_live_…) hanya ditampilkan sekali saat dibuat — simpan dengan aman. Kirim sebagai token Bearer di header Authorization:
curl https://api.clipmaster.app/api/v1/projects \-H "Authorization: Bearer cm_live_xxxxxxxxxxxxxxxxxxxx"
- Hanya lewat header. Kunci tidak diterima sebagai parameter query
?token=. - Kunci terhubung ke akunmu dan bertindak sebagai kamu, terbatas pada datamu sendiri.
- Cabut kunci kapan saja di Pengaturan; kunci yang dicabut langsung berhenti berfungsi.
403 session_auth_required untuk login/OAuth, penagihan dan checkout (membaca saldo token dan penggunaan Anda diizinkan), admin, manajemen kunci API, dan menghubungkan saluran sosial. Hubungkan saluran Anda di aplikasi web terlebih dahulu — yang lainnya dapat diskrip.Beberapa endpoint adalah fitur paket berbayar, ditandai di bawah dengan nama fitur (misalnya compilation). Pada paket tanpa fitur tersebut, mereka akan menjawab 403 subscription_required dengan feature tersebut.
Batas permintaan
120 permintaan per menit per kunci. Jika terlampaui, API mengembalikan 429 dengan header Retry-After.
Endpoint AI (saran, Auto-edit, pengukuran audio, pengaturan) juga memiliki batas per pengguna sendiri dan menjawab 429 dengan cara yang sama.
Mulai cepat
Impor video YouTube, tunggu pemrosesan, lalu tampilkan daftar dan unduh klipnya. Atur ini sekali di shell kamu:
KEY="cm_live_xxxxxxxxxxxxxxxxxxxx"BASE="https://api.clipmaster.app/api/v1"
Permintaan
curl -X POST "$BASE/upload/from-url" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"source_url": "https://youtube.com/watch?v=..."}
Respons
{"project_id": 123,"task_id": "a1b2c3d4-5e6f-7890-abcd-ef1234567890","message": "Processing started","progress_url": "/api/v1/projects/123/status"}
Permintaan
curl "$BASE/projects/123/status" \-H "Authorization: Bearer $KEY"
Respons
{"project_id": 123,"status": "completed","progress": 1.0,"progress_percent": 100,"total_clips": 6,"processing_complete": true}
Permintaan
curl "$BASE/projects/123/clips" \-H "Authorization: Bearer $KEY"
Respons
[{"clip_id": 456,"start_time": 0.0,"end_time": 42.3,"description": "Founder explains the pivot","status": "ready"}]
Permintaan
# Render it (charges tokens) -> {"export_id": 37, "status": "rendering", ...}curl -X POST "$BASE/projects/123/clips/456/export" \-H "Authorization: Bearer $KEY"# Poll until "status" is "completed"curl "$BASE/exports/37/status" -H "Authorization: Bearer $KEY"# The clip's exports, newest firstcurl "$BASE/exports?clip_id=456" -H "Authorization: Bearer $KEY"# Download from the newest completed export's download_urlcurl -L "$DOWNLOAD_URL" -o clip.mp4
Unduhan selalu berupa ekspor: klip yang dirender dengan teks, efek, dan potongan yang tersimpan. download_url adalah link S3 bertanda tangan, berlaku hingga pukul 00:00 UTC berikutnya (minimal 30 menit) — tanpa header autentikasi. Panggil GET /exports lagi untuk link baru.
Unggah
Untuk file, gunakan alur unggah dua langkah; untuk YouTube, serap dengan URL. Keduanya mengambil bidang opsional yang sama: processing_mode (otomatis, semantik, atau full_video), query, min_duration, orientation, flag caption, dan compilation_format dengan compilation_prompt untuk membangun kompilasi setelah klip siap. Pemrosesan menghabiskan 1 token per menit sumber.
Serap URL YouTube. Pemrosesan segera dimulai; polling status proyek yang dikembalikan. Berbayar: youtube_import.
Permintaan
curl -X POST "$BASE/upload/from-url" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"source_url": "https://youtube.com/watch?v=...","orientation": "vertical","compilation_format": "auto"}
Respons
{"project_id": 123,"task_id": "a1b2c3d4-5e6f-7890-abcd-ef1234567890","message": "Processing started","metadata": { "duration_sec": 212.4, "resolution": "1920x1080" },"progress_url": "/api/v1/projects/123/status"}
Langkah 1 unggah file. Mengembalikan target unggah berumur pendek: POST file ke upload.url dengan upload.fields yang dikembalikan tanpa diubah, lalu panggil complete.
Permintaan
curl -X POST "$BASE/uploads/init" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"filename": "talk.mp4","size_bytes": 94371840,"sha256": "e3b0c44298fc1c14...","duration_sec": 693.5,"content_type": "video/mp4"}
Respons
{"project_id": 124,"upload": {"url": "https://uploads.clipmaster.app","fields": {"...": "opaque form fields - send them back unchanged"}},"expires_at": "2026-08-14T21:00:00Z"}
Langkah 2: konfirmasi unggahan selesai dan mulai pemrosesan.
Permintaan
curl -X POST "$BASE/uploads/124/complete" \-H "Authorization: Bearer $KEY"
Respons
{"project_id": 124,"task_id": "b2c3d4e5-...","message": "Processing started","progress_url": "/api/v1/projects/124/status"}
Unggah logo, sulih suara, atau file adegan kompilasi tanpa browser. purpose adalah logo, narration, scene_video atau scene_image (dua terakhir berbayar: compilation). POST bidang yang dikembalikan, lalu file terakhir, ke upload.url dalam 15 menit, lalu gunakan asset_key di /users/me/logo/from-upload, /projects/{id}/clips/{clip_id}/logo/from-upload, /compilations/{id}/narration/from-upload atau /compilations/{id}/media-scenes (sebagai upload_key).
Permintaan
curl -X POST "$BASE/uploads/assets" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d '{"purpose": "logo", "content_type": "image/png", "size_bytes": 20480}'
Respons
{"asset_key": "originals/staging/42/9f1c2b7e.png","upload": {"url": "https://s3.amazonaws.com/...","fields": { "...": "opaque form fields - send them back unchanged" }},"expires_at": "2026-09-11T21:15:00Z"}
Status & klip
Cek progres pemrosesan. status bernilai salah satu dari uploading, uploaded, processing, completed, failed.
Permintaan
curl "$BASE/projects/123/status" \-H "Authorization: Bearer $KEY"
Respons
{"project_id": 123,"status": "processing","progress": 0.45,"progress_percent": 45,"current_step": "Transcription","total_scenes": 8,"total_clips": 0,"processing_complete": false}
Tampilkan daftar klip yang dihasilkan beserta metadata AI (hook, jenis klip, keyakinan).
Permintaan
curl "$BASE/projects/123/clips" \-H "Authorization: Bearer $KEY"
Respons
[{"clip_id": 456,"start_time": 0.0,"end_time": 42.3,"description": "Founder explains the pivot","display_name": null,"status": "ready","source": "Clipmaster","streaming_url": "https://clipmaster-media.s3.amazonaws.com/...mp4?...","features": {"scene_id": 2265,"clip_duration": 42.3,"vision_analysis": {"hook": "The moment everything changed","clip_type": "story","confidence": 0.9}}}]
Detail lengkap untuk satu klip — superset dari item daftar: setiap bidang fitur, analisis AI adegan, padding, badge, dan viralitasnya. Setiap bingkai, audio, dan kata-kata ada di GET …/analysis.
Permintaan
curl "$BASE/projects/123/clips/456" \-H "Authorization: Bearer $KEY"
Bentuknya sama dengan entri daftar di atas, dengan objek features lengkap.
Tampilkan daftar proyekmu.
Permintaan
curl "$BASE/projects" -H "Authorization: Bearer $KEY"
Respons
[{"project_id": 123,"filename": "keynote.mp4","status": "completed","created_at": "2026-08-14T20:11:38Z","video_metadata": {"duration_sec": 693.5,"resolution": "1920x1080","detected_orientation": "horizontal"},"is_demo": false}]
Hapus proyek beserta semua klip, adegan, dan filenya.
Permintaan
curl -X DELETE "$BASE/projects/123" \-H "Authorization: Bearer $KEY"
Respons
{"project_id": 123,"success": true,"message": "Project deleted"}
Transkripsikan seluruh video lagi, di latar belakang. Klip dengan kata-kata yang diedit sendiri akan tetap menyimpannya. Polling status untuk project_config.transcription_rerun_status. Tanpa token; dibatasi laju.
Permintaan
curl -X POST "$BASE/projects/123/transcription" \-H "Authorization: Bearer $KEY"
Respons
{"project_id": 123,"status": "running","progress_url": "/api/v1/projects/123/status"}
Analisis
Baca kembali analisis, sebagai JSON, untuk menempatkan pengeditan pada apa yang ditemukan. Dokumen klip menggunakan waktu penonton — jam overlay, saran, dan Auto-edit: detik dari awal adegan. Klip diputar dari 0 hingga time.duration; waktu di luar itu adalah padding di sekitar adegan, tempat overlay tidak bisa masuk. Daftar momen hanya menyimpan apa yang diputar, jadi setiap t dapat ditempatkan sebagaimana adanya; dari analisis klip lengkap, tempatkan hanya waktu antara 0 dan time.duration. Detik video = t + time.scene_start. Dokumen video menggunakan detik dari awal unggahan. Kotak adalah fraksi {x, y, w, h} dari bingkai. Membaca gratis dan berfungsi pada proyek demo.
Seluruh analisis tersimpan dari sebuah klip. Bagian: scene (deskripsi, hook, topik, jenis, skor, badge, viralitas), layout (potongan kamera dan, per bingkai, jenis bidikan, wajah, dan panel layar/webcam), audio (keras, tenang, beat, nyanyian; onsets=true menambahkan setiap hit), transcript (kata-kata klip, dengan pembicara jika diketahui), sound_events (tawa, tepuk tangan, musik), video_moments, talk_scenes dan auto_edit (pengambilan yang tersimpan, dengan rentang kecepatannya). include memilih bagian, dipisahkan koma; semua secara default.
Permintaan
curl "$BASE/projects/123/clips/456/analysis?include=scene,layout,audio" \-H "Authorization: Bearer $KEY"
Respons
{"project_id": 123,"clip_id": 456,"scene_id": 2265,"time": {"clock": "viewer","unit": "seconds","note": "0 = scene start, …","duration": 10.0,"scene_start": 100.0,"scene_end": 110.0,"clip_start": -2.0,"clip_end": 12.0},"analyses": {"layout": {"status": "completed","error": null,"step": null,"started_at": "2026-10-22T18:02:11+00:00","finished_at": "2026-10-22T18:02:40+00:00","what": "Faces, screen/webcam/gameplay panels, shot type per frame, camera cuts.","rest": "POST /api/v1/projects/123/clips/456/layout-analysis","mcp": "analyze_clip_layout","cost": "Paid plans (smart crop); no tokens."},"audio_cues": { "status": "completed", "...": "same fields" },"auto_edit": { "status": null, "...": "same fields" }},"scene": {"description": "He grabs the rim and the crowd erupts","hook": "The dunk nobody saw coming","topic": "basketball","clip_type": "reaction","score": 8,"...": "the rest of its stored AI fields","badge": { "label": "Highlight", "key": "highlight", "color": "#FF6B6B" },"virality": { "tier": "hot", "label": "Hot", "color": "#FF4444" }},"layout": {"current": true,"faces_placeable": true,"analyzed_at": "2026-10-22T18:02:40+00:00","model": "gemini-3.5-flash-lite","frame_interval": 2.0,"frame_size": { "width": 1920, "height": 1080 },"cuts": [4.0],"frames": [{ "t": 0.0, "shot": "solo_talking_head","faces": [{ "x": 0.4, "y": 0.1, "w": 0.2, "h": 0.4 }], "panels": [] },{ "t": 4.0, "shot": "screen_share_with_webcam","faces": [{ "x": 0.8, "y": 0.04, "w": 0.12, "h": 0.18 }],"panels": [{ "kind": "webcam_overlay", "x": 0.75, "y": 0.0, "w": 0.25, "h": 0.25,"highlighted": true }] }]},"audio": {"current": true,"measured_at": "2026-10-22T18:01:05+00:00","has_audio": true,"median_active_db": -20.0,"loud": [{ "t": 4.0, "end": 4.5, "over_db": 9.0 }],"quiet": [{ "start": -2.0, "end": -0.5, "level_db": -48.0 }],"beat": [{ "start": 0.0, "end": 10.0, "tempo_bpm": 120.0, "first_beat": 0.1, "period": 0.5 }],"singing": null}}
time dan analyses selalu ada. analyses memiliki satu entri per eksekusi sesuai permintaan (layout, audio_cues, auto_edit): status sedang berjalan, selesai, gagal, usang (ditandai berjalan selama lebih dari 30 menit, jadi mungkin mati — periksa lagi sebelum memulai ulang) atau null (tidak pernah dijalankan), dengan error, step (langkah terakhir yang dicapai; bermakna saat berjalan), stempel waktu dan endpoint yang memulainya. layout, audio dan auto_edit adalah null sampai mereka berjalan; sound_events, video_moments dan talk_scenes adalah [] ketika tidak ada yang ditemukan. current: false berarti hasilnya tidak lagi cocok dengan klip: file videonya dipotong lagi sejak itu (pemotongan saja tidak mengubahnya), untuk layout juga ketika eksekusi terakhir tidak selesai, untuk audio juga ketika pengukuran itu sendiri berubah. Pemotongan memang membuat auto_edit current: false, karena waktunya berada pada jam adegan; pengambilan yang lebih lama yang tidak merekam adegannya membaca current: null (tidak diketahui). Waktu audio dikonversi dari file tempat mereka diukur. Bagian yang tidak diketahui adalah 400 unknown_section.
Klip sebagai satu daftar {t, kind, source, …} yang diurutkan berdasarkan waktu: cut, shot dan faces (ketika jumlah bidikan atau wajah berubah), giliran speaker, sound, loud, quiet, beat, singing dan moments dari vision pass. Hanya apa yang diputar yang terdaftar — rentang dipotong menjadi 0–time.duration, bidikan, jumlah wajah atau set speaker di padding dibawa ke 0, hal lain di padding ditinggalkan — jadi setiap t masuk ke POST …/overlays sebagaimana adanya. Analisis tata letak atau audio yang tidak lagi cocok dengan klip ditinggalkan dan dinamai di stale. Dengan summary adegan, analisis mana yang available, dan analyses. Jam yang sama dengan analisis klip.
Permintaan
curl "$BASE/projects/123/clips/456/moments" \-H "Authorization: Bearer $KEY"
Respons
{"project_id": 123,"clip_id": 456,"time": { "clock": "viewer", "duration": 10.0, "...": "as in …/analysis" },"summary": {"description": "He grabs the rim and the crowd erupts","hook": "The dunk nobody saw coming","topic": "basketball","clip_type": "reaction","score": 8},"available": { "layout": true, "audio": true, "transcript": true, "video_moments": true },"stale": [],"analyses": { "...": "as in …/analysis" },"moments": [{ "t": 0.0, "kind": "beat", "source": "audio", "end": 10.0, "tempo_bpm": 120.0 },{ "t": 0.0, "kind": "faces", "source": "layout", "count": 1 },{ "t": 0.0, "kind": "shot", "source": "layout", "detail": "solo_talking_head" },{ "t": 0.0, "kind": "speaker", "source": "transcript", "speaker": "speaker_0", "first_word": "Here" },{ "t": 1.0, "kind": "moment", "source": "video", "end": 3.0, "detail": "action_peak","score": 8, "description": "Rim grab" },{ "t": 3.0, "kind": "sound", "source": "transcript", "end": 4.0, "detail": "laughter" },{ "t": 4.0, "kind": "cut", "source": "layout" },{ "t": 4.0, "kind": "loud", "source": "audio", "end": 4.5, "over_db": 9.0 },{ "t": 4.0, "kind": "shot", "source": "layout", "detail": "screen_share_with_webcam" }]}
Seluruh video, pada waktu video: metadata, transcript berdasarkan segmen dengan pembicara, sound_events, video_moments dari vision pass dan talk_scenes dari transcript pass (masing-masing dengan …_status dan blok …_pass: status dan model pass, ditambah kesalahan dan waktu vision pass), dan setiap adegan dengan hook, skor, dan flag degraded (true: langkah adegan AI gagal dan itu adalah fallback panjang tetap tanpa skor). include memilih bagian; words (setiap kata, dengan pembicara dan kepercayaan diri) hanya muncul ketika disebutkan. analyses.transcription melaporkan transkripsi ulang.
Permintaan
curl "$BASE/projects/123/analysis" \-H "Authorization: Bearer $KEY"
Respons
{"project_id": 123,"time": { "clock": "video", "unit": "seconds", "note": "Seconds from the start of the upload." },"analyses": {"transcription": {"status": null,"...": "same fields as a clip's runs","rest": "POST /api/v1/projects/123/transcription","mcp": "transcribe_video"}},"metadata": { "duration_sec": 693.5, "resolution": "1920x1080", "detected_orientation": "horizontal","...": "the rest of the upload's metadata" },"transcript": {"language": "english","provider": "openai_whisper","duration": 693.5,"no_audio": false,"speakers": [],"segments": [{ "start": 99.0, "end": 106.0, "text": "Here we go.", "speaker": null }]},"sound_events": [{ "t": 103.0, "end": 104.0, "kind": "laughter", "label": "[laughter]","speaker": null, "confidence": null }],"video_moments": [{ "start": 101.0, "end": 103.0, "type": "action_peak", "score": 8,"description": "Rim grab" }],"video_moments_status": "ok","video_moments_pass": { "status": "ok", "error": null, "model": "gemini-3.8-flash","analyzed_at": "2026-10-22T17:40:12+00:00" },"talk_scenes": [{ "start": 95.0, "end": 105.0, "clip_type": "story", "score": 7,"hook": "Why he almost quit", "topic": "basketball","description": "He tells how the season started", "confidence": 0.8 }],"talk_scenes_status": "ok","talk_scenes_pass": { "status": "ok", "model": "gpt-4o-mini" },"scenes": [{ "scene_id": 2265, "start": 100.0, "end": 110.0, "source": "merged","description": "He grabs the rim and the crowd erupts","hook": "The dunk nobody saw coming", "topic": "basketball","clip_type": "reaction", "score": 8, "degraded": false }]}
Ukur audio klip — momen keras, rentang tenang, irama dan tempo, nyanyian — di latar belakang. Lakukan polling GET …/analysis hingga analyses.audio_cues.status selesai atau gagal; hasilnya adalah bagian audio-nya. Saran dan Auto-edit mengukurnya sendiri; panggil ini untuk membaca audio terlebih dahulu. 409 audio_cues_running, audio_cues_current (pengukuran yang disimpan masih cocok dengan file klip) atau clip_file_missing. Berbayar: ai_suggestions; tanpa token; berbagi batas laju dengan efek Saran dan Auto-edit.
Permintaan
curl -X POST "$BASE/projects/123/clips/456/audio-cues" \-H "Authorization: Bearer $KEY"
Respons
{"project_id": 123,"clip_id": 456,"status": "running"}
Edit
Semua yang dilakukan editor dalam aplikasi dapat diskrip: pangkas, caption dan terjemahannya, tata letak, zoom, efek layar, kecepatan, emoji, GIF, stiker, klip reaksi, efek suara, logo, bilah kemajuan, dan orientasi.
Dua jam. Overlay yang Anda tambahkan (POST …/overlays) dan setiap saran menggunakan waktu penonton — detik dari awal klip saat diputar. Pengaturan yang disimpan menjaga waktu terhadap file klip yang diberi padding, beberapa detik lebih lama di setiap ujung; endpoint overlay mengonversi untuk Anda.
Trim — geser awal/akhir klip. Semua klip di adegan itu ikut diperbarui otomatis.
Permintaan
curl -X PUT "$BASE/projects/123/scenes/2265/boundaries" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"new_start_time": 12.0,"new_end_time": 27.5}
Respons
{"scene_id": 2265,"project_id": 123,"old_start_time": 0.0,"old_end_time": 42.3,"new_start_time": 12.0,"new_end_time": 27.5,"message": "Scene boundaries updated successfully."}
Baca atau perbarui status editor penuh: caption (dengan secondary untuk baris kedua), emoji, GIF, stiker, dan klip reaksi (gifs, dibedakan berdasarkan kind), sfx, zoom, efek layar, pembingkaian, logo, bilah kemajuan, orientasi, speed dan speedRanges. PUT menggantikan seluruh objek — kirim kembali semua yang dikembalikan GET, dengan perubahan Anda; apa pun yang dihilangkan akan dihapus.
Permintaan
curl -X PUT "$BASE/projects/123/clips/456/settings" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"orientation": "vertical","captions": {"enabled": true,"style": "hormozi","karaoke": true},"speed": 1.25}
Respons
{"clip_id": 456,"settings": {"captions": { "enabled": true, "style": "hormozi", "karaoke": true },"zoom": null,"screenEffects": null,"logo": null,"progressBar": null,"smartCrop": null,"gifs": null,"orientation": "vertical","speed": 1.25,"speedRanges": null}}
Zoom adalah satu bentuk: {type: "zoom", start, end, scale, glide, target, center} — masuk pada start (meluncur glide detik untuk sampai di sana, 0 langsung), ditahan pada scale (1.05–2.5), kembali pada end, atau ditahan hingga akhir klip saat end adalah null. Zoom punch dan slow yang lebih lama dikonversi.
Baca atau ganti kata-kata caption dengan timing per kata.
Permintaan
curl -X PUT "$BASE/projects/123/clips/456/captions" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"words": [{ "text": "Use", "start": 28.06, "end": 28.14 },{ "text": "correct", "start": 28.14, "end": 28.22 }]}
Respons
{"words": [{ "text": "Use", "start": 28.06, "end": 28.14, "highlight": null },{ "text": "correct", "start": 28.14, "end": 28.22, "highlight": null }]}
Ganti nama klip. String kosong mengembalikannya ke nama bawaan.
Permintaan
curl -X PATCH "$BASE/projects/123/clips/456/name" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"name": "Best hook"}
Respons
{"clip_id": 456,"display_name": "Best hook"}
Transkripsikan audio klip ini lagi dan jadikan hasilnya sebagai caption-nya. Menggantikan kata-kata yang diedit; menjawab dengan kata-kata baru. Tanpa token; dibatasi laju.
Permintaan
curl -X POST "$BASE/projects/123/clips/456/transcribe" \-H "Authorization: Bearer $KEY"
Tambahkan overlay pada waktu yang dilihat penonton: emojis, inline_emojis, gifs, stickers, reaction_clips, sfx, zooms, screen_effects dan speed_ranges. Konversi waktu editor dan default diterapkan untuk Anda, dan saran AI dapat dikirim sebagaimana adanya. Ini hanya menambahkan.
Permintaan
curl -X POST "$BASE/projects/123/clips/456/overlays" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"emojis": [{ "emoji": "🔥", "timestamp": 12.0 }],"inline_emojis": [{ "emoji": "💰", "word_index": 5 }],"gifs": [{ "source_id": "k1", "slug": "mind-blown", "mp4_url": "https://…","width": 480, "height": 270, "timestamp": 8.0 }],"sfx": [{ "sfx_id": 3, "timestamp": 3.0, "volume": 0.4 }],"zooms": [{ "start": 20.0, "length": 1.0, "scale": 1.3 }],"screen_effects": [{ "look": "flash", "start": 20.0 }],"speed_ranges": [{ "start": 31.0, "length": 2.5, "speed": 2.0 }]}
Respons
{"clip_id": 456,"settings": {"emojis": [{ "type": "floating", "emoji": "🔥", "timestamp": 14.0, "duration": 1.0,"position": { "x": 0.5, "y": 0.694 }, "scale": 1.0 }],"zoom": [{ "type": "zoom", "start": 22.0, "end": 23.0, "scale": 1.3, "glide": 0,"target": "frame", "center": { "x": 0.5, "y": 0.5 } }]}}
Satu klip menampung hingga 5 GIF, 5 stiker, dan 5 klip reaksi. spot pada emoji atau stiker mengikuti wajah utama, dan target: "face" pada zoom memperbesar wajah — berbayar (smart_crop), setelah analisis tata letak klip.
Baris caption kedua dalam bahasa lain. GET mencantumkan bahasa yang sudah dimiliki klip ini dan yang didukung; POST {"language": "es"} menerjemahkannya — 1 token, gratis jika klip sudah memilikinya. Berbayar: caption_translation. Ini akan muncul setelah captions.secondary diatur dalam pengaturan.
Permintaan
curl -X POST "$BASE/projects/123/clips/456/translations" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d '{"language": "es"}'
Respons
{"project_id": 123,"language": "es","lines": [{ "text": "Usa la palabra correcta", "start": 28.06, "end": 29.4 }],"created": true,"tokens_charged": 1}
Analisis apa yang ditunjukkan setiap momen klip — jenis bidikan, wajah, panel layar dan webcam — di latar belakang. Diperlukan sebelum overlay dapat mengikuti wajah. Lakukan polling klip untuk features.vision_analysis.layout_rerun_status, atau GET …/analysis untuk analyses.layout.status; setiap bingkai adalah bagian layoutnya. Berbayar: smart_crop; tanpa token.
Permintaan
curl -X POST "$BASE/projects/123/clips/456/layout-analysis" \-H "Authorization: Bearer $KEY"
Respons
{"project_id": 123,"clip_id": 456,"status": "running"}
Unggah (multipart, bidang file) atau hapus logo per klip. Tanpa browser, siapkan dengan POST /uploads/assets dan lampirkan di …/logo/from-upload.
Permintaan
curl -X POST "$BASE/projects/123/clips/456/logo/from-upload" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d '{"asset_key": "originals/staging/42/9f1c2b7e.png"}'
Saran AI & Edit otomatis
Saran bersifat hanya-baca: mereka mengembalikan penempatan pada waktu penonton, siap untuk dikirim ke POST …/overlays sebagaimana adanya. Berbayar: ai_suggestions. Tanpa token; dibatasi laju.
Saran untuk satu klip. kind adalah gifs, stickers, reaction-clips, emojis, sfx, effects (resep zoom dan efek layar) atau speed (udara mati dipercepat, gerak lambat). Parameter kueri max_suggestions.
Permintaan
curl -X POST "$BASE/projects/123/clips/456/gifs/suggest?max_suggestions=3" \-H "Authorization: Bearer $KEY"
Respons
{"clip_id": 456,"suggestions": [{"source_id": "k1","slug": "mind-blown","title": "Mind Blown","mp4_url": "https://…","width": 480,"height": 270,"preview_url": "https://…","timestamp": 8.0,"duration": 2.0,"query": "mind blown","reason": "Reacts to the reveal"}]}
effects dan speed menjawab dengan audio_cues_ready: false saat audio klip masih diukur — tanyakan lagi beberapa detik kemudian. Saran kecepatan adalah {start, end, speed}: kirimkan dengan length = end − start.
Rencanakan seluruh editan untuk klip — zoom, efek layar, stiker, suara, dan rentang kecepatan — di latar belakang. Lakukan polling klip untuk features.vision_analysis.auto_edit_rerun_status; editan adalah features.vision_analysis.auto_edit ({effects, stickers, sfx, speed}, juga bagian auto_edit dari GET …/analysis). Tidak ada yang diterapkan: kirim bagian-bagiannya ke POST …/overlays. Berbayar: ai_suggestions; tanpa token.
Permintaan
curl -X POST "$BASE/projects/123/clips/456/auto-edit" \-H "Authorization: Bearer $KEY"
Respons
{"project_id": 123,"clip_id": 456,"status": "running"}
Ekspor
Render klip dengan pengaturan tersimpannya. Mengembalikan id ekspor untuk dicek; memotong token.
Permintaan
curl -X POST "$BASE/projects/123/clips/456/export" \-H "Authorization: Bearer $KEY"
Respons
{"export_id": 37,"status": "rendering","message": "Export render triggered"}
Cek status ekspor. Setelah selesai, download_url adalah link sementara yang bisa kedaluwarsa — segera ambil filenya.
Permintaan
curl "$BASE/exports/37/status" \-H "Authorization: Bearer $KEY"
Respons
{"export_id": 37,"status": "completed","download_url": "https://clipmaster-media.s3.amazonaws.com/...mp4?...&Expires=...","created_at": "2026-08-14T21:47:35Z","completed_at": "2026-08-14T21:48:42Z"}
Daftar ekspor Anda, terbaru lebih dulu. Filter dengan clip_id atau project_id. Begini cara mengunduh klip: ambil ekspor terbaru berstatus completed lalu unduh download_url-nya.
Permintaan
curl "$BASE/exports?clip_id=456" \-H "Authorization: Bearer $KEY"
Respons
{"exports": [{"export_id": 37,"clip_id": 456,"project_id": 123,"status": "completed","progress": null,"export_number": 2,"tokens_charged": 1,"clip_duration_sec": 42.3,"download_url": "https://clipmaster-media.s3.amazonaws.com/...mp4?...&Expires=...","created_at": "2026-08-14T21:47:35Z","completed_at": "2026-08-14T21:48:42Z"}],"total": 2,"limit": 20,"offset": 0}
Kompilasi
Kompilasi adalah satu editan yang dibangun dari klip video Anda mana pun. Membuat, mengatur, dan mengekspornya berbayar: compilation.
Tampilkan daftar kompilasimu (kumpulan klip lintas proyek).
Permintaan
curl "$BASE/compilations" -H "Authorization: Bearer $KEY"
Respons
{"items": [{"id": 10,"name": "Funny Personal Anecdotes","clip_count": 5,"total_duration_sec": 149.9,"output": { "width": 1920, "height": 1080, "fps": 30 },"format": null,"latest_export": null,"created_at": "2026-08-10T19:05:41Z"}]}
Buat kompilasi kosong. Berbayar: compilation.
Permintaan
curl -X POST "$BASE/compilations" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"name": "Best of March","output": { "width": 1080, "height": 1920, "fps": 30 }}
Baca satu kompilasi — klipnya, estimated_tokens untuk ekspor, rencana edit di arrangement_metadata.edit_plan dan file yang diputar di media — atau ubah name, output, logo_config atau progress_bar_config.
Permintaan
curl "$BASE/compilations/10" -H "Authorization: Bearer $KEY"
Apa yang akan ikut terhapus: unggahan yang hanya ada untuk kompilasi ini, dan postingan yang tertunda.
Permintaan
curl "$BASE/compilations/10/deletion-preview" -H "Authorization: Bearer $KEY"
Respons
{"compilation_id": 10,"source_project_ids": [],"scheduled_posts_pending": 0}
Hapus kompilasi; postingan yang tertunda dibatalkan. delete_sources=true juga menghapus unggahan dari pratinjau; teruskan sebagai expected_project_ids dan penghapusan ditolak (409) jika set tersebut berubah.
Permintaan
curl -X DELETE "$BASE/compilations/10" \-H "Authorization: Bearer $KEY"
Respons
{"compilation_id": 10,"deleted_project_ids": [],"scheduled_posts_cancelled": 0}
Klip Anda di semua video, untuk ditambahkan. Parameter kueri q, limit, offset.
Permintaan
curl "$BASE/compilations/available-clips?q=pivot&limit=50" \-H "Authorization: Bearer $KEY"
Tambahkan klip (clip_id, position opsional). DELETE /compilations/{id}/clips/{compilation_clip_id} menghapus satu.
Permintaan
curl -X POST "$BASE/compilations/10/clips" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d '{"clip_id": 456}'
Lebih banyak klip dari perpustakaan Anda yang cocok dengan kompilasi ini, yang terbaik terlebih dahulu.
Permintaan
curl -X POST "$BASE/compilations/10/clips/suggest" \-H "Authorization: Bearer $KEY"
Ide kompilasi dari perpustakaan Anda untuk sebuah ringkasan. Ubah salah satunya menjadi kompilasi dengan POST /compilations/from-suggestion (name, clip_ids).
Permintaan
curl -X POST "$BASE/compilations/suggest" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d '{"prompt": "funny moments", "max_suggestions": 3}'
Respons
{"suggestions": [{"theme": "Funny moments","reason": "Five clips where the audience laughs","clip_ids": [456, 457, 461],"total_duration_sec": 94.2}]}
Render kompilasi. Membebankan token untuk detik sumber yang diputar (estimated_tokens pada kompilasi).
Permintaan
curl -X POST "$BASE/compilations/10/export" \-H "Authorization: Bearer $KEY"
Respons
{"export_id": 5,"compilation_id": 10,"status": "pending","estimated_tokens": 3,"message": "Export started"}
Polling ekspor kompilasi; download_url berfungsi seperti untuk ekspor klip. GET /compilations/{id}/exports mencantumkannya.
Permintaan
curl "$BASE/compilations/10/exports/5/status" \-H "Authorization: Bearer $KEY"
Respons
{"export_id": 5,"compilation_id": 10,"status": "completed","progress": null,"download_url": "https://clipmaster-media.s3.amazonaws.com/...mp4?...&Expires=...","created_at": "2026-08-14T21:47:35Z","completed_at": "2026-08-14T21:50:02Z"}
Pengeditan kompilasi
Kompilasi adalah rencana edit: adegan satu hingga tiga panel (klip atau file) dengan transisi dan kartu teks, ditambah overlay, musik, dan sulih suara di seluruh editan. Waktu adalah detik ke dalam kompilasi.
Potong ulang kompilasi dengan AI menjadi rencana adegan baru. format: kustom (montase; memerlukan prompt), best_of, countdown, trailer, hook_loop, tutorial, qa_highlights, atau otomatis. Mengganti adegan serta emoji dan GIF yang disematkan padanya; caption, musik, dan narasi tetap ada.
Permintaan
curl -X POST "$BASE/compilations/10/arrange" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"format": "hook_loop"}
Respons
{"id": 10,"name": "Funny Personal Anecdotes","format": "hook_loop","total_duration_sec": 58.2,"estimated_tokens": 1,"clips": [{ "compilation_clip_id": 88, "position": 0, "clip_id": 456, "duration_sec": 12.4, "missing": false }],"arrangement_metadata": {"resolved_format": "hook_loop","degraded": false,"edit_plan": {"version": "2.0","scenes": [{"id": "1","layout": "full","sources": [{ "clip_id": 456, "slot": 0, "audio": "primary","start_offset_sec": 3.0, "end_offset_sec": 9.5, "speed": 1.0 }],"text": []}]}}}
degraded: true berarti langkah AI gagal dan klip tetap dalam urutan.
plan/undo kembali ke sebelum pengaturan, reset, atau penempatan terakhir (mengulang lagi); plan/reset membuat potongan biasa, setiap klip utuh; plan/place-added-clips memasukkan klip yang ditambahkan sejak pengeditan AI ke dalamnya. Tanpa isi.
Permintaan
curl -X POST "$BASE/compilations/10/plan/undo" \-H "Authorization: Bearer $KEY"
Potong ulang satu adegan dengan AI, sisanya dibiarkan. prompt opsional. ID adegan adalah teks.
Permintaan
curl -X POST "$BASE/compilations/10/scenes/3/regenerate" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d '{"prompt": "use the boat clip instead"}'
Beri satu adegan pola ketukan: pengulangan singkat tanpa suara dari klipnya di ketukan musik, tepat sebelum adegan itu. pattern: stutter, quick_stutter, build_up, jump_cut, teaser, atau null untuk menghapusnya. Butuh musik yang sudah diukur (409 music_not_measured sampai saat itu).
Permintaan
curl -X PUT "$BASE/compilations/10/scenes/3/beat-pattern" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d '{"pattern": "stutter"}'
Ganti rencana pengeditan. Tata letak: full (1 panel), stack2 / cols2 / pip (2), stack3 / cols3 (3). Sumber memutar clip_id atau media_key; offsetnya adalah awal dan akhir jendela dalam detik ke adegan klip; paling banyak satu sumber per adegan adalah audio primary. Transisi: cut, fade, slide, wipe. Overlay yang ditinggalkan tetap ada; music yang ditinggalkan dihapus.
Permintaan
curl -X PUT "$BASE/compilations/10/plan" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"version": "2.0","scenes": [{"id": "1","layout": "full","sources": [{ "clip_id": 456, "audio": "primary","start_offset_sec": 2.0, "end_offset_sec": 14.5 }],"text": [{ "text": "Day one", "role": "title", "start_ms": 0, "duration_ms": 2000 }]},{"id": "2","layout": "stack2","transition_in": { "kind": "fade", "duration_ms": 400 },"sources": [{ "clip_id": 457, "slot": 0, "audio": "primary", "speed": 1.5 },{ "clip_id": 458, "slot": 1 }]}],"music": { "track_id": "a1b2c3", "volume": 0.3 }}
POST menambahkan emoji, GIF, stiker, zoom, efek layar, dan efek suara di seluruh pengeditan, dalam bentuk overlay klip. PATCH mengganti seluruh set yang tersimpan (captions, emojis, gifs, screenEffects, zoom, sfx); hanya yang Anda kirim yang berubah.
Permintaan
curl -X POST "$BASE/compilations/10/plan/overlays" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"emojis": [{ "emoji": "🎉", "timestamp": 3.0 }],"screen_effects": [{ "look": "bw", "start": 10.0, "length": 2.0 }]}
Respons
{"id": 10,"arrangement_metadata": {"edit_plan": {"emojis": [{ "type": "floating", "emoji": "🎉", "timestamp": 3.0, "duration": 1.0,"position": { "x": 0.5, "y": 0.694 }, "scale": 1.0 }]}}}
Edit seluruh kompilasi sekaligus dan terapkan, hanya mengisi yang masih kosong: cara setiap adegan masuk (transisi apa pun yang tersedia), kartu teks (kata, font, ukuran, posisi, waktu), trek perpustakaan, rentang kecepatan pada klip berkecepatan normal dan bilah progres, plus zoom, efek layar, stiker, GIF, emoji, efek suara, dan hingga 2 adegan klip reaksi. direction (opsional, hingga 300 karakter) mengarahkan semuanya dan disimpan untuk proses berikutnya. Kirim take yang dikembalikan ke …/auto-edit/undo untuk menghapusnya, atau kembali ke sini sebagai replace_take untuk menukarnya dengan yang baru. Berbayar: compilation; tanpa token.
Permintaan
curl -X POST "$BASE/compilations/10/auto-edit" \-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \-d '{"direction": "hype energy, big bold text"}'
Respons
{"compilation": { "id": 10, "...": "as GET /compilations/{id}" },"take": {"scene_ids": ["r1"],"effect_ids": ["e1", "e2"],"sticker_ids": ["g1"],"emoji_ids": ["m1"],"zoom_ids": ["z1"],"sfx_ids": ["s1"],"transitions": [{ "scene_id": "2", "kind": "slide", "duration_ms": 400 }],"text_cards": [{ "scene_id": "1", "text": "Best of the year" }],"music_track_id": "lib-42","speed_ranges": [{ "scene_id": "2", "slot": 0, "start": 24.0, "end": 25.2, "speed": 0.5 }],"progress_bar": true},"counts": { "effects": 2, "stickers": 0, "gifs": 1, "emojis": 1,"reaction_clips": 1, "zooms": 1, "sounds": 1, "transitions": 1,"texts": 1, "music": 1, "speed_ranges": 1, "progress_bar": 1 }}
Audio editan yang sudah diukur, pada jamnya sendiri: ketukan musik (atau klip yang terdengar), momen keras, bagian hening, dan nyanyian; onsets=true menambahkan setiap onset. Setiap audio diukur sekali, di latar belakang, saat pertama kali dibaca atau masuk ke editan — sources menunjukkan mana yang sudah diukur, dan measuring tetap true sampai semuanya selesai. Lampu pesta mengambil beat_first, beat_period, dan beat_clock dari sini. Berbayar: compilation; tanpa token.
Permintaan
curl "$BASE/compilations/10/audio" \-H "Authorization: Bearer $KEY"
Respons
{"compilation_id": 10,"duration_sec": 37.4,"measuring": false,"sources": [{ "kind": "music", "status": "measured", "track_id": "lib-42" },{ "kind": "clip", "status": "measured", "scene_id": "1", "clip_id": 1621 }],"beat": [{ "start": 12.0, "end": 37.4, "first_beat": 12.02, "period": 0.38,"tempo_bpm": 157.9, "clock": "edit" }],"loud": [{ "t": 33.0, "end": 33.4, "over_db": 11.0 }],"quiet": [{ "start": 3.4, "end": 9.0, "level_db": -38.0 }],"singing": [],"onsets": null}
Tambahkan adegan yang memutar file alih-alih klip: klip reaksi Klipy (klipy) atau video atau gambar yang diunggah (upload_key). Itu muncul setelah after_scene_id, atau terakhir; into_scene_id menjadikannya satu panel lagi di samping klip adegan itu. Video yang diunggah dihitung ke token ekspor; klip reaksi dan gambar gratis. Berbayar: compilation.
Permintaan
curl -X POST "$BASE/compilations/10/media-scenes" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"klipy": { "source_id": "c3", "slug": "emotional-damage","title": "Emotional Damage", "mp4_url": "https://…" },"after_scene_id": "2"}
Sulih suara di seluruh pengeditan, ditranskripsi untuk caption. POST mengunggahnya (multipart, bidang file) atau melampirkan yang sudah disiapkan di …/narration/from-upload; PATCH mengatur volume dan duck; DELETE menghapusnya.
Permintaan
curl -X POST "$BASE/compilations/10/narration/from-upload" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d '{"asset_key": "originals/staging/42/5d8e1a.mp3"}'
Respons
{"url": "https://clipmaster-media.s3.amazonaws.com/...mp3?...","volume": 1.0,"duck": true,"duration_sec": 61.4,"word_count": 152}
Trek yang cocok dengan pengeditan, masing-masing dengan alasan. Ambil satu dengan POST /music/tracks/{track_id}/select, lalu atur music.track_id dalam rencana.
Permintaan
curl -X POST "$BASE/compilations/10/music/suggest" \-H "Authorization: Bearer $KEY"
Saran untuk seluruh pengeditan, pada detiknya sendiri: kind adalah gifs, stickers, atau emojis. Kirimkan ke POST …/plan/overlays. Berbayar: compilation.
Permintaan
curl -X POST "$BASE/compilations/10/emojis/suggest" \-H "Authorization: Bearer $KEY"
Respons
{"compilation_id": 10,"suggestions": [{ "emoji": "😂", "timestamp": 14.2, "duration": 1.5, "reason": "The punchline lands" }]}
Baris judul dan label untuk satu adegan.
Permintaan
curl -X POST "$BASE/compilations/10/scenes/1/text/suggest" \-H "Authorization: Bearer $KEY"
Respons
{"suggestions": [{ "text": "Day one", "role": "title" }]}
Penjadwalan
Publikasikan klip dan kompilasi ke channel yang terhubung. Penjadwalan butuh hak akses fitur penjadwalan sosial.
Channel yang terhubung. Hubungkan dulu di aplikasi web.
Permintaan
curl "$BASE/social/accounts" -H "Authorization: Bearer $KEY"
Respons
{"platforms_available": ["youtube"],"accounts": [{"id": 2,"platform": "youtube","account_name": "MyChannel","status": "active"}]}
Jadwalkan ekspor klip atau kompilasi untuk dipublikasikan. Idempoten — percobaan ulang dengan akun, ekspor, dan waktu yang sama mengembalikan postingan yang sudah ada.
Permintaan
curl -X POST "$BASE/scheduled-posts" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d @body.json
Isi permintaan
{"social_account_id": 2,"clip_id": 456,"export_id": 37,"scheduled_at": "2026-08-20T16:00:00Z","title": "The pivot that saved us","hashtags": ["startup", "founder"],"privacy": "public"}
Respons
{"id": 12,"clip_id": 456,"export_id": 37,"social_account_id": 2,"platform": "youtube","account_name": "MyChannel","status": "scheduled","scheduled_at": "2026-08-20T16:00:00","title": "The pivot that saved us"}
Rentang kalender berisi postingan terjadwal dan yang sudah terbit.
Permintaan
curl "$BASE/scheduled-posts?from_date=2026-08-01T00:00:00Z&to_date=2026-08-31T23:59:59Z" \-H "Authorization: Bearer $KEY"
Respons
{"posts": [{"id": 12,"status": "scheduled","scheduled_at": "2026-08-20T16:00:00","title": "The pivot that saved us"}]}
Atur ulang waktu atau edit postingan sebelum diterbitkan (scheduled_at, title, description, hashtags, privacy), atau batalkan.
Permintaan
curl -X PATCH "$BASE/scheduled-posts/12" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d '{"scheduled_at": "2026-08-21T16:00:00Z"}'
Judul, deskripsi, dan hashtag AI dari transkrip klip.
Permintaan
curl -X POST "$BASE/scheduled-posts/metadata-suggest" \-H "Authorization: Bearer $KEY" \-H "Content-Type: application/json" \-d '{"clip_id": 456, "platform": "youtube"}'
Respons
{"title": "The pivot that saved us","description": "How one decision turned the company around.","hashtags": ["startup", "founder"]}
Putuskan sambungan saluran. Riwayat postingannya, yang tertunda dan yang diterbitkan, ikut terhapus.
Permintaan
curl -X DELETE "$BASE/social/accounts/2" \-H "Authorization: Bearer $KEY"
Pustaka
Tampilkan 15 gaya caption beserta nilai default-nya.
Permintaan
curl "$BASE/export/styles" \-H "Authorization: Bearer $KEY"
Respons
[{"key": "clean","name": "Clean","category": "social","fontFamily": "Inter","fontSize": 56,"color": "#FFFFFF","highlightColor": "#9DC34F"}]
Perpustakaan efek suara; ID-nya masuk ke overlay sfx. category opsional.
Permintaan
curl "$BASE/sfx" -H "Authorization: Bearer $KEY"
Cari Klipy, atau daftar yang sedang tren. kind adalah gif, sticker, atau clip (klip reaksi). Tempatkan hasil dengan id sebagai source_id dan mp4.url sebagai mp4_url; stiker juga memerlukan image.url sebagai image_url.
Permintaan
curl "$BASE/gifs/search?q=mind%20blown&kind=sticker&per_page=10" \-H "Authorization: Bearer $KEY"
Respons
{"items": [{"id": "s9","slug": "mind-blown-sticker","title": "Mind Blown","kind": "sticker","mp4": { "url": "https://….webm", "width": 320, "height": 320 },"preview": { "url": "https://….webp", "width": 160, "height": 160 },"image": { "url": "https://….webp", "width": 320, "height": 320 }}],"page": 1,"per_page": 10,"has_next": true}
Cari musik latar. genre, duration_min, duration_max opsional.
Permintaan
curl "$BASE/music/search?q=upbeat" -H "Authorization: Bearer $KEY"
Ambil trek ke perpustakaan Anda agar kompilasi dapat menggunakannya.
Permintaan
curl -X POST "$BASE/music/tracks/a1b2c3/select" \-H "Authorization: Bearer $KEY"
Akun
Saldo token Anda: total, dicadangkan oleh pekerjaan yang sedang berjalan, dan tersedia.
Permintaan
curl "$BASE/billing/balance" -H "Authorization: Bearer $KEY"
Respons
{"balance": 120,"reserved": 3,"available": 117,"total_purchased": 200,"total_spent": 80}
Apa yang Anda gunakan selama period hari terakhir (1–365).
Permintaan
curl "$BASE/billing/usage?period=30" -H "Authorization: Bearer $KEY"
Respons
{"period_days": 30,"tokens_spent": 42,"tokens_purchased": 0,"uploads_count": 6,"exports_count": 11,"minutes_processed": 38.5,"minutes_exported": 7.9}
Error
Error membawa kode yang bisa dibaca mesin:
{"detail": {"error": "insufficient_tokens","message": "Not enough tokens for this operation"}}
Kode umum: api_access_required / session_auth_required (403), subscription_required (403, menamai feature paket), insufficient_tokens (402), export_in_progress / export_expired (409). Kunci yang buruk atau dicabut mengembalikan 401; melebihi batas laju mengembalikan 429.
Biaya token
Dihitung persis seperti aplikasi — 1 token = 1 menit sumber untuk memproses unggahan atau impor YouTube; ekspor dikenakan biaya sesuai aturan aplikasi (kompilasi berdasarkan detik sumber yang diputar); terjemahan caption klip berharga 1 token. Saran, Auto-edit, pengaturan, analisis tata letak, pengukuran audio, dan transkripsi ulang tidak menghabiskan token. Tidak ada penagihan API terpisah.