STARDRIVE (anyone with the address can upload, view and delete; there are no accounts) UPLOAD curl -T file.ext https://stardrive.stardust-media.com/ raw upload, best for big files; prints the file's URL curl -F file=@file.ext https://stardrive.stardust-media.com/ same, as a web form curl -T file.ext https://stardrive.stardust-media.com/photos/ into a bucket (folder); buckets are created automatically curl -T file.ext "https://stardrive.stardust-media.com/name.ext?replace=1" overwrite an existing file (default: a clash gets -1, -2 ... added to the name) curl -X MKCOL https://stardrive.stardust-media.com/photos/ create an empty bucket EXPIRY (default: never) send -H "Expires-In: VALUE" (or -H "Expires-At: VALUE"), or add ?ttl=VALUE to the URL after a time: 90s 30m 12h 7d 2w 6mo 1y 1d12h30m 1.5h "2 days 3 hours" "in 2 hours" at a moment: 2026-12-25 "2026-12-25 18:00" 18:00 (next 18:00) 2026-12-25T18:00:00-05:00 @1790000000 (unix) words: today tomorrow eod (end of day) eow (end of week) eom (end of month) eoy (end of year) never: never unlimited 0 examples: curl -T a.zip -H "Expires-In: 7d" https://stardrive.stardust-media.com/ curl -T a.zip -H "Expires-In: tomorrow 18:00" https://stardrive.stardust-media.com/photos/ IMPORTANT with curl -T: curl glues the file name onto the END of the URL, so a ?query on a URL that ends in / breaks. Use -H headers (above), or write the file name yourself: curl -T a.zip "https://stardrive.stardust-media.com/a.zip?ttl=7d". With -F (form uploads) a ?query works anywhere. exact times use the server's time zone (America/New_York); "@unix" and offsets such as -05:00 are unambiguous. DELETE AFTER DOWNLOAD (1 to 9999 completed downloads; default: unlimited) curl -T secret.pdf -H "Max-Downloads: 1" https://stardrive.stardust-media.com/ deletes itself after it has been downloaded once curl -T a.zip -H "Max-Downloads: 25" https://stardrive.stardust-media.com/photos/ deletes itself after 25 downloads curl -T a.zip "https://stardrive.stardust-media.com/a.zip?downloads=25" the same, writing the file name yourself a download counts when a client receives the whole file (a resumed download counts once; previews with ?inline never count). both limits can be combined: whichever happens first deletes the file. CHANGE LATER curl -X PATCH "https://stardrive.stardust-media.com/photos/a.jpg?ttl=2d" new expiry (counted from now) ?ttl=never removes the expiry curl -X PATCH "https://stardrive.stardust-media.com/photos/a.jpg?downloads=3" new download limit ?downloads=0 removes the limit VIEW curl https://stardrive.stardust-media.com/photos/ list a bucket (curl "https://stardrive.stardust-media.com/?ls" lists the main one); add ?json for JSON curl "https://stardrive.stardust-media.com/?all" every file in every bucket; add &q=text to search, &sort=new|old|name|size|exp|dl to order (also works on a bucket) curl "https://stardrive.stardust-media.com/photos/a.jpg?info" size, hash, created, expires, downloads left (JSON) open https://stardrive.stardust-media.com/ in a browser upload and browse (plain curl https://stardrive.stardust-media.com/ prints this help) DOWNLOAD curl -OJ https://stardrive.stardust-media.com/photos/a.jpg saves with the right name; curl -C - -O ... resumes an interrupted download (newer curl cannot combine -C and -J) curl -I https://stardrive.stardust-media.com/photos/a.jpg size, name, type, hash, expiry without downloading images, video, audio, pdf and text open in the browser (and embed in Discord, Slack, Telegram) with their real type; add ?dl to force a download link-preview bots never count as downloads, so pasting a link in chat cannot use up a download limit DELETE (anyone who knows the URL can do it) curl -X DELETE https://stardrive.stardust-media.com/photos/a.jpg delete a file curl -X DELETE "https://stardrive.stardust-media.com/photos/?force=1" delete a bucket and everything in it (without force it must be empty) INTEGRITY (optional) every upload reply carries X-Stardrive-Sha256; compare with sha256sum. Send -H "X-Expected-SHA256: " to make the server reject a mismatch. sizes are shown the classic way: 1 KB = 1024 bytes. BIG FILES OVER SEVERAL CONNECTIONS / RESUMABLE UPLOAD PUT the same URL repeatedly with Content-Range: bytes a-b/total (any order, any number in parallel, safe to repeat). GET ?upload shows what the server already has. The file appears when the last byte arrives. Details: curl "https://stardrive.stardust-media.com/?caps" STATS curl "https://stardrive.stardust-media.com/?stats" (per IP, per file, per day; JSON: add &json) LIVE curl "https://stardrive.stardust-media.com/?bw" bandwidth now and for the last 5 minutes (JSON) STORAGE curl "https://stardrive.stardust-media.com/?storage" used and free space (JSON) HEALTH curl "https://stardrive.stardust-media.com/?health" SIZE no size limit of its own: a file only has to fit in the free disk space minus a small reserve (curl "https://stardrive.stardust-media.com/?storage" shows what is left now). ERRORS 503 + Retry-After when too many uploads are running (curl --retry honours it); 507 disk full; 413 too big; add ?json for JSON errors.