# Uploader — Zapi reference > Every Uploader endpoint on Zapi, with parameters, request shape and an example response. **Base URL:** `https://api.zpi.web.id` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a key at https://zpi.web.id/dashboard/keys (free tier — 2,000 req/mo, no credit card). **Response envelope:** `{ status: "success" | "error", message: string, content: }` **Rate limit:** 60 req/min (free tier). Per-endpoint cache TTL is documented below. **Errors:** standard HTTP codes (`401` invalid key, `429` rate limited, `5xx` upstream). Body always has `{ status: "error", message, errors? }`. ```bash curl "https://api.zpi.web.id/v1/CATEGORY:SCRAPER/ENDPOINT?param=value" \ -H "x-api-key: $ZAPI_KEY" ``` **Category page:** https://zpi.web.id/category/uploader **Full catalog:** https://zpi.web.id/apis · **Index:** https://zpi.web.id/llms-full.txt --- ## Cutout Image **Category:** uploader · **Slug:** `cutout` **Detail page:** https://zpi.web.id/api/uploader/cutout Upload gambar ke S3 presigned URL (3 jam). Khusus image. **Tags:** upload, image ### Upload File Upload gambar ke S3 presigned URL (3 jam). Khusus image. - **Method:** `POST` - **Endpoint:** `https://api.zpi.web.id/v1/uploader:cutout/upload` **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `file` | file | form | yes | Gambar (jpg/png/webp). Khusus image, expire 3 jam. | **cURL:** ```bash curl -X POST "https://api.zpi.web.id/v1/uploader:cutout/upload" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "file": "photo.jpg" }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/uploader:cutout/upload", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "file": "photo.jpg" }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api.zpi.web.id/v1/uploader:cutout/upload", headers={"x-api-key": "YOUR_API_KEY"}, json={ "file": "photo.jpg" }) data = r.json() ``` **Example response:** ```json { "mime": "image/jpeg", "note": "Presigned URL valid 3 jam. Hanya untuk gambar.", "service": "cutout", "fileName": "96fc0fc145454ad9457b51e17ae68a55.jpg", "fileSize": 67105, "expiresAt": "2026-05-23T12:36:21.692Z", "expiresIn": "3h", "publicUrl": "https://deeplor.s3.us-west-2.amazonaws.com/upload/2026/05/23/8abfed491b2d4a50ab02adf20d05a3cf.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260523T093621Z&X-Amz-SignedHeaders=host&X-Amz-Expires=10800&X-Amz-Credential=AKIAROYXHKZU6F6BHMXV%2F20260523%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=c92dba3afc5c7c0befc6b1864c0542625afb7873be5ed110681827cbb277569d", "uploadedAt": "2026-05-23T09:36:21.692Z", "oneTimeDownload": false } ``` --- ## Gofile **Category:** uploader · **Slug:** `gofile` **Detail page:** https://zpi.web.id/api/uploader/gofile Upload file tanpa batas size. Reset expiry tiap download. **Tags:** upload, file, unlimited ### Upload File Upload file tanpa batas size. Reset expiry tiap download. - **Method:** `POST` - **Endpoint:** `https://api.zpi.web.id/v1/uploader:gofile/upload` **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `file` | file | form | yes | File yang mau di-upload. Tanpa batas size. | **cURL:** ```bash curl -X POST "https://api.zpi.web.id/v1/uploader:gofile/upload" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "file": "archive.zip" }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/uploader:gofile/upload", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "file": "archive.zip" }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api.zpi.web.id/v1/uploader:gofile/upload", headers={"x-api-key": "YOUR_API_KEY"}, json={ "file": "archive.zip" }) data = r.json() ``` **Example response:** ```json { "mime": "image/jpeg", "note": "Timer 10 hari reset setiap ada yang download. File praktis permanent selama aktif diakses.", "service": "gofile", "fileName": "96fc0fc145454ad9457b51e17ae68a55.jpg", "fileSize": 67105, "expiresAt": "2026-06-02T09:43:34.331Z", "expiresIn": "10 hari idle (reset tiap download)", "publicUrl": "https://gofile.io/d/bO1T4k", "directLink": null, "uploadedAt": "2026-05-23T09:43:34.332Z", "contentCode": null, "oneTimeDownload": false } ``` --- ## Kappa.lol **Category:** uploader · **Slug:** `kappa-lol` **Detail page:** https://zpi.web.id/api/uploader/kappa-lol Upload a file and receive a short shareable link. **Tags:** uploader, file-host ### Upload Upload a file via multipart and return the share URL. - **Method:** `POST` - **Endpoint:** `https://api.zpi.web.id/v1/uploader:kappa-lol/upload` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `file` | file | form | yes | File yang mau di-upload. | **cURL:** ```bash curl -X POST "https://api.zpi.web.id/v1/uploader:kappa-lol/upload" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "file": "photo.jpg" }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/uploader:kappa-lol/upload", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "file": "photo.jpg" }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api.zpi.web.id/v1/uploader:kappa-lol/upload", headers={"x-api-key": "YOUR_API_KEY"}, json={ "file": "photo.jpg" }) data = r.json() ``` **Example response:** ```json { "ok": true, "url": "https://kappa.lol/ZtVei2", "host": "kappa.lol", "fileName": "96fc0fc145454ad9457b51e17ae68a55.jpg", "fileSize": 67105, "uploadedAt": "2026-05-27T13:37:52.769Z" } ``` --- ## Litterbox **Category:** uploader · **Slug:** `litterbox` **Detail page:** https://zpi.web.id/api/uploader/litterbox Upload file ephemeral 1h-72h. Max 1GB. **Tags:** upload, file, ephemeral ### Upload File Upload file ephemeral 1h-72h. Max 1GB. - **Method:** `POST` - **Endpoint:** `https://api.zpi.web.id/v1/uploader:litterbox/upload` **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `file` | file | form | yes | File yang mau di-upload. Max 1GB. | | `duration` | enum(1h|12h|24h|72h) | form | no | Durasi simpan sebelum file auto-dihapus. Default 1h. | **cURL:** ```bash curl -X POST "https://api.zpi.web.id/v1/uploader:litterbox/upload" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "file": "report.pdf", "duration": "1h" }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/uploader:litterbox/upload", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "file": "report.pdf", "duration": "1h" }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api.zpi.web.id/v1/uploader:litterbox/upload", headers={"x-api-key": "YOUR_API_KEY"}, json={ "file": "report.pdf", "duration": "1h" }) data = r.json() ``` **Example response:** ```json { "mime": "image/png", "service": "litterbox", "fileName": "bilibili-global-icon-filled-256.png", "fileSize": 32606, "expiresAt": "2026-05-23T10:45:58.885Z", "expiresIn": "1h", "publicUrl": "https://litter.catbox.moe/ykif06.png", "uploadedAt": "2026-05-23T09:45:58.885Z", "oneTimeDownload": false } ``` --- ## Temp.sh **Category:** uploader · **Slug:** `temp-sh` **Detail page:** https://zpi.web.id/api/uploader/temp-sh Upload a file to a temporary host with short retention. **Tags:** uploader, file-host ### Upload Upload a file via multipart and return the temporary URL. - **Method:** `POST` - **Endpoint:** `https://api.zpi.web.id/v1/uploader:temp-sh/upload` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `file` | file | form | yes | File yang mau di-upload. | | `filename` | string | form | no | Nama file optional untuk URL. | **cURL:** ```bash curl -X POST "https://api.zpi.web.id/v1/uploader:temp-sh/upload" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "file": "photo.jpg", "filename": "photo.jpg" }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/uploader:temp-sh/upload", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "file": "photo.jpg", "filename": "photo.jpg" }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api.zpi.web.id/v1/uploader:temp-sh/upload", headers={"x-api-key": "YOUR_API_KEY"}, json={ "file": "photo.jpg", "filename": "photo.jpg" }) data = r.json() ``` **Example response:** ```json { "ok": true, "url": "https://temp.sh/pknLa/photo.jpg", "host": "temp.sh", "fileName": "photo.jpg", "fileSize": 67105, "uploadedAt": "2026-05-27T13:38:45.913Z", "retentionDays": 3 } ``` --- ## Tmpfiles **Category:** uploader · **Slug:** `tmpfiles` **Detail page:** https://zpi.web.id/api/uploader/tmpfiles Upload file ephemeral 1 jam. Max 100MB. **Tags:** upload, file, ephemeral ### Upload File Upload file ephemeral 1 jam. Max 100MB. - **Method:** `POST` - **Endpoint:** `https://api.zpi.web.id/v1/uploader:tmpfiles/upload` **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `file` | file | form | yes | File yang mau di-upload. Max 100MB. | | `expire` | number | form | no | Detik sebelum file dihapus (60-172800). Default 3600 (60 menit). Pilihan resmi: 3600 (60m), 21600 (6h), 86400 (24h), 172800 (48h). | **cURL:** ```bash curl -X POST "https://api.zpi.web.id/v1/uploader:tmpfiles/upload" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "file": "image.png", "expire": "3600" }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/uploader:tmpfiles/upload", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "file": "image.png", "expire": "3600" }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api.zpi.web.id/v1/uploader:tmpfiles/upload", headers={"x-api-key": "YOUR_API_KEY"}, json={ "file": "image.png", "expire": "3600" }) data = r.json() ``` **Example response:** ```json { "mime": "image/webp", "note": "File auto-dihapus dalam 1m.", "service": "tmpfiles", "fileName": "cekresi.com.webp", "fileSize": 8744, "expiresAt": "2026-05-23T10:00:29.062Z", "expiresIn": "1m", "publicUrl": "https://tmpfiles.org/dl/wdwpgZ8f2FKZ/cekresi.com.webp", "browserUrl": "https://tmpfiles.org/wdwpgZ8f2FKZ/cekresi.com.webp", "uploadedAt": "2026-05-23T09:59:29.062Z", "oneTimeDownload": false } ``` --- ## Uguu **Category:** uploader · **Slug:** `uguu` **Detail page:** https://zpi.web.id/api/uploader/uguu Upload file ephemeral 3 jam. Max 128MB. **Tags:** upload, file, ephemeral ### Upload File Upload file ephemeral 3 jam. Max 128MB. - **Method:** `POST` - **Endpoint:** `https://api.zpi.web.id/v1/uploader:uguu/upload` **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `file` | file | form | yes | File yang mau di-upload. Max 128MB, expire dalam 3 jam. | **cURL:** ```bash curl -X POST "https://api.zpi.web.id/v1/uploader:uguu/upload" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "file": "photo.jpg" }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/uploader:uguu/upload", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "file": "photo.jpg" }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api.zpi.web.id/v1/uploader:uguu/upload", headers={"x-api-key": "YOUR_API_KEY"}, json={ "file": "photo.jpg" }) data = r.json() ``` **Example response:** ```json { "mime": "image/jpeg", "note": "File auto-dihapus dalam 3 jam.", "service": "uguu", "fileName": "96fc0fc145454ad9457b51e17ae68a55.jpg", "fileSize": 67105, "expiresAt": "2026-05-23T12:54:37.072Z", "expiresIn": "3h", "publicUrl": "https://d.uguu.se/cirNNnzq.jpg", "uploadedAt": "2026-05-23T09:54:37.072Z", "oneTimeDownload": false } ``` ---