GET /api/v1/posts
List your posts by lifecycle status.
Query params
Response
GET /api/v1/posts/<post_id>
Fetch one post in full. 404 if not owned by you.
Response
publication.state is one of draft, scheduled, publishing, retrying,
published, failed, missed (the scheduled time passed by more than 10
minutes without publication: the post will not go out on its own, reschedule
it). error is set only on failed and retrying;
linkedin_status and linkedin_body are LinkedIn’s own answer when LinkedIn
refused the post (they are null for other errors, e.g. an expired token).
Check it right after a scheduled time to fix and republish without waiting
for the failure email. scheduled_comments lists the comments armed on the
post (see Comments, AI score and ideas).
POST /api/v1/posts
Create a draft post.
Body
content (required) — post text. Line breaks (\n) are preserved verbatim
and rendered on LinkedIn.
This REST endpoint creates text-only drafts. MCP clients that support chat file
references can then call attach_media_to_post; otherwise add images, videos,
polls and @mentions from the MagicPost web UI.
Response (HTTP 201)
PATCH /api/v1/posts/<post_id>
Update the content of an existing post.
Body
Response
Returns 404 if you don’t own the post (IDOR guard).
POST /api/v1/org/members/<member_user_id>/posts
Create a draft owned by a member of the caller’s organisation. The caller must
be an organisation super_admin, and the target member must still belong to
the same organisation.
Response (HTTP 201)
MCP clients should use create_member_post. To attach media, pass both the
returned post_id and the same member_user_id to the appropriate media
tool, then call schedule_member_post.