Skip to main content
POST
Call work.file

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
Idempotency-Key
string
required

Your key for this write: send the same key when you retry and the first result comes back instead of a second action. Keys are honoured for at least 24 hours. 1–200 visible ASCII characters. Replaces the idempotency_key body field, which still works until 2026-12-31; this action needs a key on one of the two, and the header is the one to send.

Maximum string length: 200

Body

application/json
to_project_id
string<uuid> | null
required

The project it goes into, by its id from board.tree or the project the member is on. null only to take a project out to the top level of Projects.

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})$
item_kind
enum<string>

What it is: a site, an automation, a video (or short), a post, an image (a photo or picture), a document, an uploaded file, a data table, an email, a widget, or a project.

Available options:
site,
automation,
video,
post,
image,
document,
file,
table,
email,
widget,
project
item_id
string<uuid>

Its id, only when a verb or the page already showed it to you (a project's from board.tree, a widget's from widget.list). Otherwise send item_name: never call a list just to find an id.

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})$
item_name
string

The member's words for its name, title or subject ('the latte video', 'price list', 'the Monday report automation'). It works for every kind but a project and a widget; the tool finds the item itself, and when several things match the answer lists them so you can ask which.

Required string length: 1 - 200
idempotency_key
string

Deprecated on REST: send the Idempotency-Key header instead. Still accepted until 2026-12-31; if both are sent they must match.

Required string length: 1 - 200
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
item_kind
enum<string>
required
Available options:
site,
automation,
video,
post,
image,
document,
file,
table,
email,
widget,
project
item_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
from_project_id
string<uuid> | null
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})$
to_project_id
string<uuid> | null
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})$
trail
string
required
answer_note
string
required
replayed
boolean
required

True when this is the first result of an earlier call with the same idempotency_key, returned without changing anything again.

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.