Skip to main content
POST
Call automations.author

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
board_id
string<uuid>
required
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
required

What this automation is called, in the member's words.

Required string length: 1 - 120
steps
object[]
required

The steps, in the order they run. At most 24. An automated or ask step with no implementation is saved as a shape and refused when the automation is switched on.

Required array length: 1 - 24 elements
description
string

One or two plain sentences saying what it is for.

Maximum string length: 600
edges
object[]

Only when the run does not simply go through the steps in order: which step leads to which. Leave it out for a straight line; an empty list is refused.

Maximum array length: 64
trigger
object

What fires it. Omit when the operator did not say — never invent a schedule.

sketch_trigger
object
review_gated
boolean
callable
object
run_queue
string
error_workflow
string<uuid>

Only when the member names one: the id of another automation in this workspace that runs whenever a run of this one fails. Its input names what failed, under failed: the run, the automation, the step, and why: its code and message. Leave it out on a change to keep the one already set.

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})$
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
state
required
Allowed value: "confirmation_required"
board_id
string<uuid>
required
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
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.

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.

expected_latest_version
integer | null
Required range: x > 0
version
integer
display_name
string
created
boolean
status
string
Allowed value: "draft"
bound_steps
string[]
unbound_steps
string[]