Create a post draft
create_post_draftCreate a new draft post for a platform. Drafts are not auto-published. For an X or Threads thread, pass threadParts (one string per post, 2 to 25) instead of content; each post must fit the platform limit (X 280, or 25,000 for a paid X account; Threads 500). When the user has multiple connected channels for the same platform (e.g. three Twitter accounts), pass channelName (e.g. "@acme") to target a specific one — call list_connected_accounts first to see the available handles. You can also pass the account providerId (with or instead of channelName): it still identifies the account after its handle changes. Pass clientRequestId for idempotent retries within 5 minutes. For an Instagram draft with exactly one video in mediaUrls, pass instagramTrialReel ("auto" or "manual") to publish it as a trial reel shown to non-followers first; "auto" lets Instagram share it with followers if it performs well; the video URL must end in .mp4, .mov or .avi with no query string, which is how PostNext recognises a video. To give images alt text (an image description for screen readers), pass media instead of mediaUrls: [{ "url": "...", "alt": "..." }] with an optional type (IMAGE, VIDEO or GIF; detected from the URL when missing). Alt text limits: X and Instagram 1,000 characters, Bluesky 2,000, LinkedIn 300 (saved for LinkedIn but not sent to it yet). Alt text is ignored on video and GIF. Returns dashboardUrl — a clickable link to view/edit the draft in the PostNext dashboard.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| media | No | ||
| content | No | ||
| platform | Yes | ||
| mediaUrls | No | ||
| providerId | No | ||
| channelName | No | ||
| threadParts | No | ||
| clientRequestId | No | ||
| instagramTrialReel | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | ||
| status | Yes | ||
| platform | Yes | ||
| createdAt | No | ||
| dashboardUrl | Yes |