Posts
List posts
Lists workspace posts, filterable by status/profile/text search. 'scheduled' only returns posts that actually have a live publish_queue entry (guards against stale status left by legacy bugs).
/api/public/postscurl "https://postiv.ai/api/public/posts?status=...&search=launch&limit=10" \
-H "Authorization: Bearer pk_postiv_..."{
"success": true,
"posts": [
{
"id": "post1...",
"title": null,
"type": "document",
"status": "draft",
"contentPreview": "Most founders think content strategy...",
"integrationId": 1234,
"profile": {
"id": 1234,
"name": "Jan",
"headline": "Founder",
"picture": null
},
"scheduledTime": null,
"queueStatus": null,
"tags": [],
"openInPostivUrl": "https://postiv.ai/app/create?postId=post1..."
}
],
"pagination": {
"limit": 50,
"offset": 0,
"count": 1
}
}Authorization
Requires an organization API key with the posts:read scope, sent as Authorization: Bearer or x-api-key.
Query parameters
statusstring|string[]draft, scheduled, published, failed, cancelled, pending_approval, approval_denied, changes_requested. Comma-separated or repeated param. Alias: statuses (both are merged).
integrationIdintAlias: integration_id.
searchstringCase-insensitive title/content search, max 200 chars.
limitintdefault: 501-100.
offsetintdefault: 00-5000.
Response
Paginated post list with content previews (not full content).
posts[].iduuidposts[].titlestring|nullposts[].typestringposts[].statusstringposts[].contentPreviewstringFirst 300 chars of content (public API's own trim; the MCP tool trims separately).
posts[].integrationIdint|nullposts[].templateIduuid|nullposts[].planItemIduuid|nullposts[].profileobject|null{ id, name, headline, picture }: picture uses a cheap non-LinkedIn-CDN-only URL; full resolution happens on GET one post.
posts[].scheduledTimetimestamp|nullposts[].queueStatusstring|nullposts[].latestVersionint|nullposts[].hasImageboolean|nullposts[].tagsarrayposts[].authorobject|null{ name } only: no email.
posts[].openInPostivUrlstringDeeplink into the Postiv editor.
posts[].createdAt / updatedAttimestamppaginationobject{ limit, offset, count }
Errors
| 400 | invalid_integration_id |
Good to know
- REST route response doesn't include contentLength (the MCP tool's version adds that field; REST's list route computes contentPreview server-side identically but the field set differs slightly per code path: see notes above).