✦ PENGEMBANG & INTEGRASI ✦
Tanpa API key. Dua tahap aman: inisiasi tiket lalu finalisasi.
POST /api/v1/upload/init
Body: { "filename", "size", "mimeType", "expiry", "contentHash" }
-> { slug, ticket, upload: { signedUrl } }
atau { deduped: true, url } bila hash sudah adaPUT <signedUrl> (bytes langsung, maks 50 MB)
POST /api/v1/upload/finalize
Body: { "ticket" }
-> { url, slug, size_bytes, expires_at }