Write

Update LinkedIn Post Draft

Edit a saved post in 'draft' or 'archived' status. Text, notes, audience, attachments, status, and stored enhanced metadata remain editable. Company-page, mention, and link-preview metadata must be removed before publishing. Returns an error if the draft is missing or already published.

update_draftPATCH/api/v1/content/drafts/{draft_id}
crispy — bash

Example prompt: Update draft a1b2c3d4 with the new opening line and put https://crispy.sh in the post text

{
  "draft_id": "a1b2c3d4-0000-4f00-8a00-111122223333",
  "status": "draft",
  "text": "New opening line...",
  "updated_at": "2026-06-16T09:10:00Z"
}
Permission scope
core
Access
Write
Category
Content

What you can build

Refine a draft's copy and tone across several rounds before it goes live
Swap or clear attachments and include shared URLs directly in the text
Archive a draft to hide it from your default list without deleting it
Add private notes and a target audience to keep your content pipeline organized

Parameters

Inputs accepted by update_draft.

NameTypeDescription
draft_idstringUUID of the draft to update (from save_draft or list_drafts)
textstringNew post text (max 3000 chars)
notesstringPrivate notes about this draft
target_audiencestringWho this post is intended for
attachmentsobject[]Replace attachments (pass empty array to clear)
as_organizationstringNOT PUBLISHABLE. Remove this field before calling publish_draft.
mentionsobject[]Replace stored mention metadata. Remove mentions before calling publish_draft.
external_linkstringReplace stored link-preview metadata. Remove it before calling publish_draft.
status"draft" | "archived"Move draft to 'archived' to hide from default list, or back to 'draft'

The complete LinkedIn API. Ready when you are.

Connect your first LinkedIn profile in under 5 minutes. Every tool, every seat, no feature gates. Safe limits, warm-up, and full permission control built in.