file_too_large adalah kode error HTTP 413 pada Se-Hari API. Ukuran berkas yang Anda sebutkan melebihi batas yang bisa kami proses. Pemeriksaan terjadi saat meminta URL unggah, sebelum satu byte pun dikirim — jadi tidak ada bandwidth yang terbuang.
#Bentuk responsnya
Semua error Se-Hari memakai amplop yang sama. Yang perlu dicabang di kode Anda adalah code, bukan message — teks pesan bisa kami perbaiki sewaktu-waktu, sedangkan code adalah kontrak publik yang hanya berubah lewat versi API baru.
{
"error": {
"code": "file_too_large",
"message": "Contoh pesan untuk file_too_large.",
"docs_url": "https://se-hari.com/docs/error/file-too-large",
"request_id": "req_a1b2c3d4e5f6",
"details": {
"max_bytes": 524288000
}
}
}#Kapan ini muncul
Batas ini diperiksa saat Anda meminta URL unggah, bukan saat mengunggah — jadi kode ini muncul sebelum satu byte pun dikirim. Itu penting untuk koneksi Indonesia dengan bandwidth unggah terbatas: Anda tidak akan menunggu setengah jam hanya untuk ditolak di akhir.
#Kenapa ini terjadi
- Rekaman video beresolusi tinggi yang panjang
size_bytesdiisi lebih besar dari ukuran berkas sebenarnya
#Cara memperbaikinya
Untuk notulen, yang dibutuhkan hanyalah audio. Mengekstrak jalur audio dari video biasanya memperkecil berkas sepuluh kali lipat tanpa memengaruhi kualitas transkripsi sedikit pun.
#Yang memicu error
# Mengunggah video mentah 2 GB
ffprobe -v quiet -show_entries format=size -of csv=p=0 rapat.mp4#Yang seharusnya
# Ekstrak audio saja — cukup untuk notulen
ffmpeg -i rapat.mp4 -vn -acodec libmp3lame -ab 64k rapat.mp3
ls -lh rapat.mp3#Aman diulang?
Percuma tanpa perubahan. Perkecil berkasnya lebih dulu. Karena penolakan terjadi saat presign, tidak ada bandwidth yang terbuang dan tidak ada rekaman setengah jadi yang perlu dibersihkan.
#Jangan tertukar dengan
Kalau berkasnya berukuran wajar tapi formatnya tidak didukung, kodenya unsupported_media_type. Kalau berkas berhasil diunggah tapi ternyata tidak punya audio, kodenya unprocessable_entity dan muncul belakangan, saat pemrosesan dimulai — bukan saat unggah.
#Mencegahnya terulang
Untuk notulen, video tidak memberi manfaat apa pun; transkripsi hanya membaca audio. Mengekstrak jalur audio dan menurunkan bitrate-nya ke 64 kbps mono biasanya memperkecil berkas sepuluh sampai dua puluh kali lipat tanpa perubahan yang terdeteksi pada hasil transkripsi. Kalau rekaman Anda memang sangat panjang, memecahnya per sesi rapat menghasilkan notulen yang juga lebih berguna daripada satu notulen raksasa.
#Menangani ini di kode
Cabangkan pada error.code, dan bedakan kegagalan yang layak diulang dari yang tidak. Mengulang kegagalan yang tidak akan pernah berhasil hanya menghabiskan kuota rate limit — dan menyembunyikan kegagalan yang sebenarnya butuh perhatian Anda.
const res = await fetch('https://se-hari.com/api/v1/me', {
headers: { Authorization: `Bearer ${process.env.SEHARI_API_KEY}` }
});
if (!res.ok) {
const { error } = await res.json();
if (error.code === 'file_too_large') {
// Untuk notulen, yang dibutuhkan hanyalah audio. Mengekstrak jalur audio dari video…
console.error(error.message, error.details);
}
// request_id adalah satu-satunya cara kami menemukan request ini di log.
console.error(`request_id: ${error.request_id}`);
}#Selanjutnya
- Semua kode error — daftar lengkap
- Autentikasi — scope dan siklus hidup API key
- Referensi API — error apa saja yang mungkin muncul di tiap endpoint