> ## Documentation Index
> Fetch the complete documentation index at: https://docs.linkupapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Company Post

> Create a new post on a company page.

## Overview

Create a post on a company page. The authenticated account must be an admin of the specified company page.

<Note>This endpoint consumes **1 credit** per request. Ignore this if you're on per-seat pricing: usage is unlimited.</Note>

<Note>You must be an admin of the company page to create posts on its behalf.</Note>

## Request

<ParamField header="x-api-key" type="string" required>
  Your API key for authentication.
</ParamField>

<ParamField body="account_id" type="string" required>
  The unique identifier of the account to use.
</ParamField>

<ParamField body="action" type="string" required>
  Must be `"create_company"`.
</ParamField>

<ParamField body="params" type="object" required>
  <Expandable title="params properties">
    <ParamField body="company_url" type="string" required>
      The URL of the company page on the connected platform (e.g. `"https://www.linkedin.com/company/acme-corp"`).
    </ParamField>

    <ParamField body="message" type="string">
      The text content of the post. Supports hashtags (`#tag`), line breaks and people mentions.
      To mention someone, use `mention_user(public_id, display_text)` where `public_id` is the slug of their profile URL (`linkedin.com/in/<public_id>`) and `display_text` is the clickable text shown in the post — e.g. `"Great talk mention_user(williamhgates, Bill Gates)!"`. To mention a company page, use `mention_company(slug, display_text)` where `slug` is from `linkedin.com/company/<slug>` — e.g. `"Proud to partner with mention_company(microsoft, Microsoft)"`.
    </ParamField>

    <ParamField body="file" type="string | object">
      A single file to attach — an image (`.jpg`, `.png`, `.gif`, `.webp`), a video (`.mp4`, `.mov`, `.webm`…) or a document (`.pdf`, `.doc`, `.docx`, `.ppt`, `.pptx`), which LinkedIn publishes as a page carousel. Can be a URL string or an object with `filename` and `data` properties.

      <Expandable title="file object properties">
        <ParamField body="filename" type="string">
          The name of the file including extension (e.g. `"photo.jpg"`).
        </ParamField>

        <ParamField body="data" type="string">
          Base64-encoded file data.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="thumbnail" type="string | object">
      Custom cover image for a video post. Only valid when `file` is a single video (`.mp4`, `.mov`, `.webm`…). Same format as `file`: a URL string or an object with `filename` and `data` (base64). Without it, LinkedIn picks a frame of the video.
    </ParamField>

    <ParamField body="files" type="array">
      An array of files for carousel posts. Each element can be a URL string or an object with `filename`, `data`, and optional `altText` properties.

      <Expandable title="file object properties">
        <ParamField body="filename" type="string">
          The name of the file including extension.
        </ParamField>

        <ParamField body="data" type="string">
          Base64-encoded file data.
        </ParamField>

        <ParamField body="altText" type="string">
          Alternative text for the image (accessibility).
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

## Response

<ResponseField name="success" type="boolean">
  Indicates whether the request was successful.
</ResponseField>

<ResponseField name="data" type="object">
  The created post data.

  <Expandable title="data properties">
    <ResponseField name="post_url" type="string">
      The URL of the newly created company post.
    </ResponseField>

    <ResponseField name="post_urn" type="string">
      Unique identifier of the post. Treat it as an opaque string and pass it back exactly as returned.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="metadata" type="object">
  <Expandable title="metadata properties">
    <ResponseField name="action" type="string">
      The action that was performed (`"create_company"`).
    </ResponseField>

    <ResponseField name="account_id" type="string">
      The account ID used for the request.
    </ResponseField>

    <ResponseField name="credits_consumed" type="integer">
      Number of credits consumed (1).
    </ResponseField>

    <ResponseField name="timestamp" type="string">
      ISO 8601 timestamp of the response.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "data": {
      "post_url": "https://www.linkedin.com/feed/update/urn:li:activity:7654321098765432100",
      "post_urn": "urn:li:activity:7654321098765432100"
    },
    "metadata": {
      "action": "create_company",
      "account_id": "your-account-id",
      "credits_consumed": 1,
      "timestamp": "2026-03-24T12:00:00Z"
    }
  }
  ```

  ```json 403 theme={null}
  {
    "success": false,
    "error": {
      "code": "FORBIDDEN",
      "message": "You must be an admin of the company page to create posts."
    },
    "metadata": {
      "action": "create_company",
      "account_id": "your-account-id",
      "credits_consumed": 0,
      "timestamp": "2026-03-24T12:00:00Z"
    }
  }
  ```
</ResponseExample>
