Skip to main content

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.