Guides
Post workflow
The recommended flow for drafting and scheduling a LinkedIn or X post through the Public API: pick an account, ground the draft, create, refine, schedule.
The API mirrors how Postiv itself creates content: pick the account that will publish (a LinkedIn profile, company page or X account), ground the draft in the workspace voice and knowledge, then move the draft through the publish queue.
- 1Call GET /api/public/workspace and choose an account
idfromworkspace.accounts, which lists LinkedIn profiles, company pages and X accounts when the key hasprofiles:read. GET /api/public/linkedin-profiles lists LinkedIn only. - 2Read that account's writing style and search the knowledge base before drafting original content. Optionally search templates or select a Bob plan item.
- 3Call POST /api/public/posts to create a draft. Pass
templateIdorplanItemIdwhen applicable so attribution stays linked. - 4Optionally patch the draft content or profile assignment.
- 5Call POST /api/public/posts/:id/schedule with an ISO scheduled time.
Verbatim by default, humanize on demand
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 rules
- Scheduling never publishes immediately:
scheduledTimemust be at least 2 minutes in the future. - If the target account has approvers configured, the post waits for their approval; check
requiresApprovalin the response. - If a LinkedIn post has an image, video, PDF or carousel saved in Postiv and you omit all media inputs, the saved media is included automatically. A saved carousel must be rendered first, as with
carouselId. X posts carry their images inside the post, so the media fields do not apply to them.
Posting to X
Pass the integrationId of an X account and write the post as tweets instead of content. Send exactly one of content (plain text, split into tweets automatically), tweets (a string, or an array for a thread) or article ({ headline, body }). humanize and templateId are LinkedIn only. X drafts are saved as written: a tweet over 280 characters (a link counts 23) can sit in a draft but cannot be scheduled. Add images with POST /api/public/posts/:id/media and place them with tweetIndex or articlePlacement. Scheduling an X post uses the same schedule call as LinkedIn; the LinkedIn media fields return x_media_not_supported.
curl -X POST https://postiv.ai/api/public/posts \
-H "Authorization: Bearer pk_postiv_..." \
-H "Content-Type: application/json" \
-d '{
"title": "Launch thread",
"tweets": ["We just launched.", "Here is what we learned."],
"integrationId": 456
}'End-to-end example
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
}'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-08-01T09:30:00.000Z",
"mediaType": "text"
}'