List posts with optional status filter, create drafts for human review, fetch one post with its event timeline, or PATCH to revise after rejection. Agents cannot edit approved or published posts.
List posts
GET /api/v1/social/posts?status=&limit=&offset=
Authorization: Bearer av_live_…
First comment posted from the author's account right after publish — link-in-comments pattern (max 2,200 chars). Published with the post after approval; failures appear in the event timeline.
platformCommentOverrides
no
Per-platform first comments. Keys: instagram, threads, x, linkedin. Blank platforms use firstComment. Comment limits: instagram 2,200, threads 500, linkedin 1,250.
targets
no
Array of { platform, accountId } — max 10. IDs from GET /social/accounts.
proposedScheduleAt
no
ISO 8601 datetime with offset. Suggestion only — human approval sets the real schedule.
mediaAssignments
no
Array of { assetId, platform, sortOrder } — max 20.
Creates with source: "mcp". Returns 201 with { post }.
Targeting X on a free plan returns 402 PLAN_LIMIT — X is a paid-plan entitlement, separate from the publishing-credits balance.
Caption limits at validation: instagram 2,200, threads 500, linkedin 3,000 characters (REST may still accept legacy x keys on existing rows). Comment limits: instagram 2,200, threads 500, linkedin 1,250. At publish, Aveiro resolves each target's comment (override when set, else firstComment) before sending it to Chirio.
MCP tools
aveiro_social_create_draft and aveiro_social_update_draft accept the same body fields with snake_case names (first_comment, platform_comment_overrides, platform_overrides, proposed_schedule_at, and so on). MCP platform keys are instagram, threads, and linkedin — X is not available for new MCP drafts. The stdio proxy in mcp/aveiro matches the hosted MCP server for these fields.
Get post
GET /api/v1/social/posts/{postId}
Authorization: Bearer av_live_…
Required scope:social:write
Returns { post } including the full events timeline. Use this to read rejection comments before revising.