Saat memanggil Sora 2 API untuk menghasilkan video, jika nilai yang dimasukkan pada parameter seconds tidak didukung, sistem akan segera mengembalikan kesalahan invalid_value. Artikel ini akan menganalisis secara mendalam penyebab utama dari kesalahan Invalid value: '10'. Supported values are: '4', '8', and '12' dan memberikan solusi perbaikan yang lengkap.
Nilai Utama: Setelah membaca artikel ini, Anda akan memahami perbedaan parameter durasi antara Sora 2 versi Standar dan Pro, serta belajar cara mengatur parameter seconds dengan benar untuk menghindari penolakan permintaan pembuatan video.

Analisis Penyebab Kesalahan Parameter seconds pada Sora 2 API
Saat Anda memanggil Sora 2 API, jika melihat pesan kesalahan seperti berikut:
{
"message": "Invalid value: '10'. Supported values are: '4', '8', and '12'.",
"data": {
"error": {
"code": "invalid_value",
"message": "Invalid value: '10'. Supported values are: '4', '8', and '12'.",
"param": "seconds",
"type": "invalid_request_error"
}
}
}
Ini menandakan bahwa nilai parameter seconds yang Anda masukkan (dalam contoh ini 10) berada di luar rentang yang diizinkan oleh API.
Mekanisme Validasi Ketat Parameter Durasi Sora 2 API
Sora 2 API memiliki validasi nilai tetap untuk durasi video, dan tidak mendukung sembarang jumlah detik:
| Bidang Kesalahan | Arti | Penjelasan |
|---|---|---|
| code | invalid_value |
Nilai parameter tidak valid |
| param | seconds |
Nama parameter yang bermasalah |
| type | invalid_request_error |
Tipe kesalahan permintaan tidak valid |
| message | Daftar nilai yang didukung | Memberitahu Anda nilai mana yang sah |
Mengapa Sora 2 API Membatasi Durasi Tetap?
Dalam versi pratinjau Sora 2, OpenAI sengaja membatasi opsi nilai durasi video karena beberapa alasan:
- Optimasi Sumber Daya Komputasi: Durasi tetap memudahkan alokasi sumber daya GPU sebelumnya.
- Konsistensi Kualitas: Durasi prasetel telah dioptimalkan agar hasil generasi lebih stabil.
- Kontrol Biaya: Membatasi durasi mencegah pengguna secara tidak sengaja menghasilkan biaya tinggi.
- Karakteristik Model: Sora 2 memiliki konsistensi antar-frame terbaik pada durasi tertentu.
🎯 Catatan Penting: Nilai durasi yang didukung oleh Sora 2 versi Standar dan Pro sangat berbeda, Anda harus memilih nilai parameter yang benar sesuai dengan model yang digunakan.

Perbandingan Parameter Durasi Sora 2 Standar vs Versi Pro
Ini adalah penyebab error yang paling umum: salah membedakan parameter antara versi Standar dan versi Pro.
Durasi yang Didukung Sora 2 Standar (sora-2)
| Nilai Durasi | Deskripsi | Skenario Rekomendasi |
|---|---|---|
| 4 | Video 4 detik (nilai default) | Loop pendek, pengganti GIF, pengujian |
| 8 | Video 8 detik | Presentasi produk, media sosial |
| 12 | Video 12 detik | Adegan lengkap, potongan iklan |
Durasi yang Didukung Sora 2 Pro (sora-2-pro)
| Nilai Durasi | Deskripsi | Skenario Rekomendasi |
|---|---|---|
| 10 | Video 10 detik | Konten komersial standar |
| 15 | Video 15 detik | Iklan media sosial |
| 25 | Video 25 detik (Baru) | Narasi lengkap, cerita brand |
Tabel Perbandingan Parameter Lengkap
| Item Perbandingan | sora-2 (Standar) | sora-2-pro (Pro) |
|---|---|---|
| Durasi Didukung | 4, 8, 12 detik | 10, 15, 25 detik |
| Durasi Default | 4 detik | 10 detik |
| Resolusi Maksimum | 1280×720 (720p) | 1792×1024 (1080p) |
| Dukungan Audio | Tidak ada | Audio sinkron |
| Platform Tersedia | APIYI apiyi.com, Resmi | APIYI apiyi.com, Resmi |
💡 Saran Pemilihan: Jika Anda membutuhkan video berdurasi 10 detik, Anda harus menggunakan model
sora-2-pro, bukansora-2. Kami menyarankan untuk melakukan pengujian berbagai kombinasi model dan durasi melalui platform APIYI (apiyi.com) untuk menemukan konfigurasi yang paling sesuai dengan kebutuhan Anda.

