REST API v1 · CORS Open
API Reference
Integrasikan upload gambar clickme dari domain atau server manapun — website, bot, script, atau app — menggunakan api.clickme.web.id.
API Base
https://api.clickme.web.id
CDN Base
https://cdn.clickme.web.id
Auth
Tidak ada — rate limit per IP
Response
application/json
Overview
API clickme memungkinkan upload gambar dari domain manapun. Tidak perlu API key. CORS sepenuhnya terbuka — panggil dari browser JS, Node.js, Python, bot Discord, Telegram, atau server-side apapun.
Base URL
API
https://api.clickme.web.id CDN
https://cdn.clickme.web.id/images/{filename} Rate Limits
Per IP. Melebihi limit mengembalikan 429 Too Many Requests.
| Endpoint | Limit | Window |
|---|---|---|
| POST /upload | 20 request | 15 menit |
| Semua lainnya | 30 request | 1 menit |
Coba Langsung
Test upload API langsung dari halaman ini.
POST /upload — Live Test
Upload Gambar
POSThttps://api.clickme.web.id/uploadUpload satu gambar
Request — multipart/form-data
| Field | Tipe | Status | Keterangan |
|---|---|---|---|
| image | File | Wajib | File gambar. Format: JPEG PNG GIF WEBP SVG. Maks 10 MB |
Response 200 OK
json
{
"success": true,
"filename": "550e8400-e29b-41d4.jpg",
"urls": {
"cdn": "https://cdn.clickme.web.id/images/550e8400.jpg",
"jsdelivr": "https://cdn.jsdelivr.net/gh/user/repo@main/images/550e8400.jpg",
"raw": "https://raw.githubusercontent.com/user/repo/main/images/550e8400.jpg",
"path": "https://clickme.web.id/i/550e8400.jpg"
},
"size": 245891,
"mimetype": "image/jpeg",
"uploaded_at": "2024-01-15T10:30:00.000Z"
} JavaScript / Fetch
javascript
async function uploadImage(file) {
const form = new FormData();
form.append('image', file);
const res = await fetch('https://api.clickme.web.id/upload', { method: 'POST', body: form });
const data = await res.json();
if (!data.success) throw new Error(data.error);
return data.urls.cdn;
} Python
python
import requests
def upload(path: str) -> str:
with open(path, "rb") as f:
r = requests.post("https://api.clickme.web.id/upload", files={"image": f})
d = r.json()
if not d["success"]: raise ValueError(d["error"])
return d["urls"]["cdn"] cURL
bash
curl -X POST https://api.clickme.web.id/upload \
-F "image=@/path/to/photo.jpg" Discord.js Bot
javascript
// !upload + attachment → balas dengan CDN URL
bot.on('messageCreate', async msg => {
if (msg.content !== '!upload' || !msg.attachments.size) return;
const att = msg.attachments.first();
const buf = Buffer.from((await axios.get(att.url, { responseType:'arraybuffer' })).data);
const fd = new FormData();
fd.append('image', buf, { filename: att.name, contentType: att.contentType });
const res = await (await fetch('https://api.clickme.web.id/upload', {
method: 'POST', body: fd, headers: fd.getHeaders()
})).json();
msg.reply(res.success ? `✅ ${res.urls.cdn}` : `❌ ${res.error}`);
}); Telegram Bot (Python)
python
async def photo(upd, ctx):
file = await ctx.bot.get_file(upd.message.photo[-1].file_id)
buf = io.BytesIO(); await file.download_to_memory(buf); buf.seek(0)
r = requests.post("https://api.clickme.web.id/upload",
files={"image": ("photo.jpg", buf, "image/jpeg")})
d = r.json()
await upd.message.reply_text(
f"✅ {d['urls']['cdn']}" if d["success"] else "❌ Gagal"
) PHP
php
<?php
function clickme_upload($path): string {
$c = curl_init();
curl_setopt_array($c, [
CURLOPT_URL => 'https://api.clickme.web.id/upload',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => ['image' => new CURLFile($path)]
]);
$r = json_decode(curl_exec($c), true);
if (!$r['success']) throw new Exception($r['error']);
return $r['urls']['cdn'];
}