HTML hosting API to publish from code or an AI agent
You can publish an HTML file or a ZIP to a live HTTPS link with one HTTP POST to ship.page, free forever with no signup, no credit card and no API key. The free plan accepts single HTML files up to 10 MB and ZIP archives up to 25 MB at 10 deploys a minute, with unlimited uploads and an MCP server for AI agents.
A file. A folder. A fresh start.
Your static site, one link away.
Uploading publishes your file. The link is public but unlisted, not password-protected, so leave out secrets and confidential content.
- No account, token or credit card needed to deploy
- 0 keys
- Free deploy rate limit, or 120/min on Pro
- 10/min
- Max free ZIP size (100 MB unpacked, 100 files)
- 25 MB
- Max single HTML file size on every plan
- 10 MB
How to publish an HTML page or ZIP from the command line
Prepare an index.html file or a ZIP archive
Put all your CSS and JavaScript into one HTML file up to 10 MB, or pack a multi-file static site with an index.html homepage into a ZIP up to 25 MB (100 MB unpacked, up to 100 files on the free plan). A ZIP with a single top folder is unwrapped automatically.
Send one HTTP POST to the deploy endpoint
Run curl -X POST https://ship.page/deploy -H "Content-Type: text/html" --data-binary @index.html for a single file, or set Content-Type to application/zip for a ZIP. You do not need to create an account or pass an Authorization header.
Open or share the live HTTPS link
The response comes back in seconds with a live URL on its own subdomain. Every upload sends a noindex header so search engines ignore it, while anyone with the link can open it right away.
Publish a ZIP of static files with one curl command
index.html
zip -r site.zip index.html styles.css app.js
curl -X POST https://ship.page/deploy \
-H "Content-Type: application/zip" \
--data-binary @site.zipYour options
ship.page
- Best for
- Scripts and AI agents that want to POST an HTML file or ZIP and get a live link back with no signup or API key.
- Free
- Free forever with unlimited uploads, 10 MB HTML or 25 MB ZIP, 10 deploys a minute, and a public MCP server.
- Catch
- Static files only, no custom domains, and free links stay online for 30 days unless you claim them in a free account.
Netlify
- Best for
- Teams already on Netlify that want to push a ZIP to an existing site via REST or the official Netlify MCP server.
- Free
- Deploying a ZIP is one POST to the deploys endpoint once you generate a personal access token.
- Catch
- Requires a Netlify account and token, and API deploys are capped at 3 a minute and 100 a day.
Vercel
- Best for
- Developers and AI agents using Vercel's official MCP server or CLI to deploy full frontend projects.
- Free
- The official MCP server at mcp.vercel.com can deploy a project and return a shareable URL after OAuth sign-in.
- Catch
- The REST API and MCP server require a Vercel account, and unauthenticated CLI deploys expire after one hour unless claimed.
Cloudflare Pages
- Best for
- Publishing static build folders onto Cloudflare's network from CI using wrangler pages deploy or the Pages API.
- Free
- Direct Upload works from the command line or HTTP API once you have a Cloudflare account and API token.
- Catch
- You must create an account and manage an API token before your script or agent can upload.
Surge
- Best for
- Quick folder deploys from a developer terminal after installing the global npm package.
- Free
- Runs from the command line with npm install --global surge.
- Catch
- The first run asks for an email and password in the terminal, and a new surge.sh domain goes on hold after about an hour and a half until the email is verified.
Tiiny Host
- Best for
- Paid Tiiny Host users who want to automate ZIP or HTML uploads to their existing account.
- Free
- There is no free API access.
- Catch
- The API is only available on Solo and higher plans, starting at $18 a month or $156 a year.
HTML and static site hosting APIs compared
| Service | What you need | Limits | MCP server |
|---|---|---|---|
| ship.page | Nothing (no account or API key) | 10 deploys/min, 10 MB HTML, 25 MB ZIP free | Yes (https://ship.page/mcp) |
| Netlify | Netlify account + personal access token | 3 API deploys/min, 100 API deploys/day | Yes (official, requires account) |
| Vercel | Account token (CLI has 1-hour temp flag) | Temp CLI deploy expires in 1 hour | Yes (mcp.vercel.com with OAuth) |
| Cloudflare Pages | Cloudflare account + API token | Direct Upload via wrangler or Pages API | Not specified |
| Surge | npm CLI + email and password signup | Domain held after ~1.5 hr until verified | No |
| Tiiny Host | Solo plan ($18/mo or $156/yr) + API key | Paid plans only | No |
How can an AI agent publish a web page?
Most hosting APIs fail inside sandboxed AI agents because the agent does not have a user's API token, cannot complete a browser OAuth flow, or cannot verify an email address. With ship.page, an agent with bash or HTTP access can POST raw HTML directly to https://ship.page/deploy and hand the live URL back to the user.
If your client supports the Model Context Protocol (a standard way for AI assistants to call external tools), point it at https://ship.page/mcp. Read the agent integration docs, the MCP client setup guide, or the Claude Code guide to connect Claude, ChatGPT, Cursor or a custom agent, and check the API documentation for the GitHub Action.
- Single HTML deploy: POST to https://ship.page/deploy with Content-Type: text/html and the file body.
- Multi-file ZIP deploy: POST to https://ship.page/deploy with Content-Type: application/zip and the binary ZIP.
- MCP server: connect https://ship.page/mcp so agents can deploy without writing shell commands.
- Browser fallback: drag and drop a file, ZIP or folder on the homepage and get a live link plus a downloadable PNG QR code.
When should you use Netlify, Vercel or Cloudflare Pages instead?
Pick another provider when your project needs custom domains, server-side code, or permanent free hosting tied to a Git repository. Netlify and Vercel both run official MCP servers, and Cloudflare Pages supports Direct Upload from CI with wrangler pages deploy or the Pages API.
The tradeoff is setup and rate limits: Netlify's API requires a personal access token and caps API deploys at 3 a minute and 100 a day. Vercel's REST API and mcp.vercel.com require an account (though since October 2026, running vercel deploy --temporary in the CLI publishes without an account for one hour unless claimed), and Tiiny Host locks its API behind the $18 a month Solo plan.
Tip: If your script generates previews in a loop, ship.page gives you 10 deploys a minute for free and 120 deploys a minute on the $4 a month Pro plan.
How long do API-deployed pages stay online and what files work?
An unauthenticated deploy stays online for 30 days. If you sign in with Google or an email link for a free account and claim the upload, it stays online for 90 days, and when it goes offline you can restore it from the dashboard for free for another 90 days (up to three months after it expired).
If you need permanent URLs or in-place updates via the API, see pricing: Pro is $4 a month (pages never expire or you can pick any expiry from 60 seconds, update the same link, password protection, 100 MB ZIPs up to 400 MB unpacked, 10,000 files, 120 deploys a minute) and Team is $19 a month (adds a vanity subdomain).
- Supported files: HTML, CSS, JavaScript, images, fonts, audio, video, WebAssembly and JSON.
- No server runtime: PHP, Node.js, Python, databases and WordPress do not run, and forms need a third-party service.
- Routing rules: file paths are case-sensitive, about.html opens at /about.html, and client-side routers should use hash routes (#/about) because there is no single-page-app fallback.
- No Content-Encoding header: serve plain assets or include a JavaScript decompressor for .br and .gz files.
Questions
Is there a free API to publish an HTML page without an API key?
Yes. You can send an HTTP POST request to https://ship.page/deploy with Content-Type: text/html and your HTML file as the body. It is free forever, requires 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 file 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 contain up to 100 files.
Can Claude, ChatGPT or Cursor publish pages with an MCP server?
Yes. Connect your agent to https://ship.page/mcp to publish pages directly from chat or code without setting up credentials. Netlify and Vercel also offer official MCP servers, though both require you to sign in to an account.
How long does a page published through the API stay online?
A page deployed without an account stays online for 30 days. Claiming it in a free account extends it to 90 days with free restores for another 90 days up to three months after it goes offline, and the $4 a month Pro plan keeps pages online forever or lets you set any expiry from 60 seconds.
Can I update an existing URL when I deploy again?
On the free plan, each deploy creates a new link on its own subdomain. On the $4 a month Pro plan and $19 a month Team plan, you can re-upload or edit a page and keep the same link.
Keep reading
- API and GitHub Action documentation
- Publishing from AI agents
- Connect any MCP client
- Publish from Claude Code
- Free, Pro and Team plans
Publish your HTML page in seconds
POST your file to https://ship.page/deploy or drag an HTML file, ZIP or folder into the browser with no signup.