LinkedIn Settings

API metadata for publishing text, images, and video to LinkedIn personal profiles and company pages.

Overview

Platform enum: linkedin

Supported post types:

TypeMediaNotes
TextFeed post
Image1+ imagesMulti-image supported
Video1 videoNative video upload

Each connected LinkedIn account is a separate UUID — personal profile and company pages appear as distinct entries in GET /v1/accounts. The API does not distinguish them in metadata; account type is stored on the connection (platformAccountType: person vs company).

Connect LinkedIn from the dashboard. See LinkedIn (product).


Settings / metadata schema

LinkedIn posts are mostly caption + media only. No platform-specific metadata is required.

FieldLocationRequiredTypeDescription
contentbodyYes*stringPost text (max ~3,000 chars)
platformsbodyYesUUID[]LinkedIn account UUID(s)
mediabodyNoUUID[]Image or video media IDs
metadata.accountCaptions.<uuid>metadataNostringPer-account caption override
metadata.accountMedia.<uuid>metadataNoUUID[]Per-account media override
platform_options.linkedin.contentplatform_optionsNostringPer-target caption (compiled to accountCaptions)
platform_options.linkedin.accounts.<uuid>.contentplatform_optionsNostringOverride caption for one account

* Or media-only with minimal caption.


Complete example

Post to personal profile and company page in one request:

curl -X POST https://api.social0.app/v1/posts/publish \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "content": "We shipped provider-settings docs for the Social0 API.",
    "platforms": [
      "550e8400-e29b-41d4-a716-446655440001",
      "550e8400-e29b-41d4-a716-446655440002"
    ],
    "media": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"],
    "platform_options": {
      "linkedin": {
        "accounts": {
          "550e8400-e29b-41d4-a716-446655440002": {
            "content": "Social0 API docs are live — build automations on top of our publish pipeline."
          }
        }
      }
    }
  }'

Response 202:

{
  "post_id": "uuid",
  "tracking_id": "uuid",
  "status": "queued",
  "stream_url": "/v1/jobs/{tracking_id}/stream"
}

Quirks

  • Personal vs company: Connect each page separately in the dashboard. Use numeric/account UUID from GET /v1/accounts — do not assume one LinkedIn connection covers all pages.
  • Character limit: ~3,000 characters for feed posts.
  • Video processing: LinkedIn may take a minute to process video after publish succeeds; poll the job for final status.
  • No threads: Multi-part threads are not supported on LinkedIn via Social0 — use a single post or separate publishes.
  • Token expiry: Reconnect in the dashboard if token_status is expired on the account.