/v1/videos). Anda dapat menggunakan SDK resmi OpenAI (openai di Python atau Node.js) secara langsung dengan mengarahkan base_url ke gateway Neosantara.
from openai import OpenAI
import time
import os
client = OpenAI(
base_url="https://api.neosantara.xyz/v1",
api_key=os.environ["NEOSANTARA_API_KEY"]
)
# 1. Kirim tugas pembuatan video (OpenAI Sora Compatible)
video = client.videos.create(
model="luma-ray2-720p",
prompt="Drone meluncur di atas ombak pantai Uluwatu saat senja, gerak lambat sinematik.",
seconds=5,
size="1280x720"
)
print(f"Tugas video dibuat: {video.id}")
# 2. Polling status hingga selesai
while True:
job = client.videos.retrieve(video.id)
progress = getattr(job, "progress", 0)
print(f"Status: {job.status} ({progress}%)")
if job.status == "completed":
print(f"Video siap! URL Unduhan: https://api.neosantara.xyz/v1/videos/{video.id}/content")
break
elif job.status == "failed":
print("Gagal:", getattr(job, "error", "Unknown error"))
break
time.sleep(10)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.neosantara.xyz/v1",
apiKey: process.env.NEOSANTARA_API_KEY,
});
// 1. Buat tugas video
const video = await client.videos.create({
model: "luma-ray2-720p",
prompt: "Drone meluncur di atas ombak pantai Uluwatu saat senja, gerak lambat.",
seconds: 5,
size: "1280x720",
});
console.log("Job Dibuat:", video.id);
// 2. Poll status penyelesaian
let status = video.status;
while (status !== "completed" && status !== "failed") {
await new Promise((resolve) => setTimeout(resolve, 10000));
const job = await client.videos.retrieve(video.id);
status = job.status;
console.log(`Status: ${status}`);
}
if (status === "completed") {
console.log(`Video URL: https://api.neosantara.xyz/v1/videos/${video.id}/content`);
}
# 1. Membuat tugas video
curl -X POST https://api.neosantara.xyz/v1/videos \
-H "Authorization: Bearer $NEOSANTARA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "luma-ray2-720p",
"prompt": "Drone meluncur di atas ombak pantai Uluwatu saat senja.",
"seconds": 5,
"size": "1280x720"
}'
# 2. Mengecek status tugas
curl https://api.neosantara.xyz/v1/videos/vid_123456 \
-H "Authorization: Bearer $NEOSANTARA_API_KEY"
# 3. Mengunduh konten video final
curl -L https://api.neosantara.xyz/v1/videos/vid_123456/content \
-H "Authorization: Bearer $NEOSANTARA_API_KEY" \
-o hasil_video.mp4
Parameter Permintaan
| Parameter | Tipe | Wajib | Keterangan |
|---|---|---|---|
prompt | string | Ya | Deskripsi adegan, gerakan kamera, dan pencahayaan video. |
model | string | Ya | luma-ray2-720p atau luma-ray2-540p. |
seconds | integer | Opsional | Durasi video dalam detik (contoh: 5 atau 9). Default 5. |
size | string | Opsional | Resolusi keluaran: "1280x720" atau "960x540". |
Status Siklus Tugas Video
| Status | Deskripsi |
|---|---|
queued | Permintaan masuk antrean generator video upstream. |
in_progress | Rendering video sedang berlangsung dengan progres 0-99%. |
completed | Rendering selesai. URL video berdurasi tertentu tersedia untuk diunduh. |
failed | Pembuatan video gagal. Saldo tidak terpotong atau otomatis dikembalikan ke akun Anda. |