HTML hosting APIs
Which HTML hosting API publishes a page without an API key?
ship.page is a free static HTML hosting API with no signup, no credit card and no API key, handling 10 MB HTML files and 25 MB ZIPs at 10 deploys a minute.
If you want a script or an AI agent to publish a web page without an API key, ship.page takes a single HTTP POST to https://ship.page/deploy and returns a live HTTPS link in seconds. It's free forever with 0 keys, accepts 10 MB HTML files or 25 MB ZIPs (up to 100 files, 100 MB unpacked) at 10 deploys a minute, and runs a keyless MCP server at https://ship.page/mcp. Vercel's CLI also has a --temporary flag that publishes without an account for 1 hour, while Netlify, Cloudflare Pages, Surge and Tiiny Host all require accounts, tokens or paid plans.
| Service | Price | Limits | Main catch |
|---|---|---|---|
| ship.page | Free forever; Pro $4/mo, Team $19/mo | 10 deploys/min, 10 MB HTML, 25 MB ZIP (100 files, 100 MB unpacked) free | Static files only, no custom domains, pages are noindex; claim a free link with a free account to keep it |
| Netlify | Free tier available | 3 API deploys/min, 100 API deploys/day | Requires a Netlify account and personal access token |
| Vercel | Free tier available | CLI --temporary deploy expires in 1 hour |
REST API and mcp.vercel.com require a Vercel account and OAuth sign-in |
| Cloudflare Pages | Free tier available | Direct Upload via wrangler or Pages API | Requires a Cloudflare account and API token before uploading |
| Surge | Free | Domain held after ~1.5 hours until verified | Requires npm CLI plus email and password signup in the terminal |
| Tiiny Host | Solo $18/mo or $156/yr | Paid plans only | No free API access |
ship.page
ship.page is free forever, with no signup, no credit card and unlimited uploads. Every upload gets its own live HTTPS link on an unguessable random subdomain. You can publish from the browser by dropping a file, folder or ZIP (or pasting raw HTML), which also gives you a downloadable PNG QR code, or you can automate it through a GitHub Action, one curl POST, or an MCP server.
When we wired this into sandboxed AI agents, the difference was simple: most hosting APIs fail in a sandbox because the agent doesn't have the user's API token, can't finish a browser OAuth flow, and can't click an email verification link. With ship.page, an agent with bash or HTTP access just sends a POST to https://ship.page/deploy with Content-Type: text/html and the raw HTML as the body, or Content-Type: application/zip for a binary ZIP archive, and hands the URL straight back to the user. If your AI client speaks Model Context Protocol (Claude, ChatGPT, Cursor, Claude Code or a custom agent), you point it at https://ship.page/mcp and it deploys without writing shell commands at all.
The free limits are 10 deploys a minute, single HTML files up to 10 MB (the 10 MB single-HTML limit applies on every plan), and ZIPs up to 25 MB containing up to 100 files and 100 MB unpacked. An unauthenticated deploy doesn't need an account, and if you sign in with Google or an email link for a free account and claim the page, it stays online as long as you keep it. Free pages have a small badge visitors can close. Pro is $4 a month and removes the badge, bumps limits to 100 MB ZIPs (400 MB unpacked), 10,000 files and 120 deploys a minute, adds password protection and analytics, lets you update an existing page at the same URL, and gives you pages that never expire (or you can pick any expiry starting from 60 seconds). Team is $19 a month and adds a vanity subdomain.
There are real limits you should know up front. It hosts static files only: HTML, CSS, JavaScript, images, fonts, audio, video, WebAssembly and JSON. There's no server code (no PHP, Node.js, Python, WordPress or databases), no build step, and forms need a third-party service. File paths are case-sensitive (about.html opens at /about.html), there's no single-page-app fallback so client-side routers need hash routes like #/about, and there's no Content-Encoding header, so serve plain assets or ship a JavaScript decompressor for .br and .gz files. You also can't bring a custom domain, every page is served with noindex, nofollow (with no public list of uploads, so don't use it for sites that need search traffic), and free uploads get a new link each time since same-URL updates require Pro.
It suits scripts, CI jobs and AI agents that want to POST an HTML file or a ZIP and get a live link back right away with no signup or API key.
Netlify
Netlify lets you push a ZIP archive to an existing site with a single POST to its deploys endpoint, and it runs an official MCP server too. To use either one, you first have to create a Netlify account and generate a personal access token.
Once you have the token, the REST API is straightforward, though Netlify caps API deploys at 3 a minute and 100 a day. That's plenty for occasional builds, but tight if you have an agent generating previews in a loop.
It suits teams already on Netlify that want to push a ZIP to an existing site via REST or the official Netlify MCP server.
Vercel
Vercel has an official MCP server at mcp.vercel.com alongside its REST API and CLI. Both the REST API and the MCP server require a Vercel account, and the MCP server asks you to complete an OAuth sign-in before an agent can deploy a project and get a shareable URL back.
Since October 2026, running vercel deploy --temporary in the CLI publishes without an account. The catch is that you need the CLI installed, and those unauthenticated deploys expire after 1 hour unless someone claims them.
It suits developers and AI agents using Vercel's official MCP server or CLI to deploy full frontend projects.
Cloudflare Pages
Cloudflare Pages supports Direct Upload from the command line using wrangler pages deploy or over HTTP through the Pages API. It doesn't specify an MCP server.
Before a script or an agent can upload a build folder, you have to set up a Cloudflare account and create and manage an API token.
It suits developers publishing static build folders onto Cloudflare's network from CI using wrangler pages deploy or the Pages API.
Surge
Surge is a command-line tool you install globally with npm install --global surge. It doesn't have an MCP server.
When you run it the first time, it stops in the terminal to ask for an email and password. And if you don't verify that email address, a new surge.sh domain goes on hold after about an hour and a half.
It suits developers doing quick folder deploys from a terminal after installing the global npm package.
Tiiny Host
Tiiny Host has an HTTP API for uploading HTML files and ZIPs, with no MCP server. There's no free API access at all; the API is locked behind the Solo plan and higher, which starts at $18 a month or $156 a year, and requires an account and API key.
It suits paid Tiiny Host users who want to automate ZIP or HTML uploads to their existing account.
FAQ
Is there a free API to publish an HTML page without an API key?
Yes. Send an HTTP POST request to https://ship.page/deploy with Content-Type: text/html and your HTML file as the body. It's free forever, needs no account or API key, and returns a live HTTPS URL in seconds.
How do I deploy a multi-file static site with CSS and images via the API?
Put your index.html, stylesheets, scripts and images into a ZIP archive and POST it to https://ship.page/deploy with Content-Type: application/zip. On the free plan, a ZIP can be up to 25 MB (100 MB unpacked) and hold up to 100 files.
How can an AI agent publish a web page over MCP without OAuth?
Point your MCP client at https://ship.page/mcp. Unlike mcp.vercel.com (which requires OAuth sign-in) or Netlify's MCP server (which requires an account), ship.page's MCP server lets Claude, ChatGPT, Cursor, Claude Code or a custom agent deploy directly without an account or token.
How long do free ship.page links stay online?
An unauthenticated deploy needs no account, and if you sign in with Google or an email link for a free account and claim the page, it stays online as long as you keep it. On the $4 a month Pro plan, pages never expire, or you can set a custom expiry starting from 60 seconds.
When should I use Netlify, Vercel or Cloudflare Pages instead of ship.page?
Use one of them when your site needs a custom domain, server-side code, search engine indexing, or free hosting tied to a Git repository. ship.page serves static files only with noindex, nofollow and doesn't support custom domains.