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.

GET/api/public/linkedin-profiles/:id/writing-style
cURLGET /api/public/linkedin-profiles/:id/writing-style
curl "https://postiv.ai/api/public/linkedin-profiles/ID_ID/writing-style" \
  -H "Authorization: Bearer pk_postiv_..."
200Response
{
  "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

idstringrequired

Integration id of a LinkedIn profile, company page or X account.

Response

The profile's writing style state.

writingStyle.integration.idint
writingStyle.channelstring

Channel of the account.

writingStyle.integration.providerstring
writingStyle.integration.statusstring
writingStyle.integration.parentIntegrationIdint|null
writingStyle.profileobject

{ id, name, headline, picture }, plus username for an X account.

writingStyle.hasWritingStyleboolean
writingStyle.writingStyleobject|null

Raw structured style JSON (agent_profiles.tone_voice), null if untrained.

writingStyle.writingStyleSourcestring

Where the style comes from: the account itself, its social stack, or none.

writingStyle.modelContextstring

Formatted prose version meant to be fed to an LLM as writing instructions; empty string if untrained.

writingStyle.notestring|null

Set when hasWritingStyle is false: write naturally and do not invent a style.

writingStyle.updatedAttimestamp|null

Errors

400id path param must be a positive integer (zod coercion failure -> validation_error)
404integration_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.