upload files, get temporary public URLs. dead simple.
$ npm i -g vanish-cli
Or use directly with npx:
$ npx vanish-cli upload file.png
Upload a file:
$ vanish photo.jpg
https://vanish.sh/f/b3kL8nR4.jpg
# copied to clipboard
Multiple files:
$ vanish a.png b.png c.png
https://vanish.sh/f/a7xK9mQ2.png
https://vanish.sh/f/c2mP5vX8.png
https://vanish.sh/f/d9nQ3wY1.png
With curl:
$ curl -X POST --data-binary @file.png \
-H "X-Filename: file.png" https://vanish.sh/upload
{"url":"https://vanish.sh/f/e4rS7tU6.png"}
JSON output:
$ vanish --json file.png
{"url":"...","id":"...","expires":"2026-02-19T..."}
Set your key once:
$ export VANISH_KEY="vnsh_your_key_here"
Upload (authenticated, all file types):
$ curl -X POST --data-binary @report.pdf \
-H "X-Filename: report.pdf" \
-H "Authorization: Bearer $VANISH_KEY" \
https://vanish.sh/upload
{"url":"https://vanish.sh/f/b3kL8nR4.pdf","id":"b3kL8nR4",...}
Custom retention (Pro, up to 365 days):
$ curl -X POST --data-binary @doc.pdf \
-H "X-Filename: doc.pdf" \
-H "Authorization: Bearer $VANISH_KEY" \
-H "X-Expires-Days: 90" \
https://vanish.sh/upload
Download:
$ curl -OJ https://vanish.sh/f/b3kL8nR4.pdf
Delete:
$ curl -X DELETE \
-H "Authorization: Bearer $VANISH_KEY" \
https://vanish.sh/f/b3kL8nR4.pdf
{"ok":true}
List uploads:
$ curl -H "Authorization: Bearer $VANISH_KEY" \
https://vanish.sh/uploads
Account info:
$ curl -H "Authorization: Bearer $VANISH_KEY" \
https://vanish.sh/me
| Tier | File types | Max file | Storage | Retention | Rate limit | Price |
|---|---|---|---|---|---|---|
| Anonymous | images only | 5 MB | — | 24 hours | 10/hour | free |
| Free | all | 50 MB | 50 MB | 48 hours | 50/hour | free |
| Pro | all | 1 GB | 1 GB | 30 days (up to 365) | 200/hour | 2€/mo |
Anonymous uploads: images only, 24h. Sign in with GitHub for 48h retention and all file types.
Get your API key via CLI:
$ vanish login
# opens GitHub OAuth in your browser
✓ logged in as @username
# key saved to ~/.config/vanish/config.json
Or sign in with GitHub in your browser to get your key.
Create additional keys via API:
$ curl -X POST \
-H "Authorization: Bearer $VANISH_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"ci-bot"}' \
https://vanish.sh/keys
{"api_key":"vnsh_...","name":"ci-bot"}
# key shown only once — save it
Manage your keys and uploads on the dashboard.
$ vanish upgrade
# upgrade to pro for 30-day+ retention (up to 365 days)
$ vanish ls # list your uploads
$ vanish status # show storage & tier info
$ vanish rm <id> # delete an upload
$ vanish whoami # show current user & tier
CORS-enabled — embed URLs directly in GitHub PRs and GitLab issues.