Postiv Public API
Use the Public API to connect trusted agents and automations to a Postiv workspace. The API can add knowledge, create document post drafts, schedule text or image posts, list LinkedIn profiles, and read cached analytics.
Authentication
Send the organization API key with either x-api-key or an Authorization bearer token.
curl https://postiv.ai/api/public/workspace \
-H "Authorization: Bearer pk_postiv_..."Scopes
Existing knowledge-base keys remain limited to knowledge:write. New keys generated from Settings receive the full set of scopes listed above; use "Regenerate Key (adds new scopes)" in Settings, under Integrations, to explicitly replace a legacy key.
Endpoints
| GET | /api/public/workspace | workspace:read | Read workspace identity and key scope context. |
| POST | /api/public/knowledge | knowledge:write | Add a text knowledge item to the organization knowledge base. |
| GET | /api/public/knowledge/search | knowledge:read | Semantically search the workspace knowledge base. |
| GET | /api/public/inspiration | inspiration:read | Search/filter moderated LinkedIn inspiration by topic, creator, recency, engagement, format, and creator size. |
| GET | /api/public/templates | posts:read | Search global and workspace LinkedIn post templates. |
| GET | /api/public/linkedin-profiles | profiles:read | List active LinkedIn profiles/pages available in the workspace. |
| GET | /api/public/linkedin-profiles/:id/writing-style | profiles:read | Read a profile's trained writing style and model-ready instructions. |
| GET | /api/public/content-plans | posts:read | List Bob content plans with plan items and pillar distribution. |
| GET | /api/public/content-plan-items/:id | posts:read | Read one Bob plan item with its saved source material. |
| GET | /api/public/comment-plugs/config | profiles:read | Read default Comment Plug settings and readiness for workspace profiles. |
| POST | /api/public/comment-plugs/config | posts:schedule | Set a profile's default Comment Plug for future scheduled posts. |
| POST | /api/public/posts | posts:write | Create a document post draft. |
| GET | /api/public/posts | posts:read | List workspace posts by status, profile, search, limit, and offset. |
| GET | /api/public/posts/:id | posts:read | Read one post draft or scheduled/published record. |
| PATCH | /api/public/posts/:id | posts:write | Update draft title, content, or assigned LinkedIn profile. |
| POST | /api/public/posts/:id/schedule | posts:schedule | Schedule a text, image, or carousel post through the publish queue. |
| PATCH | /api/public/posts/:id/schedule | posts:schedule | Reschedule a scheduled post to a new time. |
| DELETE | /api/public/posts/:id/schedule | posts:schedule | Cancel a scheduled publish; the post returns to draft. |
| POST | /api/public/images/:id/edit | images:write | Edit an existing Postiv image with instructions, stacking a new version on the same image. |
| POST | /api/public/carousels | posts:write | Generate a branded LinkedIn carousel from a structured content outline. |
| POST | /api/public/infographics | posts:write | Generate a branded single-canvas infographic that publishes as an image post. |
| GET | /api/public/carousels/:id | posts:read | Read a carousel or infographic: slide summaries, status, and render readiness. |
| POST | /api/public/carousels/:id/render | posts:write | Render slide preview images and the publish-ready PDF (required before scheduling), or the infographic canvas PNG. |
| POST | /api/public/carousels/:id/edit-slide | posts:write | Edit one slide with a natural-language instruction, saving a new version. |
| GET | /api/public/analytics/accounts | analytics:read | List cached analytics accounts. |
| GET | /api/public/analytics/summary | analytics:read | Read cached KPI summary for one account or all accounts. |
| GET | /api/public/analytics/performance | analytics:read | Read cached performance overview series. |
| GET | /api/public/analytics/top-posts | analytics:read | Read top posts with signed media URLs where available. |
| GET | /api/public/analytics/posts/:id | analytics:read | Read cached analytics for one Postiv or analytics post id. |
Post Workflow
- 1. Call
GET /api/public/linkedin-profilesand choose anid. - 2. Read that profile's writing style and search the knowledge base before drafting original content. Optionally search templates or select a Bob plan item.
- 3. Call
POST /api/public/poststo create a document draft. PasstemplateIdorplanItemIdwhen applicable so attribution stays linked. - 4. Optionally patch the draft content or profile assignment.
- 5. Call
POST /api/public/posts/:id/schedulewith an ISO scheduled time.
Content is stored verbatim by default. Pass "humanize": true on create to run Postiv's humanizer over the content before saving (the same anti-AI-pattern pass the in-app assistant uses); updates are always verbatim. Scheduling never publishes immediately: scheduledTime must be at least 2 minutes in the future, and if the target profile has approvers configured the post waits for their approval (check requiresApproval in the response). If the post has an image attached in Postiv and you omit mediaType/mediaUrls, the image is included automatically.
Analytics Workflow
Public analytics endpoints are read-only and return cached/imported analytics from Postiv tables. They do not force LinkedIn refreshes. accountId is required: use an account id from GET /api/public/analytics/accounts (each maps to one LinkedIn profile) for per-profile numbers, or accountId=all for an explicit workspace-wide aggregate.
Hosted MCP
The hosted MCP server exposes the same workspace automation surface as the Public API. It uses the same organization API key, the same scopes, and the same server-side services behind the public endpoints. The endpoint is https://postiv.ai/mcp (https://postiv.ai/api/mcp/mcp also works).
In hosts that support MCP Apps, such as claude.ai, tools render interactive widgets instead of plain text: a post editor card, an image preview, a carousel pager, and inspiration cards.
| MCP | get_workspace | workspace:read | Read workspace identity and available scopes. |
| MCP | add_knowledge | knowledge:write | Add a text knowledge item. |
| MCP | search_knowledge | knowledge:read | Semantically search the workspace knowledge base. |
| MCP | search_templates | posts:read | Search proven global and workspace post templates. |
| MCP | search_inspiration | inspiration:read | Search/filter inspiration by topic, creator, recency, engagement, format, and creator size. |
| MCP | list_linkedin_profiles | profiles:read | List available LinkedIn profiles/pages. |
| MCP | get_writing_style | profiles:read | Read a profile's trained voice, rules, instructions, learnings, and examples. |
| MCP | list_content_plans | posts:read | List Bob plans and their pillar distribution for a profile. |
| MCP | get_content_plan_item | posts:read | Read one Bob plan item with its exact angle and saved sources. |
| MCP | get_comment_plug_config | profiles:read | Read profile default Comment Plug settings and readiness. |
| MCP | set_comment_plug_config | posts:schedule | Set a profile default Comment Plug for future schedules. |
| MCP | create_post | posts:write | Create a document post draft. |
| MCP | list_posts | posts:read | List workspace posts. |
| MCP | get_post | posts:read | Read a post. |
| MCP | update_post | posts:write | Update a draft post. |
| MCP | schedule_post | posts:schedule | Schedule a text, image, or carousel post. |
| MCP | unschedule_post | posts:schedule | Cancel a scheduled publish; the post returns to draft. |
| MCP | reschedule_post | posts:schedule | Move a scheduled post to a new publish time. |
| MCP | generate_post_image | images:write | Generate a branded AI image for a post, returned inline in the client. |
| MCP | edit_post_image | images:write | Edit an existing image with instructions, stacking a new version to iterate on. |
| MCP | create_carousel | posts:write | Generate a branded LinkedIn carousel from a structured content outline. |
| MCP | create_infographic | posts:write | Generate a branded single-canvas infographic that publishes as an image post. |
| MCP | render_carousel | posts:write | Render slide previews + the publish PDF (or the infographic canvas PNG), shown inline in the client. |
| MCP | get_carousel | posts:read | Read a carousel with slide summaries and render readiness. |
| MCP | edit_carousel_slide | posts:write | Edit one carousel slide with a natural-language instruction. |
| MCP | list_analytics_accounts | analytics:read | List cached analytics accounts. |
| MCP | get_analytics_summary | analytics:read | Read cached KPI summary. |
| MCP | get_performance_overview | analytics:read | Read cached performance overview. |
| MCP | get_top_posts | analytics:read | Read top cached posts. |
| MCP | get_post_analytics | analytics:read | Read cached analytics for one specific post. |
claude.ai (custom connector)
claude.ai custom connectors can only take a URL, they cannot send a header, so the API key goes in the path instead of an Authorization header. Treat this URL as a secret, the same as the key itself.
https://postiv.ai/mcp/pk_postiv_...- 1. In claude.ai, go to Settings, then Connectors.
- 2. Click "Add custom connector".
- 3. Paste the URL above with your own key in it.