3 Solusi Perbaikan untuk Error seconds pada Sora 2 API
Solusi 1: Menggunakan Nilai seconds yang Benar (Versi Standar)
Jika kamu menggunakan model sora-2 versi standar, kamu wajib menggunakan nilai 4, 8, atau 12:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # Menggunakan interface terpadu APIYI
)
# ✅ Benar: Menggunakan nilai durasi yang didukung versi standar
response = client.videos.create(
model="sora-2", # Model versi standar
prompt="A cat playing with a ball in a sunny garden",
seconds=8, # Hanya boleh 4, 8, atau 12
size="1280x720"
)
print(f"Tugas pembuatan video: {response.id}")
🚀 Mulai Cepat: Direkomendasikan menggunakan platform APIYI (apiyi.com) untuk mencoba Sora 2 API dengan cepat. Platform ini menyediakan interface yang siap pakai dan mendukung perpindahan antara model versi Standar dan Pro.
Solusi 2: Beralih ke Versi Pro untuk Durasi yang Lebih Lama
Jika kamu membutuhkan video berdurasi 10, 15, atau 25 detik, kamu harus beralih ke model sora-2-pro:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # Menggunakan interface terpadu APIYI
)
# ✅ Benar: Menggunakan versi Pro untuk durasi yang lebih lama
response = client.videos.create(
model="sora-2-pro", # Model versi Pro
prompt="A cinematic sunrise over mountains with birds flying",
seconds=15, # Versi Pro mendukung 10, 15, 25
size="1792x1024" # Versi Pro mendukung resolusi yang lebih tinggi
)
print(f"Tugas pembuatan video: {response.id}")
Solusi 3: Implementasi Utility Tool untuk Adaptasi Durasi Cerdas
Berikut adalah utility tool tingkat produksi untuk adaptasi parameter durasi, yang secara otomatis menangani kecocokan antara model dan durasi:
import openai
from typing import Literal, Optional
class SoraVideoGenerator:
"""Alat pembuat video Sora 2 API, mengadaptasi parameter durasi secara otomatis"""
# Konfigurasi durasi yang didukung model
MODEL_DURATIONS = {
"sora-2": {
"supported": [4, 8, 12],
"default": 4,
"max_resolution": "1280x720"
},
"sora-2-pro": {
"supported": [10, 15, 25],
"default": 10,
"max_resolution": "1792x1024"
}
}
def __init__(self, api_key: str, base_url: str = "https://api.apiyi.com/v1"):
self.client = openai.OpenAI(api_key=api_key, base_url=base_url)
def get_valid_duration(self, model: str, desired_seconds: int) -> int:
"""Mendapatkan durasi valid yang paling mendekati nilai yang diinginkan"""
if model not in self.MODEL_DURATIONS:
raise ValueError(f"Model tidak didukung: {model}")
supported = self.MODEL_DURATIONS[model]["supported"]
# Jika nilai yang diinginkan valid, langsung kembalikan
if desired_seconds in supported:
return desired_seconds
# Jika tidak, kembalikan nilai valid yang paling mendekati
closest = min(supported, key=lambda x: abs(x - desired_seconds))
print(f"⚠️ Durasi {desired_seconds} detik tidak didukung, otomatis disesuaikan menjadi {closest} detik")
return closest
def suggest_model(self, desired_seconds: int) -> str:
"""Merekomendasikan model yang sesuai berdasarkan durasi yang diinginkan"""
if desired_seconds <= 12:
return "sora-2"
else:
return "sora-2-pro"
def create_video(
self,
prompt: str,
seconds: int,
model: Optional[str] = None,
size: Optional[str] = None,
auto_adjust: bool = True
):
"""
Membuat video, mendukung penyesuaian parameter otomatis
Args:
prompt: Petunjuk deskripsi video
seconds: Durasi yang diinginkan
model: Nama model, jika tidak ditentukan maka akan dipilih otomatis
size: Resolusi
auto_adjust: Apakah akan menyesuaikan parameter yang tidak didukung secara otomatis
"""
# Pilih model secara otomatis
if model is None:
model = self.suggest_model(seconds)
print(f"📌 Memilih model otomatis: {model}")
# Validasi dan sesuaikan durasi
if auto_adjust:
seconds = self.get_valid_duration(model, seconds)
elif seconds not in self.MODEL_DURATIONS[model]["supported"]:
supported = self.MODEL_DURATIONS[model]["supported"]
raise ValueError(
f"Model {model} tidak mendukung {seconds} detik, "
f"nilai yang didukung: {supported}"
)
# Atur resolusi default
if size is None:
size = self.MODEL_DURATIONS[model]["max_resolution"]
# Panggil API
response = self.client.videos.create(
model=model,
prompt=prompt,
seconds=seconds,
size=size
)
return {
"task_id": response.id,
"model": model,
"seconds": seconds,
"size": size
}
# Contoh Penggunaan
generator = SoraVideoGenerator(api_key="YOUR_API_KEY")
# Contoh 1: Pilih model otomatis dan sesuaikan durasi
result = generator.create_video(
prompt="Ocean waves crashing on a beach at sunset",
seconds=10 # Otomatis memilih sora-2-pro
)
print(f"Hasil pembuatan: {result}")
# Contoh 2: Tentukan model, sesuaikan durasi otomatis
result = generator.create_video(
prompt="A coffee cup with steam rising",
seconds=10, # 10 detik tidak valid untuk sora-2
model="sora-2", # Menentukan versi standar
auto_adjust=True # Otomatis disesuaikan menjadi 12 detik atau 8 detik
)
print(f"Hasil pembuatan: {result}")
Lihat kode lengkap (termasuk dukungan asinkron dan mekanisme retry)
import openai
import asyncio
from typing import Literal, Optional, Dict, Any
from dataclasses import dataclass
from enum import Enum
class SoraModel(Enum):
"""Enum Model Sora"""
STANDARD = "sora-2"
PRO = "sora-2-pro"
@dataclass
class ModelConfig:
"""Konfigurasi Model"""
supported_durations: list[int]
default_duration: int
max_resolution: str
has_audio: bool
class SoraVideoGenerator:
"""
Alat Pembuat Video Sora 2 API
Fitur:
- Adaptasi parameter durasi otomatis
- Pemilihan model otomatis
- Validasi parameter
- Mekanisme retry
"""
MODELS: Dict[str, ModelConfig] = {
"sora-2": ModelConfig(
supported_durations=[4, 8, 12],
default_duration=4,
max_resolution="1280x720",
has_audio=False
),
"sora-2-pro": ModelConfig(
supported_durations=[10, 15, 25],
default_duration=10,
max_resolution="1792x1024",
has_audio=True
)
}
RESOLUTIONS = {
"720p_landscape": "1280x720",
"720p_portrait": "720x1280",
"1080p_landscape": "1792x1024",
"1080p_portrait": "1024x1792",
}
def __init__(
self,
api_key: str,
base_url: str = "https://api.apiyi.com/v1",
max_retries: int = 3
):
self.client = openai.OpenAI(api_key=api_key, base_url=base_url)
self.max_retries = max_retries
def validate_model(self, model: str) -> ModelConfig:
"""Validasi model dan kembalikan konfigurasi"""
if model not in self.MODELS:
available = list(self.MODELS.keys())
raise ValueError(f"Model tidak didukung: {model}, model tersedia: {available}")
return self.MODELS[model]
def get_valid_duration(self, model: str, desired: int) -> int:
"""Mendapatkan durasi valid yang paling mendekati nilai yang diinginkan"""
config = self.validate_model(model)
supported = config.supported_durations
if desired in supported:
return desired
closest = min(supported, key=lambda x: abs(x - desired))
return closest
def suggest_model_for_duration(self, seconds: int) -> str:
"""Merekomendasikan model berdasarkan durasi yang diinginkan"""
# Cek apakah versi standar mendukung
if seconds in self.MODELS["sora-2"].supported_durations:
return "sora-2"
# Cek apakah versi Pro mendukung
if seconds in self.MODELS["sora-2-pro"].supported_durations:
return "sora-2-pro"
# Default pilih berdasarkan durasi
return "sora-2" if seconds <= 12 else "sora-2-pro"
def create_video(
self,
prompt: str,
seconds: int,
model: Optional[str] = None,
size: Optional[str] = None,
auto_adjust: bool = True
) -> Dict[str, Any]:
"""
Membuat video
Args:
prompt: Petunjuk deskripsi video
seconds: Durasi video yang diinginkan (detik)
model: Nama model, jika None maka akan dipilih otomatis
size: Resolusi, jika None maka gunakan nilai default model
auto_adjust: Apakah akan menyesuaikan parameter yang tidak didukung secara otomatis
Returns:
Dictionary berisi informasi tugas
Raises:
ValueError: Parameter tidak valid dan auto_adjust=False
"""
# Pilih model secara otomatis
if model is None:
model = self.suggest_model_for_duration(seconds)
config = self.validate_model(model)
# Menangani parameter durasi
original_seconds = seconds
if seconds not in config.supported_durations:
if auto_adjust:
seconds = self.get_valid_duration(model, seconds)
print(f"⚠️ Durasi telah disesuaikan: {original_seconds} detik → {seconds} detik")
else:
raise ValueError(
f"Model {model} tidak mendukung {seconds} detik, "
f"nilai yang didukung: {config.supported_durations}"
)
# Mengatur resolusi
if size is None:
size = config.max_resolution
# Memanggil API (dengan retry)
last_error = None
for attempt in range(self.max_retries):
try:
response = self.client.videos.create(
model=model,
prompt=prompt,
seconds=seconds,
size=size
)
return {
"success": True,
"task_id": response.id,
"model": model,
"seconds": seconds,
"size": size,
"has_audio": config.has_audio,
"adjusted": original_seconds != seconds
}
except Exception as e:
last_error = e
if attempt < self.max_retries - 1:
wait_time = 2 ** attempt
print(f"⏳ Permintaan gagal, mencoba lagi dalam {wait_time} detik...")
import time
time.sleep(wait_time)
return {
"success": False,
"error": str(last_error),
"model": model,
"seconds": seconds
}
@staticmethod
def get_duration_info() -> str:
"""Mendapatkan informasi bantuan parameter durasi"""
info = ["Keterangan parameter durasi Sora 2 API:", ""]
for model, config in SoraVideoGenerator.MODELS.items():
durations = ", ".join(map(str, config.supported_durations))
info.append(f" {model}: {durations} detik")
info.append(f" Default: {config.default_duration} detik")
info.append(f" Resolusi Maksimum: {config.max_resolution}")
info.append(f" Audio: {'Mendukung' if config.has_audio else 'Tidak Mendukung'}")
info.append("")
return "\n".join(info)
# Contoh Penggunaan
if __name__ == "__main__":
# Cetak informasi bantuan
print(SoraVideoGenerator.get_duration_info())
# Inisialisasi generator
generator = SoraVideoGenerator(api_key="YOUR_API_KEY")
# Contoh 1: Biarkan tool memilih konfigurasi terbaik secara otomatis
result = generator.create_video(
prompt="A serene lake reflecting autumn trees",
seconds=10
)
print(f"Hasil: {result}")
# Contoh 2: Paksa menggunakan model tertentu
result = generator.create_video(
prompt="Quick product showcase",
seconds=5,
model="sora-2",
auto_adjust=True # 5 detik akan disesuaikan menjadi 4 detik
)
print(f"Hasil: {result}")
Praktik Terbaik Parameter Durasi Sora 2 API
Memilih Durasi yang Tepat Berdasarkan Skenario
| Skenario Penggunaan | Model Rekomendasi | Durasi Rekomendasi | Penjelasan |
|---|---|---|---|
| Pengujian API | sora-2 | 4s | Validasi cepat, menghemat kuota |
| Media Sosial | sora-2 | 8s | Adaptasi untuk Instagram/TikTok |
| Presentasi Produk | sora-2 | 12s | Menampilkan fitur produk secara lengkap |
| Iklan Brand | sora-2-pro | 15s | Durasi standar iklan |
| Narasi Cerita | sora-2-pro | 25s | Alur cerita yang lengkap |
Hubungan Antara Durasi dan Kualitas Generasi
Berdasarkan saran resmi OpenAI dan pengalaman pengujian langsung:
| Durasi | Konsistensi Antar Frame | Kontinuitas Gerakan | Indeks Rekomendasi |
|---|---|---|---|
| 4s | ★★★★★ | ★★★★★ | Pilihan utama pengujian |
| 8s | ★★★★☆ | ★★★★☆ | Rekomendasi harian |
| 12s | ★★★★☆ | ★★★☆☆ | Perlu optimasi petunjuk |
| 15s (Pro) | ★★★★☆ | ★★★★☆ | Rekomendasi komersial |
| 25s (Pro) | ★★★☆☆ | ★★★☆☆ | Perlu petunjuk yang mendetail |
💰 Optimasi Biaya: Untuk proyek yang sensitif terhadap anggaran, disarankan untuk menguji efek petunjuk dengan durasi 4 detik terlebih dahulu. Setelah merasa puas, barulah generate versi yang lebih panjang. Melalui platform APIYI apiyi.com, Anda bisa mendapatkan harga panggilan API yang lebih terjangkau.
Solusi Alternatif untuk Video Berdurasi Panjang
Jika Anda membutuhkan video lebih dari 25 detik, Anda dapat menggunakan strategi berikut:
def create_long_video_segments(generator, prompt_segments, model="sora-2"):
"""
Membuat skema pembuatan video panjang secara bertahap
Args:
generator: Instance SoraVideoGenerator
prompt_segments: Daftar petunjuk tiap segmen
model: Model yang digunakan
"""
results = []
config = generator.MODELS[model]
max_duration = max(config.supported_durations)
for i, segment_prompt in enumerate(prompt_segments):
print(f"Menghasilkan segmen {i+1}/{len(prompt_segments)}...")
result = generator.create_video(
prompt=segment_prompt,
seconds=max_duration,
model=model
)
results.append(result)
return results
# Contoh penggunaan: Menghasilkan video 36 detik (3 x 12 detik)
prompt_segments = [
"Opening shot: A sunrise over a mountain range, golden light spreading",
"Middle shot: Birds taking flight from the trees, camera follows",
"Closing shot: The sun fully risen, peaceful valley below"
]
generator = SoraVideoGenerator(api_key="YOUR_API_KEY")
segments = create_long_video_segments(generator, prompt_segments)
# Selanjutnya gunakan FFmpeg untuk menggabungkan segmen
Tanya Jawab Masalah Error Durasi Sora 2 API
Q1: Mengapa input seconds=10 menyebabkan error?
Ini karena Anda menggunakan model standar sora-2, yang hanya mendukung 4, 8, dan 12 detik. Jika Anda memerlukan video 10 detik, ada dua pilihan:
- Ganti Model: Gunakan
sora-2-proyang mendukung 10, 15, dan 25 detik. - Sesuaikan Durasi: Ubah menjadi 8 detik atau 12 detik.
Melalui platform APIYI apiyi.com, Anda dapat dengan mudah berpindah antar model untuk melakukan pengujian.
Q2: Mengapa durasi sora-2 dan sora-2-pro tidak tumpang tindih?
OpenAI sengaja merancang parameter durasi kedua versi ini agar tidak tumpang tindih:
- sora-2: 4, 8, 12 detik (Skenario video pendek)
- sora-2-pro: 10, 15, 25 detik (Skenario konten komersial)
Desain ini membantu pengguna memilih model secara spesifik sesuai kebutuhan dan menghindari kebingungan. Titik awal durasi versi Pro (10 detik) sengaja dibuat lebih tinggi dari nilai umum pada versi standar (kecuali nilai maksimal 12 detik).
Q3: Parameter durasi sebaiknya menggunakan string atau integer?
Berdasarkan spesifikasi OpenAI API, parameter seconds harus menggunakan tipe data integer:
# ✅ Benar: Menggunakan integer
seconds=8
# ❌ Salah: Menggunakan string
seconds="8"
Meskipun beberapa SDK akan melakukan konversi otomatis, disarankan untuk selalu menggunakan integer guna menghindari masalah kompatibilitas.
Q4: Bagaimana cara menghindari error pada parameter seconds?
Praktik terbaik adalah melakukan validasi parameter sebelum melakukan panggilan API:
VALID_DURATIONS = {
"sora-2": [4, 8, 12],
"sora-2-pro": [10, 15, 25]
}
def validate_seconds(model, seconds):
valid = VALID_DURATIONS.get(model, [])
if seconds not in valid:
raise ValueError(f"Durasi yang didukung {model}: {valid}")
return True
Saat menggunakan layanan dari APIYI apiyi.com, dokumentasi menyediakan penjelasan parameter yang lengkap sehingga Anda bisa memahami batasan tiap model sebelumnya.
Q5: Apakah durasi kustom akan didukung di masa mendatang?
Saat ini OpenAI belum mengumumkan rencana untuk durasi kustom. Durasi tetap adalah batasan desain pada versi pratinjau Sora 2, terutama karena alasan:
- Manajemen sumber daya komputasi
- Jaminan kualitas hasil generasi
- Kontrol biaya
Disarankan untuk memantau blog resmi OpenAI untuk mendapatkan pembaruan terbaru.
Lembar Referensi Cepat Parameter seconds API Sora 2
Untuk memudahkan pencarian cepat, berikut adalah lembar referensi lengkap untuk parameter durasi:
| Model | Durasi yang Didukung | Nilai Default | Resolusi Maksimum | Audio |
|---|---|---|---|---|
| sora-2 | 4, 8, 12 detik | 4 detik | 1280×720 | Tidak ada |
| sora-2-pro | 10, 15, 25 detik | 10 detik | 1792×1024 | Ada |
Nilai Kesalahan Umum dan Saran Perbaikan
| Nilai seconds yang Salah | Menggunakan sora-2 | Menggunakan sora-2-pro |
|---|---|---|
| 5 | Ubah menjadi 4 atau 8 | Ubah menjadi 10 |
| 6 | Ubah menjadi 8 | Ubah menjadi 10 |
| 10 | Ubah menjadi 8 atau 12 | ✅ Valid |
| 15 | Ubah menjadi 12 | ✅ Valid |
| 20 | Ubah menjadi 12 | Ubah menjadi 15 atau 25 |
| 30 | Ubah menjadi 12 | Ubah menjadi 25 |
📌 Tips: Platform yang tersedia mencakup APIYI (apiyi.com), API resmi OpenAI, dll. Disarankan untuk menggunakan platform dengan harga yang lebih terjangkau selama tahap pengembangan dan pengujian.
Kesimpulan
Error pada parameter seconds di API Sora 2 adalah masalah yang sering ditemui pengembang. Ide solusi utamanya adalah:
- Bedakan model: sora-2 mendukung 4/8/12 detik, sedangkan sora-2-pro mendukung 10/15/25 detik.
- Cocokkan parameter: Pilih nilai durasi yang tepat sesuai dengan model yang Anda gunakan.
- Validasi parameter: Verifikasi validitas parameter sebelum melakukan pemanggilan API.
- Adaptasi otomatis: Gunakan kelas utilitas (utility class) untuk menangani pencocokan model dan durasi secara otomatis.
Direkomendasikan untuk mencoba melalui APIYI (apiyi.com) guna menguji berbagai kombinasi model dan durasi dengan cepat demi menemukan konfigurasi terbaik.
Penulis: APIYI Team | Untuk tips pengembangan AI lainnya, silakan kunjungi apiyi.com
Referensi:
- Dokumentasi API OpenAI Sora: Penjelasan Parameter Pembuatan Video
- Tautan:
platform.openai.com/docs/api-reference/videos
- Tautan:
- Penjelasan Model OpenAI Sora 2: Spesifikasi dan Batasan Model
- Tautan:
platform.openai.com/docs/models/sora-2
- Tautan:
- Panduan Kode Error OpenAI: Penanganan Error API
- Tautan:
platform.openai.com/docs/guides/error-codes
- Tautan:
