# Post and schedule to LinkedIn

Canonical: https://status200uploads.com/platforms/linkedin

Checked on 26 October 2026.

Status 200 Uploads publishes to your LinkedIn profile: a text post of up to 3,000 characters, or text with one image or one video, now or at a time you set. Post from the dashboard, the REST API, Python, n8n or an AI app such as Claude. You sign in on LinkedIn itself, and the post goes out through our own LinkedIn app.

## Quick facts

- **Where posts go:** To the LinkedIn member profile you sign in with. Company pages are not supported.
- **What you can post:** Text on its own, or text with one image or one video. Only the first file of a post is attached.
- **Largest video:** 5 GB per file. [File limits of every network](https://status200uploads.com/docs/file-limits)
- **Largest image:** 10 MB per image, checked in the dashboard; through the API, LinkedIn itself decides.
- **Text:** Up to 3,000 characters. You can send LinkedIn its own text while the other networks of the same post get the shared caption.
- **Scheduling:** Schedule a post up to 365 days ahead, or send it now.
- **Plans:** LinkedIn is on every plan, Free included. [Pricing](https://status200uploads.com/pricing)
- **How it connects:** You sign in on LinkedIn itself (OAuth), so we never see your LinkedIn password.

## What you can post

### Video posts

Text with one MP4 video, up to 5 GB, which is also LinkedIn's own limit. Read the post back, or open History, for its link on LinkedIn.

### Text posts

Words only, up to 3,000 characters, with no file at all. Use it for an update, an announcement or a short article-style post.

### A post with an image

Text with one image. The dashboard checks it against 10 MB; through the API, LinkedIn itself decides. If you send several files, only the first is attached: LinkedIn carousels are not supported.

## Settings

| Setting | Dashboard | REST field | AI connector option | What it does |
| --- | --- | --- | --- | --- |
| LinkedIn text | Post Text (optional override) | linkedin.text | text | Text for LinkedIn only, up to 3,000 characters, in place of the post text: a longer, more formal version than the one your other networks get, for example. |

## Automatic changes

- `unknown_field`: A field we do not read is not used, and the answer says so (with the field name we think you meant, when there is one). The post still goes out.
- `field_not_used`: A field we read but could not use for this post (for example another network's block, or a setting that does not apply to this kind of post) is named in the answer. The post still goes out.
- `options_outside_post`: An option sent next to "post" instead of inside it is not used, and the answer says where it belongs.
- `media_url_not_kept`: A scheduled post that names its media by web address fetches the file when it goes out, and we keep no copy: the answer reminds you the file must still be there then.
- `posts_close_together`: The answer warns when another LinkedIn post of the account is scheduled within 20 seconds: leave at least a minute between them.
- `caption_over_limit`: In a dry run or a scheduled post, a caption longer than LinkedIn allows is flagged. We send it as it is; LinkedIn may refuse it or cut it short.
- `moved_to_next_day`: When the daily limit of the profile is reached while a scheduled post is going out, the networks that did not fit move to the next day as a scheduled post of their own, and the post read back says so.
- `queued_for_next_day`: On a plan with a daily limit, a post over the day's limit is queued for the next day instead of failing (answer 202), and the answer gives the time.

## Your way to post

### From the dashboard

1. Under Connections, connect LinkedIn and sign in with the LinkedIn account the posts are for.
2. In Schedule, write the caption, add an image or a video if you want one, and pick LinkedIn.
3. Open the LinkedIn settings to give LinkedIn a text of its own, then publish or schedule.

[Connect LinkedIn](https://status200uploads.com/connections)

### From the REST API

A video post with LinkedIn-only text (POST /api/v2/posts)

```bash
curl -X POST 'https://status200uploads.com/api/v2/posts' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer rl_your_api_key' \
  -H 'Idempotency-Key: hiring-video-linkedin' \
  -d '{
    "post": {
      "accountId": "@yourprofile",
      "platform": "linkedin",
      "content": {
        "text": "We are hiring!",
        "mediaID": ["YOUR_VIDEO_ID"]
      },
      "linkedin": {
        "text": "We are hiring two engineers for our Berlin office. In this video the team explains what the work is like."
      }
    }
  }'
```

[Full page](https://status200uploads.com/integrations/rest-api)

### From Python

The release test's post, with the status200uploads package

```python
from status200uploads import Status200

s200 = Status200()  # the key comes from STATUS200_API_KEY

post = {"accountId": "@myprofile", "platform": "linkedin", "content": {"text": "Hello from Python"}}
result = s200.publish(post, wait=True)
if result.final:  # the post as last read: its status and link
    print(result.final.get("status"), result.final.get("permalink"))
else:  # scheduled or queued (result.code says which), or it could not be read back
    print(result.code)
```

[Full page](https://status200uploads.com/integrations/python)

### From n8n

1. Add an HTTP Request node: POST to https://status200uploads.com/api/v2/posts.
2. Give it the headers Authorization (Bearer rl_your_key), Content-Type (application/json) and Idempotency-Key ({{ $json.id }}-linkedin). LinkedIn refuses a duplicate post, and the key makes a retried run return the first answer instead.
3. Send the body below; leave mediaID out for a text post.

The HTTP Request body

```json
{
  "post": {
    "accountId": "@yourprofile",
    "platform": "linkedin",
    "content": {
      "text": "{{ $json.summary }}",
      "mediaID": ["{{ $json.imageId }}"]
    }
  }
}
```

[Full page](https://status200uploads.com/integrations/n8n)

### From an AI app

Prompt: "Turn this paragraph into a LinkedIn post and publish it tomorrow at 8:30 with the chart I uploaded."

The app writes the text, finds the chart with status200_list_media, checks the post with status200_validate_post (which flags text over LinkedIn's limit) and schedules it with status200_schedule_post. The answer gives the scheduled post's id, so you can change or cancel it before it goes out.

[Full page](https://status200uploads.com/integrations/mcp)

## Errors

| HTTP | Code | Meaning | Fix |
| --- | --- | --- | --- |
| 401 | reconnect_required | LinkedIn no longer accepts the saved sign-in; LinkedIn sign-ins expire after a while. | Reconnect LinkedIn under Connections and send the post again. |
| 500 | platform_error | LinkedIn refused the post, for example as a duplicate of a recent one; LinkedIn's reason is in the message. | Change the text if it is a duplicate. Under an Idempotency-Key the same answer is kept, so a retry never posts twice. |
| 413 | MEDIA_TOO_LARGE | The video is larger than LinkedIn takes. | Use a video of at most 5 GB. |
| 404 | media_not_found | The mediaID is not one of your files: never uploaded, deleted, or removed after 7 days. | Upload the file again and send its new mediaID. |
| 409 | idempotency_in_progress | A request with the same Idempotency-Key is still being sent. | Wait the seconds in Retry-After, then send the same request again to get its answer. |

## Questions

### Can I post to LinkedIn through an API?

Yes. Send a POST to https://status200uploads.com/api/v2/posts with platform linkedin and your API key, as in the example on this page. You need no LinkedIn developer app of your own, and the REST API is on every plan, Free included.

### Can I post to a LinkedIn company page?

No. Posts go to the member profile of the LinkedIn account you sign in with; company pages are not supported.

### Can a LinkedIn post have several images?

No. A LinkedIn post has text and at most one file, an image or a video; if you send more, only the first is attached. LinkedIn carousels are not supported, and the answer says so when a carousel field is sent.

### Can LinkedIn get a different text from my other networks?

Yes. Write it under Post Text in the dashboard's LinkedIn settings, or send linkedin.text in the API, up to 3,000 characters. The other networks of the post keep the shared caption.

### Why did LinkedIn refuse my post as a duplicate?

LinkedIn does not take the same post twice from one profile. The answer is 500 platform_error with LinkedIn's own reason in the message; change the text before you post it again.

### How large can a LinkedIn video be?

Up to 5 GB, which is also LinkedIn's own limit. Images are checked at 10 MB in the dashboard; through the API, LinkedIn decides.

### Can I schedule LinkedIn posts?

Yes, up to 365 days ahead from the dashboard, the API (post.scheduledFor) or an AI app, and you can change or cancel a scheduled post until it goes out.

## More on LinkedIn

- [LinkedIn errors](https://status200uploads.com/platforms/linkedin/errors)
- [LinkedIn API guide](https://status200uploads.com/platforms/linkedin/api-guide)

## Related

- [X](https://status200uploads.com/platforms/x)
- [Facebook](https://status200uploads.com/platforms/facebook)
- [YouTube](https://status200uploads.com/platforms/youtube)
- [REST API](https://status200uploads.com/integrations/rest-api)
- [Python](https://status200uploads.com/integrations/python)
- [n8n](https://status200uploads.com/integrations/n8n)
- [AI agents (MCP)](https://status200uploads.com/integrations/mcp)
- [Claude](https://status200uploads.com/integrations/claude)
- [The Python guide](https://status200uploads.com/docs/api#guide-python)
- [File limits of every network](https://status200uploads.com/docs/file-limits)
- [Pricing](https://status200uploads.com/pricing)
