Skip to main content
POST
Call page.create

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.

Headers

x-request-id
string

Your own id for this request, echoed back and recorded on the audit trail. 1–128 characters from A–Z a–z 0–9 . _ : -, starting with a letter or digit; anything else is replaced by a generated id.

Maximum string length: 128

Body

application/json
name
string

Optional name for the site. Leave it out to take the default.

Maximum string length: 80
intent
string

What this site is for, in the operator's own terms. Leave it out to get the blueprint's starter copy with no paid generation. Do not invent claims, offers or statistics. A site generated from the general-marketing template carries a lead-capture form on its landing page — email and name, with a consent line — so a request for one is met by creating the site and needs nothing here. Two states where a new site does NOT show one, and neither is a reason to tell the member they cannot have a form: a site copied from a saved blueprint carries whatever form that blueprint had, which may be none, and a form saved as enabled: false is stored but not rendered. IGNORED when blueprint_id names a saved template: that path copies the saved template verbatim and runs no generation, so say the copy ran unchanged rather than implying these words shaped it.

Maximum string length: 2000
blueprint_id
string

Which blueprint to start from — a first-party template id or a saved template id (this workspace's, the company's or ours), both listed by page.list with list 'templates'. Starting from a saved template copies it into a new site here and runs no generation. Leave it out for the default general marketing site; an unknown id is refused server-side.

inspiration_url
string

Optional full https:// link to a site to take structural inspiration from. Its wording and offers are never reproduced. IGNORED when blueprint_id names a saved template — that path copies a saved template and takes structure from nothing else.

confirmation_id
string<uuid>

Omit to propose: the first call says what would happen, returns a confirmation_id and changes nothing. To go ahead, send the same arguments again with that confirmation_id, on a member's own API key; a service account's key can propose but never confirm.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
workspace
string

Which workspace to run in — its slug. Omit to use your default. With more than one reachable workspace and no default, the call is refused and the choices are listed.

Minimum string length: 1

Response

The call was admitted and dispatched. ok says whether the tool succeeded — a refusal the tool itself produced is still a 200, exactly as it is a successful JSON-RPC result over MCP.

The tool ran and answered.

ok
boolean
required
workspace
string
required

The slug of the workspace this call ran in.

working_in
object
required

Which workspace this call ran in, and how that was decided. Present on every workspace-scoped result.

state
string
Allowed value: "confirmation_required"
confirmation_id
string<uuid>
Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
expires_in_seconds
integer
request_summary
string

What will happen, in one sentence, for a person to approve before confirming.

site_id
string<uuid>
Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
name
string
blueprint_id
string
source_ref
string
draft_error
string
draft_run_key
string
build_run_id
string
build_enqueue_error
string