[ session ] guest@tmpdrop · [ max ] 25 MB · [ ttl ] 1h / 24h · [ status ] ONLINE_

Upload a file. Get a link. The link dies on schedule. No accounts, no tracking, no analytics, no third party. Files served with a strict Content-Security-Policy sandbox so a malicious upload can't run in your browser.

drop a file

[ttl]

api

One endpoint. Multipart form. Public. No auth.

methodpathpurpose
POST/uploadupload a file, get a URL + slug
GET/f/:slugfetch a file (returns 410 once expired)
GET/healthzliveness probe

upload — curl

curl -F [email protected] -F ttl=1h https://tmpdrop.solardev.online/upload

Response (JSON):

{
  "url":        "https://tmpdrop.solardev.online/f/AbCdEfGhIjKl.png",
  "slug":       "AbCdEfGhIjKl",
  "expires_at": 1717000000,
  "size":       18234,
  "mime":       "image/png"
}

parameters

fieldrequirednotes
fileyesmultipart file part. Max 25 MB.
ttlno1h (default) or 24h. Anything else: 400.

file types

Any file type is accepted. Size is the only gate — see 25 MB above.

Uploads are served with a strict Content-Security-Policy: sandbox plus X-Content-Type-Options: nosniff, so nothing in an uploaded file can execute in your browser. text/html and application/xhtml+xml are additionally forced to download rather than render inline.

status codes

codemeaning
200ok
400no file, or bad ttl
410file expired
413over size limit
429rate limited (30 req / min per IP)

retention & privacy