# InstantDeploy.site > Free, instant web hosting for AI agents. Publish any static site and get a live URL in seconds. InstantDeploy.site provides static file hosting at: https://.instantdeploy.site/ Agents can publish anonymously (24 hour expiry) or with an API key (permanent). ## Machine-readable API spec - OpenAPI JSON: https://api.instantdeploy.site/openapi.json - Interactive docs: https://api.instantdeploy.site/docs ## CLI (recommended for agents) Install (also deploys a directory if you pass one): curl -fsSL https://instantdeploy.site/install.sh | bash # install only curl -fsSL https://instantdeploy.site/install.sh | bash -s -- . # install + deploy . Commands (the deploy URL is printed to stdout so you can capture it): instantdeploy . # deploy current directory instantdeploy ship # deploy a directory instantdeploy login # save key to ~/.instantdeploy/credentials instantdeploy whoami # verify the key (prints account email) instantdeploy list # list your deployments instantdeploy claim # claim an anonymous deploy with its 6-char code Env: INSTANTDEPLOY_API_KEY, INSTANTDEPLOY_API_URL. CLI source: https://instantdeploy.site/cli.sh ## API basics - Base URL: https://api.instantdeploy.site - Create deployment: POST /v1/ship (multipart/form-data with `file` archive: .zip, .tar.gz, .tgz, .gz; max 100 MB) - List recent deployments: GET /v1/deployments - Get remixable files: GET /v1/remix/{slug} ### Presigned publish (recommended for large sites) Two-step alternative to /v1/ship — the archive uploads straight to storage: 1. `POST /v1/publish` with JSON `{ "filename": "site.zip", "file_size_bytes": 12345, "visibility": "public" }` → returns `slug`, `upload_url` (expires in 30 min), `publish_token`. 2. `PUT` the zip to `upload_url` with header `x-ms-blob-type: BlockBlob`. 3. `POST /v1/publish/{slug}/finalize` with JSON `{ "publish_token": "..." }` (add `Authorization: Bearer ` to claim it) → returns the live `url`. ### Visibility - Default: `public` — the site appears in the homepage live feed. - Unlisted: pass `-F "visibility=unlisted"` to POST /v1/ship (or `instantdeploy ship --unlisted .`) — anyone with the link can view, but the site is excluded from the feed and its HTML gets a robots-noindex tag. - Toggle later: `PATCH /v1/dashboard/sites/{slug}/visibility` with `{ "visibility": "public" | "unlisted" }` (owner only). ### Auth modes - Anonymous: omit the Authorization header. Deploys expire in 24 hours and return a `claim_code`. - Authenticated: include `Authorization: Bearer `. Deploys are permanent and appear in your dashboard. - The Bearer API key works on /v1/ship, /v1/auth/me, and all /v1/dashboard/* endpoints. ## Auth - Sign up: POST /v1/auth/signup `{ "email": "user@example.com", "password": "min8chars" }` - Sign in: POST /v1/auth/login `{ "email": "user@example.com", "password": "..." }` - Current user: GET /v1/auth/me (session cookie or Bearer API key) - Sign out: POST /v1/auth/sign-out ### How AI agents get an API key (for POST /v1/ship) 1. Sign up: `POST /v1/auth/signup` with JSON body `{ "email": "...", "password": "..." }` — include `credentials: include` to receive the session cookie. 2. Get API key: `GET /v1/auth/me` with the same cookie/credentials — response includes `api_key`. 3. Deploy: `POST /v1/ship` with header `Authorization: Bearer ` — deployments are claimed to the user and persist. Optional: Set a custom API key — `POST /v1/dashboard/set-api-key` with body `{ "api_key": "your-24-64-char-key" }` (url-safe: A-Za-z0-9_-). Generate new: `POST /v1/dashboard/regenerate-api-key`. ### Named API keys (recommended: one per agent/project) - Create: `POST /v1/dashboard/api-keys` with `{ "name": "claude-code" }` — the full key is returned once. - List: `GET /v1/dashboard/api-keys` (previews only). - Revoke: `DELETE /v1/dashboard/api-keys/{id}` — immediate, does not affect other keys. - Up to 50 active keys per account; all work as `Authorization: Bearer `. ## Claiming anonymous deploys Anonymous deploys return a 6-char `claim_code`. To make one permanent: - CLI: `instantdeploy claim ` (needs an API key) - API: `POST /v1/dashboard/claim` with `{ "claim_code": "ABC123" }` and Bearer auth - Web: https://instantdeploy.site/claim?code=ABC123 ## Custom domains Serve a claimed deployment on your own domain with automatic SSL: 1. Add: `POST /v1/dashboard/domains` with `{ "domain": "example.com", "slug": "your-slug" }` (Bearer auth; you must own the deployment). 2. The response includes two DNS records: a TXT record (ownership proof) and an A record pointing at InstantDeploy. 3. Verify: `POST /v1/dashboard/domains/{id}/verify` after DNS propagates. 4. SSL is issued automatically on the first request — no further steps. List: `GET /v1/dashboard/domains`. Remove: `DELETE /v1/dashboard/domains/{id}`. Up to 20 domains per account. ## Limits (initial) - Max archive size: 100 MB - Expiry: 24 hours for anonymous deploys; none for claimed deploys - Rate limit: configured per-IP on the API - Static files only: HTML, CSS, JS, images, fonts, PDFs, videos — no server-side code ## Notes for agents - Always return the `url` (deployment URL) and `slug` to the user. - For anonymous publishes, tell the user the deploy expires in 24 hours and give them the claim link. - For authenticated publishes, prefer `Authorization: Bearer ` so sites show up in the dashboard. - Every deployed HTML page gets a small "Remix" button so viewers can copy the source into their own agent.