How to Schedule LinkedIn Posts (and Find or Edit Them Later)

LinkedIn's built-in scheduler works for one account at a time. Here's how it works, where scheduled posts hide, and how to schedule LinkedIn posts programmatically with Postproxy.

Schedule a post from the LinkedIn composer

For a personal profile:

  1. Click Start a post.
  2. Write the post and attach media.
  3. Click the clock icon at the bottom of the composer.
  4. Pick a date and time, then click Next and Schedule.

The time you pick must be within 10 minutes to 3 months from now, rounded to the nearest interval.

For a company page, the flow starts in the admin view:

  1. Go to your Page’s admin view and select Page posts.
  2. Click Start a post.
  3. Select the scheduling icon — lower right on desktop, upper right on mobile.
  4. Choose the date and time, click Next, then Schedule.

Page posts can be scheduled anywhere between an hour from now and three months in advance. The post publishes at that time based on your location.

Where do scheduled LinkedIn posts go?

They are not in your feed or your activity — they sit in a separate list:

  • Desktop: open Start a post, click the clock icon, then View all scheduled posts in the lower-left corner.
  • Mobile: tap Post, tap the clock icon, then View all.
  • Company pages: admin view → Page posts, where scheduled posts are listed separately from published ones.

Can you edit a scheduled LinkedIn post?

Yes. Open your scheduled posts, click the More icon in the upper right of the post, and choose Modify schedule or Edit post.

For Page posts, only super admins and content admins can edit. They can change the post content, the visibility settings, who is allowed to comment, and the brand partnership label.

Deleting works the same way — a scheduled post can be removed at any point before it publishes.

What the native scheduler will not do

The built-in scheduler is a composer feature, not a publishing system. It has no answer for:

  • Scheduling to LinkedIn and other networks in one action — every platform is scheduled separately, in its own tab.
  • Bulk scheduling — one post at a time, by hand.
  • Recurring slots — you pick absolute timestamps, not “every Tuesday at 09:00”.
  • Programmatic creation — nothing in the product creates a scheduled post from your CMS, spreadsheet, or agent.
  • Publish notifications — nothing calls your system back when the post goes live or fails.

That is the point where scheduling moves into an API.

Schedule a LinkedIn post via API

With Postproxy, scheduling is one field: scheduled_at, an ISO 8601 timestamp.

Terminal window
curl -X POST "https://api.postproxy.dev/api/posts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"post": {
"body": "We shipped webhook retries this week. Notes in the comments.",
"scheduled_at": "2026-08-19T09:00:00-04:00"
},
"profiles": ["linkedin"]
}'

To schedule onto a company page instead of the personal profile, pass organization_id:

Terminal window
curl -X POST "https://api.postproxy.dev/api/posts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"post": {
"body": "We are hiring a senior backend engineer.",
"scheduled_at": "2026-08-19T09:00:00-04:00"
},
"profiles": ["linkedin"],
"platforms": {
"linkedin": { "organization_id": "12345678" }
}
}'

The company page how-to covers the OAuth scopes and admin roles that posting as an organization requires.

List, edit, and cancel scheduled posts

ActionRequest
List everything scheduledGET /api/posts?status=scheduled
List posts after a dateGET /api/posts?scheduled_after=2026-08-19T00:00:00Z
Change the time or textPATCH /api/posts/:id with a new post[scheduled_at] or post[body]
CancelDELETE /api/posts/:id

On update, the post object is merged — send only the fields you are changing. Note that media and profiles behave differently: sending either one replaces the existing set rather than merging it. Full semantics are in the Posts API reference.

Recurring slots instead of timestamps

If you want “publish into the next open Tuesday morning slot” rather than a hand-picked timestamp, create a queue with weekly timeslots and drop posts into it:

Terminal window
curl -X POST "https://api.postproxy.dev/api/posts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"post": { "body": "Weekly engineering update." },
"profiles": ["linkedin"],
"queue_id": "que_abc123",
"queue_priority": "high"
}'

Timeslots are a day of the week (0 = Sunday) plus a HH:MM time in the queue’s timezone. Priority decides which post takes the earliest open slot. See the Queues API reference.

LinkedIn limits to design around

Character limit3,000
Image8 MB, jpg/png/gif, up to 20 per post
Video5 GB, mp4/mov/avi, up to 15 minutes
Document100 MB, pdf/doc/docx/ppt/pptx, must be the only attachment
Mixing images and videoNot supported
Direct messagesNot supported

Document posts render as LinkedIn’s native multi-page carousel. The complete parameter list is in the LinkedIn API reference.

Ready to get started?

Start with our free plan and scale as your needs grow. No credit card required.