Carousels & Infographics

Create infographic

Creates a single 1080x1350 infographic canvas (stored as a one-slide carousel row with format='infographic') that publishes as a LinkedIn IMAGE post, not a document. LinkedIn only: an X account returns 400 linkedin_only.

POST/api/public/infographics
cURLPOST /api/public/infographics
curl -X POST https://postiv.ai/api/public/infographics \
  -H "Authorization: Bearer pk_postiv_..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Launch lessons",
    "integrationId": 123
  }'
200Response
{
  "success": true,
  "carousel": {
    "id": "car2...",
    "title": "State of LinkedIn 2026",
    "status": "draft",
    "integrationId": 1234,
    "planItemId": null,
    "createdAt": "..."
  },
  "format": "infographic",
  "versionId": "cv1...",
  "versionNumber": 1,
  "slideCount": 1,
  "slides": [
    {
      "index": 0,
      "title": "State of LinkedIn 2026",
      "textPreview": "73% of B2B buyers..."
    }
  ],
  "openInPostivUrl": "https://postiv.ai/app/create?carouselId=car2...",
  "warnings": []
}

Authorization

Requires an organization API key with the posts:write scope, sent as Authorization: Bearer or x-api-key.

Body parameters

titlestringrequired

1-240 chars.

integrationIdintrequired

LinkedIn profile or company page whose brand style the infographic uses (LinkedIn only: an X account returns 400 linkedin_only).

styleIdstring

Exact styleId from list_visual_templates (format infographic), with copy in outline.fields. global:freeform has no template: a designer draws the whole page around headline, subtitle, sections, dataPoints, sourceNote and cta (no item limit), word for word, in the Brand Kit colors and fonts.

outline.topicstringrequired
outline.targetAudiencestring
outline.objectivestring
outline.anglestring
outline.styleInstructionsstring

Omit unless the user explicitly requested a specific look: otherwise the saved brand theme applies automatically.

outline.backgroundStylestring
One of:nonegriddotsdiagonalwavessubtle-noisegradient-only
outline.themeOverrideobject

Same shape as create-carousel's themeOverride; omit entirely unless explicit colors were requested.

outline.headlinestringrequired

Max 8-10 words.

outline.subtitlestring
outline.archetypestring
One of:stat-gridtimelineprocesscomparisonfunneldonutranked-barsmyth-vs-factchecklistcycleauto
outline.sections[]arrayrequired

Max 4 for templates (no limit with global:freeform). Each { title?, kind: stats|steps|comparison|timeline|list|chart|text, items: [{ label, value?, description? }] }.

outline.dataPoints[]array

Max 6 for templates (no limit with global:freeform), { value, label }: real numbers only, never invented.

outline.sourceNotestring

Small attribution/citation line.

outline.ctastring
outline.imageUrls[]string[]

Max 3.

outline.assetHints[]array

Freeform (styleId global:freeform) only; templates ignore them. Max 4, each { kind: logo | image | screenshot | website-screenshot, topic, label?, scope? }, same as create-carousel's per-slide assetHints.

planItemIduuid

Response

The created infographic (a carousel row with a single slide).

carousel.id / title / status / integrationId / planItemId / createdAtmixed
formatstring

Always 'infographic'.

versionId / versionNumber / slideCount (always 1) / slides / appliedStyle / openInPostivUrl / warningsmixed

Same shape as create-carousel (appliedStyle only for Freeform).

Errors

400missing_title / invalid_outline (missing headline)
400linkedin_only: integrationId is an X account
404integration_not_found: integrationId is not an account in this workspace / linkedin_profile_not_found: the LinkedIn profile is not active
502carousel_generation_failed

Good to know

  • Status is 201 Created. No PDF concept applies: render-carousel renders a single canvas PNG for infographics.