Solusi upload & penyimpanan gambar yang ringan, aman, dan mudah diintegrasikan ke aplikasi apapun.
Apa saja yang tersedia di Storage API Mini?
Setiap request upload dilindungi API Key permanen yang dikelola dari dashboard.
Token upload bertanda tangan HMAC-SHA256, dilindungi secret key saat request.
Gambar otomatis di-resize ke original, medium (800px), dan thumb (200px).
Mendukung JPEG, PNG, dan WebP dengan batas ukuran 5MB per file.
Endpoint yang tersedia di Storage API Mini.
Mendapatkan token upload yang ditandatangani HMAC-SHA256.
Wajib menyertakan API Key via header X-API-KEY atau query param ?api_key=.
| Header / Param | Tipe | Keterangan |
|---|---|---|
| X-API-KEY (header) | string required | API Key yang valid dari dashboard. |
| api_key (query) | string | Alternatif via query param bila tidak bisa set header. |
# Via header (direkomendasikan) curl "https://storage.testdev.my.id/token.php" -H "X-API-KEY: your_api_key_here" # Via query param curl "https://storage.testdev.my.id/token.php?api_key=your_api_key_here"
{
"token": "dGltZXN0YW1wfHNpZ25hdHVyZQ==",
"expire": 1740000300
}
Upload file gambar. Wajib menyertakan API Key di header dan token yang valid di form data.
| Header | Tipe | Keterangan |
|---|---|---|
| X-API-KEY | string required | API Key yang valid dan belum expired. |
| Field | Tipe | Keterangan |
|---|---|---|
| token | string required | Token dari /token.php. |
| file | file required | File gambar JPEG / PNG / WebP, maks 5MB. |
| folder | string optional | Sub-folder tujuan upload, pisahkan level dengan /. Contoh: products/2024. Maks 5 level, hanya huruf kecil, angka, - dan _. |
# Step 1: Ambil token TOKEN=$(curl -s "https://storage.testdev.my.id/token.php" \ -H "X-API-KEY: your_api_key_here" \ | python3 -c "import sys,json; print(json.load(sys.stdin)['token'])") # Step 2a: Upload tanpa folder (ke root) curl -X POST https://storage.testdev.my.id/upload.php \ -H "X-API-KEY: your_api_key_here" \ -F "token=$TOKEN" \ -F "file=@/path/to/image.jpg" # Step 2b: Upload ke sub-folder products/2024 curl -X POST https://storage.testdev.my.id/upload.php \ -H "X-API-KEY: your_api_key_here" \ -F "token=$TOKEN" \ -F "folder=products/2024" \ -F "file=@/path/to/image.jpg"
Hapus banyak file sekaligus atau hapus satu folder penuh (termasuk original, medium, thumb). Wajib menyertakan API Key di header dan token valid.
| Header | Tipe | Keterangan |
|---|---|---|
| X-API-KEY | string required | API Key yang valid dan belum expired. |
# Step 1: Ambil token TOKEN=$(curl -s "https://storage.testdev.my.id/token.php" \ -H "X-API-KEY: your_api_key_here" \ | python3 -c "import sys,json; print(json.load(sys.stdin)['token'])") # Step 2: Hapus banyak file sekaligus curl -X POST "https://storage.testdev.my.id/delete.php" \ -H "X-API-KEY: your_api_key_here" \ -H "Content-Type: application/json" \ -d '{ "token": "'"$TOKEN"'", "action": "files", "files": [ "products/2024/img_a.jpg", "products/2024/img_b.jpg" ] }'
curl -X POST "https://storage.testdev.my.id/delete.php" \
-H "X-API-KEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"token": "'"$TOKEN"'",
"action": "folder",
"folder": "products/2024"
}'
Ikuti langkah-langkah berikut untuk mengintegrasikan Storage API.
Login ke Admin Dashboard lalu generate API Key. Simpan key dengan aman.
Ke Dashboard
Request token dari /token.php menggunakan API Key di header X-API-KEY.
POST ke /upload.php dengan API Key di header dan token di form data.
Format response yang dikembalikan oleh API.
{
"status": "ok",
"filename": "img_6789abcd1234.jpg",
"folder": "products/2024", // null jika tanpa folder
"original": "https://domain.com/uploads/original/products/2024/img_xxx.jpg",
"medium": "https://domain.com/uploads/medium/products/2024/img_xxx.jpg",
"thumb": "https://domain.com/uploads/thumbs/products/2024/img_xxx.jpg"
}
{
"error": "API Key tidak valid"
}
// Kemungkinan lainnya:
"error": "Token wajib disertakan"
"error": "Token expired"
"error": "Token tidak valid"
{
"error": "File tidak ada"
}
"error": "File terlalu besar (maks 5MB)"
"error": "Tipe file tidak diizinkan (JPEG, PNG, WebP)"