Claude Code
claude mcp add --transport http postiv https://postiv.ai/mcp \
--header "Authorization: Bearer pk_postiv_..."Generic Streamable HTTP Client
{
"postiv": {
"url": "https://postiv.ai/mcp",
"headers": {
"Authorization": "Bearer pk_postiv_..."
}
}
}Claude Desktop With mcp-remote
{
"mcpServers": {
"postiv": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://postiv.ai/mcp",
"--header",
"Authorization: Bearer pk_postiv_..."
]
}
}
}Examples
Add Knowledge
curl -X POST https://postiv.ai/api/public/knowledge \
-H "x-api-key: pk_postiv_..." \
-H "Content-Type: application/json" \
-d '{"title":"Q3 positioning","content":"Our strongest market message is..."}'Create A Draft
curl -X POST https://postiv.ai/api/public/posts \
-H "Authorization: Bearer pk_postiv_..." \
-H "Content-Type: application/json" \
-d '{"title":"Launch lessons","content":"Three things we learned from launch week...","integrationId":123,"humanize":true}'Schedule A Draft
curl -X POST https://postiv.ai/api/public/posts/POST_ID/schedule \
-H "Authorization: Bearer pk_postiv_..." \
-H "Content-Type: application/json" \
-d '{"integrationId":123,"scheduledTime":"2026-07-08T09:30:00.000Z","mediaType":"text"}'Edit An Image
curl -X POST https://postiv.ai/api/public/images/IMAGE_ID/edit \
-H "Authorization: Bearer pk_postiv_..." \
-H "Content-Type: application/json" \
-d '{"editPrompt":"Make the background darker and increase the contrast of the headline."}'Read Analytics
curl "https://postiv.ai/api/public/analytics/top-posts?accountId=all&limit=10&sort=impressions" \
-H "Authorization: Bearer pk_postiv_..."