Profiles
Get writing style
Reads the trained writing style for one account: a LinkedIn profile, company page or X account (voice, structure, vocabulary, custom instructions, learnings, real examples from its own posts; older profiles also have priority rules). An account with no style of its own gets the one shared from its social stack, if any.
/api/public/linkedin-profiles/:id/writing-stylecurl "https://postiv.ai/api/public/linkedin-profiles/ID_ID/writing-style" \
-H "Authorization: Bearer pk_postiv_..."{
"success": true,
"writingStyle": {
"channel": "linkedin",
"integration": {
"id": 1234,
"provider": "linkedin",
"status": "active",
"parentIntegrationId": null
},
"profile": {
"id": 1234,
"name": "Jan",
"headline": "Founder",
"picture": "https://..."
},
"hasWritingStyle": true,
"writingStyle": {
"tone": "direct"
},
"writingStyleSource": "account",
"modelContext": "Write in a direct, no-fluff tone...",
"note": null,
"updatedAt": "2026-06-01T00:00:00.000Z"
}
}Authorization
Requires an organization API key with the profiles:read scope, sent as Authorization: Bearer or x-api-key.
Path parameters
idstringrequiredIntegration id of a LinkedIn profile, company page or X account.
Response
The profile's writing style state.
writingStyle.integration.idintwritingStyle.channelstringChannel of the account.
writingStyle.integration.providerstringwritingStyle.integration.statusstringwritingStyle.integration.parentIntegrationIdint|nullwritingStyle.profileobject{ id, name, headline, picture }, plus username for an X account.
writingStyle.hasWritingStylebooleanwritingStyle.writingStyleobject|nullRaw structured style JSON (agent_profiles.tone_voice), null if untrained.
writingStyle.writingStyleSourcestringWhere the style comes from: the account itself, its social stack, or none.
writingStyle.modelContextstringFormatted prose version meant to be fed to an LLM as writing instructions; empty string if untrained.
writingStyle.notestring|nullSet when hasWritingStyle is false: write naturally and do not invent a style.
writingStyle.updatedAttimestamp|nullErrors
| 400 | id path param must be a positive integer (zod coercion failure -> validation_error) |
| 404 | integration_not_found: integration id is not an account (LinkedIn or X) this API key can use in this workspace |
Good to know
- hasWritingStyle=false means no trained style yet: callers should write naturally rather than inventing one.
- The same style Bob loads when a chat is opened on that account. The path keeps its linkedin-profiles name, but it accepts the id of an X account too.