Skip to Content

LinkedIn Upload API

This section details how to upload text posts, photos, multi-image posts, videos, and document carousels to LinkedIn personal profiles and company pages.

Base URL

https://api.multi-upload-tool.com/api/v1

Authentication

All requests require an API Token in the header: x-api-key: YOUR_API_TOKEN


Personal Profiles & Company Pages

LinkedIn personal profiles and company pages are both connected as separate accounts. When you connect a LinkedIn company page, it appears as its own account with its own accountId. You simply post to that account directly — there is no need for a separate targetPageId parameter.


Important: Title vs Description

On LinkedIn, the description field is what appears as the body text of the post. This is the main content your audience sees.

The title field is not published to LinkedIn. It is only used internally within the Multi Upload Tool UI (e.g. in the upload history, pools, and scheduling views) to help you identify your posts. If you want text to appear on LinkedIn, put it in description.

FieldWhere it appears
descriptionPublished as the LinkedIn post body text (commentary)
titleInternal label only (visible in Multi Upload Tool UI, pools, history)

Text Formatting

The API automatically converts Markdown-style formatting to Unicode characters that render as bold and italic on LinkedIn.

SyntaxResultExample
**text**Bold**Hello** renders as bold on LinkedIn
*text*Italic*Hello* renders as italic on LinkedIn
***text***Bold Italic***Hello*** renders as bold italic on LinkedIn

This conversion happens automatically. You simply write your description using standard Markdown bold/italic syntax.

Example

**Big News!** We're launching *something amazing* this week. Check out our ***brand new product*** now.

Notes

  • Accented characters (e, a, etc.) are not converted as there are no Unicode bold/italic equivalents for diacritics.
  • Emojis, punctuation, and special characters pass through unchanged.
  • Bullet points (* item) are not mistakenly converted to italic.
  • Hashtags (#topic) and mentions work normally alongside formatting.

Requirements

LinkedIn Photo Requirements

  • File Format: JPEG, PNG, GIF, WebP
  • Max File Size: 10 MB

LinkedIn Multi-Image Requirements

  • Image Count: 2 to 20 images per post
  • File Format / Size: same as single photo (JPEG, PNG, GIF, WebP; 10 MB each)

LinkedIn Video Requirements

  • File Format: MP4 (recommended), MOV, AVI, MKV
  • Max File Size: 500 MB
  • Duration: 3 seconds to 15 minutes (recommended)
  • File Format: PDF, DOC, DOCX, PPT, PPTX
  • Max File Size: 100 MB

Validation & Limits

This table documents all validation limits enforced by the Multi Upload Tool API for LinkedIn uploads. These limits are based on our code implementation and LinkedIn’s official API documentation.

ConstraintLimitNotes
Post Text (description)3,000 charactersMaximum length of the post body text.
Title (internal label)400 charactersFor internal tracking only; not published to LinkedIn.
Image File Size10 MBPer image in single or multi-image posts.
Video File Size500 MBMaximum video file size for single video posts.
Document File Size100 MBMaximum document file size for carousel posts.
Multi-Image Count2–20 imagesA multi-image post requires at least 2 and no more than 20 images.
VisibilityPUBLIC, CONNECTIONSControls who can see your post. Organization pages cannot use CONNECTIONS.
Image FormatsJPEG, PNG, GIF, WebPSupported formats for photo uploads.
Video FormatsMP4, MOV, AVI, MKVSupported formats for video uploads.
Document FormatsPDF, DOC, DOCX, PPT, PPTXSupported formats for document carousel uploads.

Source: LinkedIn Content Consumption API 


Upload Text Post

Create a text-only post on LinkedIn.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected LinkedIn account (personal profile or company page).
descriptionstringYesThe text content of the post. Supports **bold**, *italic*, ***bold italic***.
titlestringNoInternal label (not published to LinkedIn).
visibilitystringNoPUBLIC (default) or CONNECTIONS.

Example Request

curl --location 'https://api.multi-upload-tool.com/api/v1/upload' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'accountId="12345"' \ --form 'description="**Exciting news!** We just launched *something new*."' \ --form 'visibility="PUBLIC"'

Upload Photo

Upload a single photo to LinkedIn.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected LinkedIn account (personal profile or company page).
photoFileYesThe image file to upload.
descriptionstringNoThe text content of the post. Supports **bold**, *italic*.
titlestringNoInternal label (not published to LinkedIn).
visibilitystringNoPUBLIC (default) or CONNECTIONS.

Example Request

curl --location 'https://api.multi-upload-tool.com/api/v1/upload' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'accountId="12345"' \ --form 'photo=@"/path/to/image.jpg"' \ --form 'description="Check out our new office! **We are hiring.**"' \ --form 'visibility="PUBLIC"'

Upload Multi-Image Post

Publish a multi-image post by sending the photo field multiple times. The images appear as a swipeable gallery on LinkedIn.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected LinkedIn account (personal profile or company page).
photoFile[]YesTwo to 20 image files. Repeat the photo field once per image.
descriptionstringNoThe text content of the post. Supports **bold**, *italic*.
titlestringNoInternal label (not published to LinkedIn).
visibilitystringNoPUBLIC (default) or CONNECTIONS.

Example Request

curl --location 'https://api.multi-upload-tool.com/api/v1/upload' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'accountId="12345"' \ --form 'photo=@"/path/to/image1.jpg"' \ --form 'photo=@"/path/to/image2.jpg"' \ --form 'photo=@"/path/to/image3.jpg"' \ --form 'description="Highlights from our team offsite"' \ --form 'visibility="PUBLIC"'

Notes

  • A multi-image post requires 2 to 20 images. A single photo is published as a normal single-image post.
  • Each image must meet the LinkedIn photo requirements (JPEG, PNG, GIF, WebP; max 10 MB each).

Upload Video

Upload a video to LinkedIn.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected LinkedIn account (personal profile or company page).
videoFileYesThe video file to upload (max 500 MB).
descriptionstringNoThe text content of the post. Supports **bold**, *italic*.
titlestringNoInternal label (not published to LinkedIn).
visibilitystringNoPUBLIC (default) or CONNECTIONS.

Example Request

curl --location 'https://api.multi-upload-tool.com/api/v1/upload' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'accountId="12345"' \ --form 'video=@"/path/to/video.mp4"' \ --form 'description="Watch our latest product demo"' \ --form 'visibility="PUBLIC"'

Upload a PDF or document to LinkedIn as a carousel post.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected LinkedIn account (personal profile or company page).
photoFileYesThe document file (PDF, DOC, DOCX, PPT, PPTX).
descriptionstringYesThe text content displayed above the carousel. Supports **bold**, *italic*.
titlestringNoInternal label (not published to LinkedIn).
media_typestringNoSet to DOCUMENT for carousel uploads. Auto-detected from file extension if omitted.
visibilitystringNoPUBLIC (default) or CONNECTIONS.

Example Request

curl --location 'https://api.multi-upload-tool.com/api/v1/upload' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'accountId="12345"' \ --form 'photo=@"/path/to/slides.pdf"' \ --form 'description="**5 tips** to *boost your productivity* this quarter"' \ --form 'media_type="DOCUMENT"' \ --form 'visibility="PUBLIC"'