LinkedIn Upload API
This section details how to upload text posts, photos, 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.
| Field | Where it appears |
|---|---|
description | Published as the LinkedIn post body text (commentary) |
title | Internal 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.
| Syntax | Result | Example |
|---|---|---|
**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 Video Requirements
- File Format: MP4 (recommended), MOV, AVI, MKV
- Max File Size: 500 MB
- Duration: 3 seconds to 15 minutes (recommended)
LinkedIn Document (Carousel) Requirements
- File Format: PDF, DOC, DOCX, PPT, PPTX
- Max File Size: 100 MB
Upload Text Post
Create a text-only post on LinkedIn.
Endpoint
POST /upload
Content-Type
multipart/form-data
Parameters
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
async | string | No | Default "true". If "false", the API waits for upload completion. |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the connected LinkedIn account (personal profile or company page). |
description | string | Yes | The text content of the post. Supports **bold**, *italic*, ***bold italic***. |
title | string | No | Internal label (not published to LinkedIn). |
visibility | string | No | PUBLIC (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
| Parameter | Type | Required | Description |
|---|---|---|---|
async | string | No | Default "true". If "false", the API waits for upload completion. |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the connected LinkedIn account (personal profile or company page). |
photo | File | Yes | The image file to upload. |
description | string | No | The text content of the post. Supports **bold**, *italic*. |
title | string | No | Internal label (not published to LinkedIn). |
visibility | string | No | PUBLIC (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 Video
Upload a video to LinkedIn.
Endpoint
POST /upload
Content-Type
multipart/form-data
Parameters
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
async | string | No | Default "true". If "false", the API waits for upload completion. |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the connected LinkedIn account (personal profile or company page). |
video | File | Yes | The video file to upload (max 500 MB). |
description | string | No | The text content of the post. Supports **bold**, *italic*. |
title | string | No | Internal label (not published to LinkedIn). |
visibility | string | No | PUBLIC (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 Document (Carousel)
Upload a PDF or document to LinkedIn as a carousel post.
Endpoint
POST /upload
Content-Type
multipart/form-data
Parameters
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
async | string | No | Default "true". If "false", the API waits for upload completion. |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the connected LinkedIn account (personal profile or company page). |
photo | File | Yes | The document file (PDF, DOC, DOCX, PPT, PPTX). |
description | string | Yes | The text content displayed above the carousel. Supports **bold**, *italic*. |
title | string | No | Internal label (not published to LinkedIn). |
media_type | string | No | Set to DOCUMENT for carousel uploads. Auto-detected from file extension if omitted. |
visibility | string | No | PUBLIC (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"'