File Upload CLI

Upload From the Command Line With No CLI to Install

Upload files from the command line with curl. No CLI tool to install — files.link is just REST.

The honest version of 'file upload CLI' for files.link is that there isn't one to install — and that's the feature. The REST API is the contract, so curl (or wget, or httpie, or whatever HTTP client your image already has) *is* the CLI. No vendor binary to download, no Homebrew tap, no version to pin, no latest that breaks your pipeline when it auto-updates, no SDK that lags a language runtime. A clean Alpine container or a locked-down CI runner can upload a file with the tools it already ships.

Contrast that with reaching for the AWS CLI just to push an artifact somewhere: you're now installing a multi-hundred-MB toolchain, wiring up a credentials file or instance role, and learning a subcommand surface — a lot of ceremony for 'put this file at a URL.' Custom vendor CLIs trade one install problem for another: another binary in your base image, another thing to keep current, another failure mode in CI. files.link collapses all of that into three plain HTTP calls and a single API key in an environment variable.

The whole upload is three commands. First, POST /v1/files/{folderId} with Authorization: $FILESLINK_KEY and your file metadata; the response is { success, urls:[{ url, id }] }. Second, PUT the bytes straight to that presigned url with --upload-file. Third, POST /v1/files/confirm-upload with { "ids": ["<id>"] } to finalize. Pipe the first response through jq to capture url and id into shell variables and you can chain all three in a single copy-pasteable block.

Want something that feels like a CLI? Wrap those lines in a ~10-line shell function named flup and you have your own upload command with zero dependencies.

It works identically everywhere curl works, which is everywhere: Linux, macOS, and Windows 10+ all ship curl, so the same three commands run in bash, zsh, PowerShell, or cmd, inside Docker, GitHub Actions, GitLab CI, or a cron job — no per-platform install matrix to maintain.

Benefits With No Complexity

Global CDN delivery

Your files are served from 450+ edge locations worldwide.

Edge-cached worldwide

Files are cached close to your users for fast delivery.

Signed-URL security

Private files stay protected with time-limited access.

What You Get

Unlimited files

Upload as many files as you need.

Unlimited storage

There is no storage limit.

Public + Private storage

Private files are fully secured.

CDN ready links

Upload directly to 450+ edge locations worldwide.

Prepaid credits

No subscription. Pay only for the storage and bandwidth you use.

More coming soon

We have plenty of features coming!

How files.link Works

1. Upload

Create a project and upload your first file.

2. Copy

Copy the CDN link.

3. Use Anywhere

Paste and enjoy the blazing speed.

Why Developers Choose files.link

A Better Way to Store & Deliver Files

aws cli + S3Vendor CLI toolsscp / rsyncfiles.link
Nothing to install (curl is the CLI)
Works in any minimal container / CI image
Single API key in one env var
No credentials file / IAM setup
Returns a shareable delivery URL

Calculate Your Needs

Storage

0GB

Egress

0GB

CDN Bandwidth

0GB
Total: $0.000/month

Upload Files from the CLI

  • Global CDN delivery
  • Edge-cached worldwide
  • Signed-URL security
  • Unlimited files
  • Unlimited storage
  • Public + Private storage
  • No subscription — prepaid credits keep spend predictable
Start Uploading from the CLI

Frequently Asked Questions

Where's the CLI download?
There isn't one, by design. The REST API is the contract and curl is the client. Three HTTP calls upload a file with no binary to install or keep updated.
What are the three commands?
(1) curl -X POST -H "Authorization: $KEY" -d '{filesMetadata}' .../v1/files/FOLDER_ID, then read url+id from the JSON. (2) curl -X PUT --upload-file ./file 'PRESIGNED_URL'. (3) curl -X POST -H "Authorization: $KEY" -d '{"ids":["ID"]}' .../v1/files/confirm-upload.
Can I make my own command out of it?
Yes. Wrap the three curls in a ~10-line shell function (capture url/id with jq) and call it like a CLI — no dependencies beyond curl and jq.
Does it work on Windows and in CI?
Yes. curl ships on Windows 10+, macOS, and Linux, so the same commands run in PowerShell, bash, Docker, GitHub Actions, or GitLab CI unchanged.
General Questions
Is there a subscription?
No. files.link uses prepaid credits, so storage, bandwidth, and API usage are deducted from your balance as you go. The app explains the payment step before uploads are enabled — no monthly subscription and no per-user fees.
What is files.link?
files.link is a developer-first file platform that makes it simple to store, secure, and deliver files globally. It provides signed URLs, public/private access, and an API-first design so you can integrate file delivery into any app without the usual complexity.
How does billing work?
files.link uses prepaid credits. As you use storage, bandwidth, and API requests, credits are deducted daily. When your balance runs low, we automatically recharge it using your saved card. If an auto-recharge doesn't go through, your files and links stay put — you simply update your payment method or top up manually to keep going. No monthly subscriptions — just simple usage-based pricing.
How secure is my data?
All files are encrypted at rest and in transit. You can use signed URLs for private files, control access with permissions, and rely on enterprise-grade infrastructure for data protection.

Related

files.link
Copyright © 2026
All rights reserved
ContactGuidesGlossaryStatusLegal