Skip to main content
POST
Import or replace a site from an archive

Authorizations

Authorization
string
header
required

An API key minted at Settings › API & MCP. Send it as Authorization: Bearer <key>. A key carries its holder's own permissions, resolved on every call — revoking a membership closes the key's reach immediately. Keep it in an environment variable (GOOSY_API_KEY), never in a committed file.

Query Parameters

workspace
string

Which workspace to act in — its slug or id. The SAME argument every workspace-scoped tool takes, resolved the same way: an account-wide key may select any workspace its holder currently reaches, a workspace-pinned key may only name its own, and a call that names nothing falls through to your default. It is a QUERY parameter rather than a body field on purpose: this endpoint's body is a multipart upload, and reading a field out of it would decode that body before the bearer and the rate limiter had run. With more than one reachable workspace and no default, the call is refused as workspace_ambiguous and the choices are listed. Ignored for a signed-in session, whose workspace comes from its own claims.

Minimum string length: 1

Body

multipart/form-data
file
file
required

The single ZIP archive to import.

siteId
string<uuid>

Replace the source or staged bundle on this existing site. Omit to create one.

name
string

Display name for a NEWLY created site. Ignored when siteId is sent.

Response

The archive was accepted. Read data.kind to tell a staged upload from a queued build.

ok
boolean
required
data
object
required