Share files with links
that self-destruct.
Upload a file or a private note, get a link, and send it. It deletes itself after the time you choose — or after one download.
Send the password separately from the link (e.g. by a different app).
Encrypted with AES-256. The key lives only in your link.
Three steps, no sign-up
Upload
Pick a file or type a note, choose when it should disappear, and optionally add a password.
Copy the link
Your content is encrypted with a brand-new key that goes into the link. We don't keep the key.
Share it
The recipient opens the link and downloads directly. When time is up, the data is deleted for good.
Sharing that cleans up after itself
Key stays in your link
Each upload gets its own AES-256 key. We store only the encrypted data, never the key.
Deletes automatically
Choose 5 minutes to 7 days. Expired files are removed from the server within a minute.
One-time links
Pick “1 download” and the link stops working as soon as it has been used.
Optional password
Add a password so the link alone isn't enough. Repeated wrong guesses lock the link.
Common questions
Can you see my files?
The recipient says the link doesn't work. Why?
#k=. Also check it hasn't expired, and that a one-time link hasn't already been opened.I lost the link. Can you send it again?
What's the size limit?
Use it from the command line
Upload and download with curl, Python or PowerShell.
# Upload a file (prints JSON with "url" and "direct_url") curl -F "file=@report.pdf" -F "expiry=24h" https://upload-temp.stream4tech.app/upload # Upload text, one-time link, with a password curl -F "text=my secret" -F "expiry=1view" -F "password=s3cret" https://upload-temp.stream4tech.app/upload # Download using direct_url curl -OJ "<direct_url>" curl -OJ -H "X-Password: s3cret" "<direct_url>"
import requests # Upload with open("report.pdf", "rb") as f: resp = requests.post("https://upload-temp.stream4tech.app/upload", files={"file": f}, data={"expiry": "24h"}) info = resp.json() print(info["url"]) # share this with people # Download (streams to disk) with requests.get(info["direct_url"], stream=True) as r: r.raise_for_status() with open("report.pdf", "wb") as out: for chunk in r.iter_content(1 << 20): out.write(chunk)
# Upload $resp = Invoke-RestMethod -Uri "https://upload-temp.stream4tech.app/upload" -Method Post -Form @{ file = Get-Item "C:\path\to\report.pdf" expiry = "24h" } $resp.url # Download Invoke-WebRequest -Uri $resp.direct_url -OutFile "report.pdf"
POST /upload multipart/form-data file file to upload — or — text text content (max 10 MB) expiry 1view | 5m | 30m | 1h | 6h | 24h | 7d (default 24h) password optional 200 OK { "url": "https://upload-temp.stream4tech.app/d/x9f2_kL0#k=<key>", "direct_url": "https://upload-temp.stream4tech.app/dl/x9f2_kL0/<key>/report.pdf", "shortId": "x9f2_kL0", "key": "<key>", "type": "file", "expiresIn": "24h", "size": 102400 } GET /dl/<id>/<key>/<name> direct download (X-Password header if protected) GET /d/<id>#k=<key> browser download page GET /health health check GET /stats active uploads