File Upload with API Keys

API-Key Auth for Uploads — One Header, No OAuth

Get an API key from the dashboard. Pass it in the Authorization header on every upload request. No OAuth dance.

For server-to-server uploads, OAuth is the wrong shape. OAuth assumes a human at a browser: redirects, consent screens, scopes, a registered callback URL, and short-lived access tokens you have to refresh with a refresh token you have to store and rotate. None of that helps a cron job pushing a backup or a CI step uploading a build artifact — it just adds moving parts that fail at 3am. files.link uses long-lived API keys instead: create one in the dashboard, put it in an environment variable, and send it on every request. That's the whole auth model.

The mechanics are deliberately boring. The key goes in the Authorization header as its raw value — no Bearer prefix, no signing, no timestamp, no HMAC. Every call in the upload flow that talks to the API carries the same header: Authorization: $FILESLINK_KEY on the POST /v1/files/{folderId} that returns your presigned url and id, and again on the POST /v1/files/confirm-upload.

(The middle PUT to the presigned URL needs no header at all — the signature baked into that URL is its own authorization.) There's nothing to refresh, so a process can run for months without re-authenticating.

Mint a separate key per environment or per application — dev, staging, prod, or one per service — so you can reason about and rotate them independently. If a key leaks, revoke it from the dashboard and every request using it starts returning 401 immediately; generate a replacement, update the one env var, done. No coordinated client-secret rotation, no token-endpoint outage, no cascade across services that happened to share a credential.

Compared to cloud IAM — AWS access keys, signature v4, roles, and policy documents — there's no per-request signing to get wrong and no JSON policy to debug. Compared to OAuth, there's no callback to host and no token to keep alive. It's a single secret, one header, and a revoke button: the right ergonomics for machines uploading files.

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

OAuth 2.0 tokensCloud IAM (AWS sig v4)Session cookiesfiles.link
No OAuth redirect / callback flow
No token refresh / expiry handling
Single raw Authorization header
No per-request request signing
Revoke instantly from dashboard

Calculate Your Needs

Storage

0GB

Egress

0GB

CDN Bandwidth

0GB
Total: $0.000/month

Get an API Key

  • Global CDN delivery
  • Edge-cached worldwide
  • Signed-URL security
  • Unlimited files
  • Unlimited storage
  • Public + Private storage
  • No subscription — prepaid credits keep spend predictable
Get an API Key

Frequently Asked Questions

How is the API key sent?
As the raw value of the Authorization header — Authorization: YOUR_KEY — with no Bearer prefix, no signing, and no timestamp. Same header on the POST metadata call and the confirm-upload call.
Does the presigned PUT need the key too?
No. The middle step PUTs bytes straight to a presigned URL whose embedded signature is its own authorization, so it carries no Authorization header. Only the two API calls do.
Can I have separate keys per environment?
Yes. Generate one key per environment or app (dev, staging, prod) and revoke any of them individually without affecting the others.
What happens if a key leaks?
Revoke it in the dashboard immediately — every request using it then returns 401 — generate a new key, and update your env var. No coordinated secret rotation needed.
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