Cloud File Storage API
A Cloud Storage API You Can Curl in One Line
REST API + SDK for storing and serving files. Drop-in alternative to AWS S3 with global CDN included — no IAM, no CORS, no signed-URL plumbing.
Standing up file storage on a hyperscaler usually costs you a day before you store a single byte: install the SDK, write an IAM policy, scope the credentials, configure CORS rules for browser uploads, set a bucket policy, then write a separate helper to mint signed download URLs. files.link collapses that to a contract any HTTP client already speaks. The real upload is three calls.
First, POST file metadata to /v1/files/{folderId} with your raw API key in the Authorization header (no Bearer prefix); the response is { success, urls: [{ url, id, ... }] }, where url is a presigned PUT target. Second, PUT the file bytes straight to that URL. Third, POST /v1/files/confirm-upload with { ids: [id] } to finalize. That's it — confirm returns the permanent CDN URL, and the file is live on a global edge network.
The same three calls work from curl, fetch, axios, Python requests, Go net/http, or any language with a socket, so you are never blocked waiting on a vendor SDK or fighting a version bump. As a drop-in replacement for an Amazon S3 PutObject + CloudFront + presigner stack, the win is in everything you delete: no aws-sdk dependency to bundle into a Lambda, no IAM trust relationships to maintain, no CORS JSON to debug, no distribution to provision.
Public files come back as cacheable CDN URLs; private files are served through signed URLs with a short default expiry, both selectable at upload time via a single flag rather than two different subsystems. The full OpenAPI 3.0 spec lives at api.files.link/api-docs.json with a hosted Swagger UI at api.files.link/api-docs, so you can try every endpoint with the Authorize button and generate a typed client in any language with openapi-generator.
Billing is prepaid credits with auto-recharge, which means storage, delivery, and requests all draw from one balance instead of three independently-metered line items — and because there is no separate egress meter, a traffic spike doesn't turn into a forensic exercise on your invoice. If you're migrating off S3 specifically, the s3-alternative page maps the concepts one-to-one; if you're wiring this into a particular runtime, the per-language upload guides (Python, Node, PHP, Rust) carry runnable snippets.
For the delivery side — how an uploaded file becomes a globally cached URL with no distribution to configure — see file storage with CDN.
Benefits With No Complexity
Global CDN delivery
Edge-cached worldwide
Signed-URL security
What You Get
Unlimited files
Unlimited storage
Public + Private storage
CDN ready links
Prepaid credits
More coming soon
How files.link Works
1. Upload
2. Copy
3. Use Anywhere
Why Developers Choose files.link
A Better Way to Store & Deliver Files
| AWS S3 SDK | Cloudflare R2 API | Backblaze B2 API | files.link | |
|---|---|---|---|---|
| Works from any HTTP client, no SDK | ||||
| Permanent CDN URL returned on confirm | ||||
| No IAM / CORS / bucket policy setup | ||||
| Presigned PUT upload flow | ||||
| Signed download URLs built in | ||||
| OpenAPI spec + hosted Swagger UI | ||||
| No separate egress fees |
Calculate Your Needs
Storage
Egress
CDN Bandwidth
Get API Keys
- Global CDN delivery
- Edge-cached worldwide
- Signed-URL security
- Unlimited files
- Unlimited storage
- Public + Private storage
- No subscription — prepaid credits keep spend predictable