PF Platform

One control plane.
Every file. Any storage.

Uplint sits between your application and your object stores. It gives every file a durable identity, applies your routing policy, writes to the bucket you choose, and serves it back — through one API that doesn't change when your infrastructure does.

WEBWeb appuplint.filesAPIBackend serviceuplint.filesJOBBatch workeruplint.filesPOST /v1/filesuUPLINT CONTROL PLANEAPI/v1/filesIdentityfile_…PolicyrouteStoragebucketsDeliverysigned urlEventsauditS3AWS S3ap-south-1AZAzure BlobwesteuropeGCGoogle Cloudasia-south1R2Cloudflare R2autoYOUR BUCKETS · YOUR CREDENTIALS · YOUR REGIONSfile_8Kx92mfile_3Qm71c
01 How a file moves

From request to object,
in five steps.

Each step is a service in the control plane. Your application only ever sees the first and the last.

  1. 01

    Upload

    Your application sends the file and names a storage target. Nothing about the provider is in the request.

    POST /v1/files
  2. 02

    Identify

    Uplint issues a durable file ID and records the metadata your app attached.

    file_8Kx92m
  3. 03

    Route

    Policy decides the provider, bucket, and region for this tenant or target.

    india-data → S3 · Mumbai
  4. 04

    Store

    The object lands in your bucket, under credentials you connected. Uplint keeps the reference.

    company-files
  5. 05

    Serve or move

    Deliver through a signed URL, or move the object to another provider. The ID never changes.

    /v1/files/:id/url · /move
02 Capabilities

Everything underneath
the API.

Six services, one surface. Each one removes a piece of provider-specific code from your product.

STORAGE CONNECTIONS

Bring the buckets you already have.

Connect AWS S3, Azure Blob, Google Cloud Storage, Cloudflare R2, or any S3-compatible store. Uplint uses the credentials you provide, scoped to the buckets you choose.

company-filesConnectedeu-filesConnectededge-assets+
FILE IDENTITY

Reference IDs, not bucket paths.

Every object gets a stable ID and a metadata record. Your database, your URLs, and your product logic never point at a provider-specific path.

file_8Kx92minvoice.pdf · 283.9 KB · customer: cus_72m
POLICY ROUTING

Route by tenant, region, or rule.

Declare where files should live per customer, per region, or per storage target. Change the destination in configuration, not in code.

india-dataeu-residencyasia-primary
DELIVERY

One way to serve, whatever the provider.

Request a short-lived signed URL for any file ID. Uplint resolves the current location and signs against the right provider.

GET https://…/file_8Kx92m?sig=…&exp=300expires in 5 min
MOVEMENT

Change providers without a migration project.

Move an object between buckets or providers. The file ID stays the same; only the location record updates.

ap-south-1westeuropefile_8Kx92m
EVENTS & AUDIT

Every operation, on the record.

Uploads, retrievals, moves, and deletes are recorded with the actor, the time, and the destination — one trail across every provider.

uploadfile_8Kx92m→ S3urlfile_8Kx92m300smovefile_8Kx92m→ AZ
03 The API

A small surface,
on purpose.

Five operations cover upload, retrieval, delivery, movement, and deletion. There is no provider-specific call to learn.

POST/v1/files

Upload a file into a storage target. The provider is decided by policy, not by the caller.

Request
// multipart/form-datafile: invoice.pdfstorage: "production"metadata: { customer: "cus_72m" }
Response 201 Created
{"id": "file_8Kx92m","storage": "production","location": { "provider": "s3", "bucket": "company-files", "region": "ap-south-1" },"size": 50536448,"content_type": "application/pdf","metadata": { "customer": "cus_72m" }}
04 Security & ownership

Built to hold
other people's files.

The control plane never becomes the place your data lives. It stays the layer that knows where it is.

Your buckets, your account

Objects are written to storage you own. Uplint holds identity, metadata, and routing — not a copy of your files.

Scoped credentials

Each storage connection uses credentials you issue, limited to the buckets it needs. Revoke them at the provider and the connection stops.

Private by default

Buckets stay private. Access to a file happens through signed URLs that expire, never through public object paths.

Encrypted in transit and at rest

Uplint talks to every provider over TLS, and objects are encrypted at rest by the provider you chose.

05 Questions

Straight answers.

No. Files are written to the bucket you connect, in your account. Uplint stores the file record — identity, metadata, and current location — and the routing configuration.

CONNECT A BUCKET. SHIP A FILE.

Your app knows the file.
Uplint handles the rest.

Connect storage, create a key, and upload — the same call you'll still be making when your infrastructure looks nothing like it does today.