Skip to content

Mengunggah Berkas dengan API Token

Unggahan melalui API Token ditujukan untuk skrip, pekerjaan otomatis, dan aplikasi pihak ketiga. Anda tidak perlu membuka antarmuka web ImgHost; cukup berikan alamat situs, API Token, jalur berkas lokal, dan kanal unggahan yang nyata. Setelah unggahan berhasil, skrip akan mengembalikan tautan berkas.

Edit API Token

Persiapan

Buka panel admin:

text
System Settings -> Security Settings -> API Token

Saat membuat atau mengedit API Token, pastikan izin unggah aktif dan kanal unggahan bawaan adalah kanal nyata. Unggahan API Token tidak memakai pembagian cerdas, jadi jangan kirim __smart__ dari skrip. Gunakan kunci kanal nyata seperti s3, github, atau telegram.

Mengunduh Skrip Unggahan

Dokumentasi ImgHost menyediakan dua skrip Node.js:

SkripKegunaan
skrip unggahan satu permintaanMemanggil /upload satu kali saja; cocok untuk berkas kecil dan uji koneksi antarmuka
skrip unggahan bertahapMemakai unggahan bertahap, unggahan langsung, atau sesi platform sesuai kanal; cocok untuk berkas besar

Skrip membutuhkan Node.js 18 atau versi yang lebih baru.

Melihat Kanal yang Tersedia

Kedua skrip dapat menampilkan kanal unggahan yang tersedia untuk API Token saat ini:

powershell
node imghost-token-single-upload.mjs --base-url "https://your-domain" --token "your API Token" --list-channels
node imghost-token-chunk-upload.mjs --base-url "https://your-domain" --token "your API Token" --list-channels

Pada mode ini, --file dan --channel tidak diperlukan. Hasilnya berisi kanal bawaan, kunci kanal utama, nama subkanal, dan status penyeimbangan beban. Kunci rahasia, token penyegaran, dan konfigurasi sensitif tidak dikembalikan.

Memilih Cara Unggah

CaraKapan dipakaiPerilaku
Unggahan satu permintaanBerkas kecil, skrip sederhana, uji antarmukaMengirim seluruh berkas ke /upload dalam satu permintaan
Unggahan bertahapBerkas besar atau berkas yang rawan melewati batas waktuMemakai bagian, unggahan langsung, atau sesi platform sesuai kanal

Untuk berkas besar, gunakan skrip unggahan bertahap terlebih dahulu. Unggahan satu permintaan dipengaruhi batas ukuran permintaan Cloudflare, memori Worker, dan batas platform tujuan.

Unggahan Satu Permintaan

Skrip ini mengirim seluruh berkas ke /upload dalam satu permintaan:

powershell
node imghost-token-single-upload.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --file "D:\test\image.png" `
  --channel s3 `
  --folder "photos/2026"

API Token juga dapat disimpan dalam variabel lingkungan:

powershell
$env:IMGHOST_API_TOKEN="your API Token"
node imghost-token-single-upload.mjs --base-url "https://your-domain" --file "D:\test\image.png" --channel s3

Parameter Unggahan Satu Permintaan

ParameterWajibKeterangan
--base-url <url>YaAlamat situs ImgHost, misalnya https://image.ai6.me
--token <token>YaAPI Token; dapat diganti dengan variabel lingkungan IMGHOST_API_TOKEN
--file <path>YaJalur berkas lokal
--channel <key>YaKanal unggahan nyata
--folder <path>TidakFolder tujuan, misalnya photos/2026 atau /user/
--name-type <type>TidakCara penamaan; sesuai dengan uploadNameType di sisi server, bawaan default
--channel-name <name>TidakMemilih subkanal atau akun tertentu; bila kosong, server memilih sesuai konfigurasi kanal
--retries <n>TidakJumlah percobaan ulang saat gagal sementara; bawaan 3
--timeout-ms <n>TidakBatas waktu satu permintaan dalam milidetik; bawaan 180000
--output <pretty|json>TidakBentuk keluaran; bawaan pretty
--save-response <path>TidakMenyimpan hasil akhir sebagai berkas JSON
--list-channelsTidakHanya menampilkan kanal dan tidak mengunggah berkas

Kunci Kanal

Kunci kanalKanal
telegram / tgTelegram
discord / dcDiscord
cfr2 / r2Cloudflare R2
s3S3
webdav / wdKanal penyimpanan WebDAV
github / ghGitHub Releases
gitlab / glGitLab Packages
huggingface / hfHugging Face
onedrive / odOneDrive
googledrive / google / gdGoogle Drive
dropbox / dbDropbox
yandex / yxYandex Disk
pcloud / pdpCloud

Batas Ukuran Unggahan Satu Permintaan

Untuk unggahan satu permintaan, sebaiknya berkas berada di bawah 100 MB. Kanal berikut memiliki batas lokal yang jelas di skrip:

KanalBatas
Telegram20 MiB
Discord10 MiB
S364 MiB
WebDAV64 MiB
GitHub Releases64 MiB
GitLab Packages64 MiB

Jika ukuran berkas melewati batas, skrip menampilkan galat lokal sebelum mengirim permintaan. Kanal lain tidak diberi batas lokal tetap 100 MB; jika permintaan terlalu besar, galat akan datang dari Cloudflare atau platform tujuan.

