uploadthefile.com

Your AI writes the site. We keep it online.

Publishing infrastructure for AI builders. Three calls, one live link, no TLS of your own.

Three calls. One live link.

# 1. Register the end-user once, idempotent on your own externalId
curl -X POST https://upload.tf/api/platform/v1/subjects \
-H "x-api-key: $UPLOADTF_KEY" \
-H "Content-Type: application/json" \
-d '{"externalId":"user_42"}'
 
# 2. Host what their AI just generated
curl -X POST https://upload.tf/api/platform/v1/subjects/ext:user_42/sites \
-H "x-api-key: $UPLOADTF_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"acme-preview","files":[{"path":"index.html","contentBase64":"PGgxPkhlbGxvPC9oMT4="}]}'
 
# 3. Mint a token their own browser can use to keep editing
curl -X POST https://upload.tf/api/platform/v1/subjects/ext:user_42/tokens \
-H "x-api-key: $UPLOADTF_KEY" \
-H "Content-Type: application/json" \
-d '{"cap":["site:write"]}'

It runs on Corporate

Its own entitlement, separate from API access. Business has the full v1 REST API and still cannot create a subject.

Platform tier

Corporate

$61/mo

Billed annually at $732 a year

Or $79 a month, billed monthly

20 seats
Get Corporate

Included

  • Platform API: subjects, sites, per-file patches, scoped tokens, usage, webhooks
  • Customers dashboard: stats, file inspector, edit history, abuse reports
  • A moderator seat scoped to your customers and nothing else
  • Host your customers’ sites
  • Customer dashboard & reports
  • Account manager & SLA
  • SSO & audit logs

Allowances

End-user customers
100,000
Live sites before metering
10,000
Publishes per month
500,000
API calls per month
10,000,000
Pooled storage
2 TB
Page views per month
10,000,000
Max file size
5 GB
Custom domains
1,000
Platform API keys
100
Team seats
20

What you stop building

TLS and subdomains
Every site gets its own https://name.upload.tf at creation. No certificates, no wildcard DNS.
Edits, not redeploys
Patch two files by path. The link, the analytics and any connected domain all survive.
Per-customer caps
Cap storage per end-user, read usage back per subject, rebill on your own terms.
Signed webhooks
Publish, update, expiry and moderation events. Retried with backoff, replayable from a log.

How it works

  1. Register the end-user

    POST /subjects, idempotent on your own externalId.

  2. Host the output

    POST /sites takes a ZIP or a JSON file map and returns a live link.

  3. Hand over a scoped token

    POST /tokens mints a short-lived token pinned to that one subject.

Abuse and content screening

Strangers publish. Someone owns the fallout.

Every upload is unpacked and screened before it serves, and you keep your own suspend and delete levers.

422
Publish refused on a Safe Browsing hit
451
Withheld on legal grounds, RFC 7725
0.5 / 2 / 5%
Advisory, probation, suspension

The detail

Screened before it serves

Archives are unpacked before publish; path traversal and decompression bombs are rejected. The page URL and every link in its HTML and SVG are checked against Google Safe Browsing, and a hit refuses the publish with a 422. Raster images and sampled video frames are classified for explicit content by OpenAI. That classifier is advisory: it flags for review, it never blocks a publish.

CSAM detection, then immediate suspension

Cloudflare's CSAM Scanning Tool only hashes images entering the edge cache, which a dynamic Worker response would bypass, so we deliberately write servable image bytes into the Cache API. A confirmed detection suspends that end-user at once and fires platform.subject.csam_suspended. The page is withheld with 451.

A settled invoice unlocks nothing

Three signals withhold a page, in fixed order: our moderation status, an admin lock on one of your end-users, then a plan lock for non-payment. Withheld pages return 404. Payment recovery clears only the plan lock, so it can never restore content withheld for abuse.

Your own moderation desk

One PATCH, or one click in your dashboard, stops a customer publishing or editing. Sites already live keep serving: a write freeze is not a takedown. To pull content, delete the site by id. Your Customers view carries the roster, stats, a file inspector, edit history and abuse reports. Staff it with contractors if you like: the support role sees customers and nothing else, and cannot reverse one of our abuse actions.

You see the line before you cross it

We score each platform on the share of active end-users with a confirmed adverse action over 90 days: under 0.5 percent normal, 0.5 advisory, 2 probation, 5 suspension. Three confirmed CSAM detections reach probation on their own. Under 20 active subjects, rate alone never passes advisory. Every change fires platform.abuse.tier_changed.

We act without asking you first

For safety and abuse processing we are an independent controller, not your processor. That is what lets us act on illegal content without waiting for an instruction from you.

What we do not claim: no SOC 2, no ISO certification, no 24/7 review desk, no detection rate. Screening fails open by design, because a scanner outage must not take every publish offline.

Questions platforms ask

Which plan do I need?

Corporate. Platform tenancy is separate from API access: Business has the full v1 REST API and still gets 403 on the platform endpoints.

Do my end-users get their own account?

No. Each one is a subject of your account. Billing, quota and plan stay on your side.

Can my end-users bring a custom domain?

Not through the API today. Domain checkout and DNS verification are session-authenticated, with no API-key equivalent. Platform sites serve on their own upload.tf name.

Who gets billed, me or my end-users?

You, on one plan. The usage endpoint splits consumption per subject, so you can rebill.

Why not build this myself?

Certificates, archive validation, Safe Browsing and CSAM screening, per-customer quotas, a withholding ladder that survives a failed payment, signed webhook retries, and a moderation desk.