# imghost.duckdns.org — AI Agent Upload API > Bu dosya AI agent'lar içindir. İnsanlar için arayüz: / ve /f ## Base URL - Public (uzaktan): https://imghost.duckdns.org - Local (aynı makinede): http://localhost:3456 — daha hızlı, tercih edilir - Auth: Header `x-upload-code: ` (zorunlu — kod dosyada yazmaz, kullanıcıdan iste) - JSON spec: https://imghost.duckdns.org/agent.json ## 1) Dosya Yükleme — HER TÜR (zip, pdf, png, mp4...) — ÖNERİLEN - Limit: 500 MB - Endpoint: PUT /f/upload?name=DOSYA_ADI - Header: x-upload-code: $UPLOAD_CODE - Body: raw binary (--data-binary) - Örnek (local): curl -s -X PUT "http://localhost:3456/f/upload?name=rapor.pdf" -H "x-upload-code: $UPLOAD_CODE" --data-binary @"/tam/yol/rapor.pdf" - Örnek (public): curl -s -X PUT "https://imghost.duckdns.org/f/upload?name=rapor.pdf" -H "x-upload-code: $UPLOAD_CODE" --data-binary @"/tam/yol/rapor.pdf" - Dönüş: {"url":"https://imghost.duckdns.org/k7m","url_long":"https://imghost.duckdns.org/f/k7m/rapor.pdf","path":"/home/mert/tmp/files/k7m/rapor.pdf","filename":"rapor.pdf","size":12345} - İndirme: GET /k7m (kısa) veya GET /f/:id/:filename — auth yok, linki bilen indirir - Kullanıcıya kısa `url` alanını ver; dosya adı indirmede otomatik korunur. - Not: Klasör yükleyeceksen önce `zip -r /tmp/paket.zip ./klasor` yap, sonra zip'i yükle. ## 2) Görsel Yükleme — base64 JSON (sadece küçük görseller) - Limit: 12 MB (JSON body) - Endpoint: POST /upload - Header: x-upload-code: $UPLOAD_CODE, Content-Type: application/json - Body: {"image":"data:image/png;base64,iVBORw0..."} - Örnek: curl -s -X POST "http://localhost:3456/upload" -H "x-upload-code: $UPLOAD_CODE" -H "Content-Type: application/json" -d '{"image":"data:image/png;base64,iVBOR..."}' - Dönüş: {"id":"k7m","url":"https://imghost.duckdns.org/k7m","url_long":"https://imghost.duckdns.org/i/k7m.png","path":"/home/mert/tmp/images/k7m.png"} - Tavsiye: 12MB sınırına takılmamak için görselleri de /f/upload ile yükle. ## Kısa linkler - Format: https://imghost.duckdns.org/{id} — id 3 karakter. - Alfabe: `23456789abcdefghjkmnpqrstuvwxyz` (0/1/i/l/o yok, elle yazarken karışmasın diye). - Görsel ve dosya aynı kök adres uzayını paylaşır, tip sunucuda çözülür. - Eski uzun linkler (/i/... ve /f/.../...) kırılmadı, çalışmaya devam ediyor. ## Kod nerede? - Public JSON/txt içinde YOK. Güvenlik için yazılmaz. - Local agent ise: `echo $UPLOAD_CODE` veya `/home/mert/imghost/server.js` içinden `UPLOAD_CODE` env'ini oku, yoksa kullanıcıdan iste. - Uzak agent ise: kullanıcıya sor — "imghost yükleme kodunu ver". ## Kurallar - Gizli anahtar taraması yap: yüklemeden önce `grep -rIlE "AIza|-----BEGIN|sk-|xox"` ile tara, sır bulursan yükleme ve kullanıcıya sor. - Linkler herkese açık — hassas veride kullanıcıyı uyar. - Dönen `url` alanını ham haliyle kullanıcıya ver.