Presigned URL

A presigned URL is a temporary, signed link that grants time-limited permission to upload or download a specific object in cloud storage without exposing account credentials. The signature encodes the allowed operation, object key, and an expiry, so whoever holds the URL can perform exactly that action until it expires.

Presigned URLs solve a common problem: you want a client (a browser, a mobile app, a CI job) to read or write storage directly, but you can't ship long-lived credentials to that client. Instead, your backend — which does hold credentials — generates a URL with a cryptographic signature baked into the query string. The storage layer validates that signature on each request.

A presigned URL is bound to a single HTTP method and object key. A URL minted for a PUT can only upload to that exact key; it can't be replayed to download, delete, or write somewhere else. The expiry is part of the signed payload, so it can't be extended by editing the link — any tampering invalidates the signature and the request is rejected.

The most common pattern is upload offloading: the client asks your API for a URL, then streams bytes straight to storage without proxying through your server. This keeps large files off your application servers entirely, which saves memory, bandwidth, and request time.

# Upload directly to a presigned URL
curl -X PUT --upload-file ./avatar.png \
  "https://files.example/upload/abc123?signature=...&expires=..."

Related terms

How files.link fits in

files.link uses presigned uploads under the hood — your code requests an upload URL, PUTs the bytes to it, then confirms. No credentials ship to the client. image upload API.

Get started
files.link
Copyright © 2026
All rights reserved
ContactGuidesGlossaryStatusLegal