Deploy a site (create or full-replace)
deploy_sitePublish a website to a live URL. Deploy a static site or single-page app you built (with AI or by hand) to your platform subdomain (e.g. {name}.vibedeploy.be or {name}.vibedeploy.eu) with automatic SSL, and optionally a custom domain. The fastest way to get a localhost project or an AI-generated site online. DESTRUCTIVE on existing sites: replaces every file on the named site with the supplied set. Files not in this call are deleted. For a new site, creates and provisions it. For an existing site, requires confirm: "I-want-to-replace-all-files" to proceed; without confirm the call is rejected before anything is touched. Use update_site (default mode:'patch') if you want to add or change individual files without removing the rest. Use dryRun:true to preview the diff. LARGE FILES: don't split a big text file across a placeholder deploy + chunked follow-ups — a 100-250 KB HTML/CSS/JS file fits in THIS call when sent with encoding:'gzip+base64' (gzip locally, base64 the result; text compresses 3-5×). The site is published at your platform subdomain (e.g. {name}.vibedeploy.be or {name}.vibedeploy.eu). After deploy, call add_custom_domain to also serve at a user-owned hostname.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Site subdomain. Lowercase, 3-63 chars, alphanumeric + hyphens. Must not start or end with a hyphen. | |
| files | Yes | Either an array of {path, content, encoding?} entries OR a path->content map. Total payload <= 500 MB. | |
| dryRun | No | If true, validate input + introspect what would change but don't write or delete. Returns the same shape with `dryRun: true` and `deletedFiles` showing what *would* be removed. Strongly recommended before any deploy_site against an existing site. | |
| confirm | No | Required when the named site already exists. Pass exactly "I-want-to-replace-all-files" to acknowledge that every existing file will be deleted and replaced with this new fileset. Omit on first deploy of a new site. If you want to add or change files without removing the others, use update_site instead — it defaults to patch mode. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Live URL of the deployed site. | |
| dryRun | No | True if this was a dry-run; nothing was written or deleted. | |
| siteId | Yes | ||
| created | Yes | True if the site was created by this call. | |
| warnings | No | Surfaced issues that did not block the deploy. Common types: DOTFILE_PUBLIC (a .well-known/* file is served publicly, confirm intent), or secret-scanner findings (AWS Access Key, Stripe Key, JWT Token, etc.). | |
| request_id | No | Server-assigned request correlation id. Quote it when contacting support. | |
| deletedFiles | Yes | Files that existed before this call and were removed by it. Empty for brand-new sites. | |
| customHeaders | No | Result of the Netlify-style _headers sync: include a _headers file in the site root to override default response headers (e.g. Permissions-Policy). Site-wide (/*) rules only. | |
| filesDeployed | Yes |