Unggahan Bertahap

Skrip unggahan bertahap terlebih dahulu meminta server menentukan tujuan unggahan memakai API Token, lalu menjalankan alur berkas besar milik kanal yang dipilih. Pengguna tidak perlu menulis sendiri pembuatan sesi, pengiriman bagian, penggabungan, atau permintaan penyelesaian.

powershell
node imghost-token-chunk-upload.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --file "D:\test\video.zip" `
  --channel github `
  --folder "photos/2026" `
  --concurrency 3

Parameter Unggahan Bertahap

ParameterWajibKeterangan
--base-url <url>YaAlamat situs ImgHost
--token <token>YaAPI Token; dapat diganti dengan variabel lingkungan IMGHOST_API_TOKEN
--file <path>YaJalur berkas lokal
--channel <key>YaKanal unggahan nyata
--folder <path>TidakFolder tujuan
--name-type <type>TidakCara penamaan; sesuai dengan uploadNameType di sisi server, bawaan default
--channel-name <name>TidakSubkanal atau akun tertentu
--concurrency <n>TidakJumlah unggahan serentak; bawaan 1, maksimum 3
--retries <n>TidakJumlah percobaan ulang saat gagal sementara; bawaan 3
--timeout-ms <n>TidakBatas waktu tiap permintaan dalam milidetik; bawaan 180000
--output <pretty|json>TidakBentuk keluaran; bawaan pretty
--save-response <path>TidakMenyimpan hasil akhir sebagai berkas JSON
--list-channelsTidakHanya menampilkan kanal dan tidak mengunggah berkas

Jalur Unggahan Bertahap

Kunci kanalJalur unggahan
telegram / tgSesi bertahap nyata melalui /upload
discord / dcSesi bertahap nyata melalui /upload
cfr2 / r2Sesi bertahap nyata melalui /upload
github / ghSesi bertahap nyata melalui /upload
gitlab / glSesi bertahap nyata melalui /upload
webdav / wdSesi bertahap nyata melalui /upload
s3Unggahan multipart S3
onedrive / odSesi unggahan OneDrive
googledrive / google / gdUnggahan Google Drive yang dapat dilanjutkan
dropbox / dbSesi unggahan Dropbox
yandex / yxTautan unggahan langsung Yandex
pcloud / pdTautan unggahan pCloud
huggingface / hfUnggahan Hugging Face LFS

Dalam pengujian, berkas arsip atau berkas terkompresi di Yandex tidak stabil. Saat memakai kanal Yandex, pilih berkas nonarsip.

Hasil

Saat unggahan berhasil, skrip menampilkan hasil seperti ini:

text
success
src: /file/photos/2026/example.png
url: https://your-domain/file/photos/2026/example.png
fileId: photos/2026/example.png
KolomKeterangan
srcJalur berkas di dalam situs
urlTautan akses lengkap, siap disimpan di skrip atau basis data Anda
fileIdID berkas untuk pencarian, pengelolaan, atau pencatatan berikutnya
channelNamePada unggahan bertahap, dapat berisi subkanal atau akun yang benar-benar dipakai

Dengan --output json, skrip menampilkan JSON lengkap agar mudah diproses program.

Memanggil Antarmuka Satu Permintaan Secara Langsung

Tanpa skrip, antarmuka unggahan satu permintaan juga dapat dipanggil langsung:

text
POST https://your-domain/upload?uploadChannel=s3&uploadFolder=photos/2026&uploadNameType=default
Authorization: Bearer your API Token
Content-Type: multipart/form-data

Kolom formulir:

KolomWajibKeterangan
fileYaBerkas yang akan diunggah

Parameter kueri:

ParameterWajibKeterangan
uploadChannelYaKanal unggahan nyata
uploadFolderTidakFolder tujuan
uploadNameTypeTidakCara penamaan
channelNameTidakSubkanal atau akun tertentu

Jika berhasil, antarmuka mengembalikan hasil seperti ini:

json
{
  "success": true,
  "src": "/file/photos/2026/example.png",
  "url": "https://your-domain/file/photos/2026/example.png",
  "fileId": "photos/2026/example.png"
}

Tanya Jawab

Berkas besar gagal diunggah dengan satu permintaan

/upload satu permintaan mengirim seluruh berkas sekaligus. Berkas besar dapat tertahan oleh Cloudflare, memori Worker, atau batas platform tujuan. Untuk berkas besar, gunakan skrip unggahan bertahap.

--channel-name sudah diberikan tetapi masih gagal

Pastikan kanal yang dipilih memiliki subkanal dengan nama yang sama persis dan subkanal itu aktif. Jika --channel-name tidak diberikan, server memilih akun yang tersedia sesuai konfigurasi kanal.

Hasil ingin dipakai oleh program lain

Gunakan --output json atau --save-response result.json. Program dapat membaca kolom url dari JSON untuk mendapatkan tautan lengkap.

Arsip gagal diunggah ke Yandex

Yandex tidak mendukung format arsip atau berkas terkompresi secara andal. Hal ini mungkin terkait kebijakan platform. Untuk Yandex, gunakan berkas nonarsip.

Released as user documentation for ImgHost.