A shell that reaches https://www.wixapis.com can publish a static site with no
Wix login. The site goes live on a *.wix-site-host.com URL and lasts one hour
from its creation unless the user claims it; after that every call on it returns
404.
Publish static files: HTML, CSS, JavaScript and assets, up to 20 MiB in all,
with an index.html at the top level when there is more than one HTML file.
Build a project first and publish its output. A Wix Astro build is released
with a login: Upload a Website or HTML Files.
Generate one UUID as anonymousId and create the site once, not per edit:
Keep anonymousId, metaSiteId and projectId, and put their values in every
later URL, not placeholders. Open siteUrl and check the pages.
Give the live site, {siteUrl}, and the claim link, each on its own line:
https://www.wix.com/live-headless-site/{projectId}?anonymousId={anonymousId}.
The site lasts one hour unless the user claims it, and then moves to a new
address. Whoever opens the link while signed in gets the site; give it only to
the user. Never create an account or sign in for them.
200: upload and release again with the same IDs and every file, changed and
unchanged; a release replaces the whole site. Leave the zip's
wix.config.json out. The address stays the same.404: the site was claimed or its hour ended. With the user's login, the
HEADLESS site query in Find an existing site
finds a claimed site; change it through Change it later.
An ended site is gone: say so and ask before creating another.Claiming moves the site into a Wix account and to a new address; the old address stops working. Claim after the last anonymous release, in one of three ways:
ExecuteWixAPI in your tool list): POST https://www.wixapis.com/headless-business-setup/v1/headless-business/anonymous/{anonymousId}/{metaSiteId}/claim
with body {}, through wix.request({ scope: 'account', ... }). The site
goes to the account the MCP is signed in as.npx @wix/cli@latest login in their
browser; npx @wix/cli@latest token then gives a token that lasts 15
minutes, and the same POST with Authorization: Bearer $ACCESS_TOKEN
claims the site into that account.The claim call returns {}. Read the site's new viewUrl with the HEADLESS
site query in Find an existing site
and give it with the site's dashboard link, as
Verify and report says. Later changes
need the user's login: Change it later.
The user drags the files onto the drop page in their own browser; the site goes live the same way and the page offers to keep it.
| Failure | Action |
|---|---|
400 with MISSING_INDEX_HTML, FILE_TOO_LARGE, TOTAL_TOO_LARGE | Read details.applicationError.code and fix the files. |
404 on any call | The site was claimed or its hour ended: see Publish changes. |
Offer feedback to Wix when a step fails or guidance is missing.
Last updated: 10 November 2026