Skip to main content
POST
Call posts.read_piece

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

The piece's id, as content.create_request, content.status or schedule.read return it.

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
piece_id
string
required
title
string | null
required
format
string
required
status
string
required
display_time_zone
string | null
required

The workspace's zone; every time here is UTC and renders in it.

source_kind
string
required
source_ref
string | null
required
has_master_content
boolean
required
master_content
string
required

The piece's own body copy.

scheduled_for
string | null
required

The piece's own publish time, ISO 8601 UTC.

variants
object[]
required
outstanding_steps
string[]
required

The steps this piece does not yet satisfy, in order — the same check the workspace's own board runs.

retracted
boolean
required

The answer that wrote this piece was withdrawn; it is never ready to send.

ready_to_send
boolean
required
approval_status
string | null
required

Its approval request's state, or null when none was sent.

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.