Skip to main content
PATCH
Update a post (content, status, schedule)

Authorizations

Authorization
string
header
required

Pass Authorization: Bearer scripe_sk_live_<...> (or scripe_sk_test_<...> for test keys) on every request. Keys are scoped to a single workspace and can be revoked from the Scripe dashboard.

The same header also accepts an OAuth 2.1 access token (scripe_oat_*); both credentials share one scope vocabulary and every operation below documents the scope it requires. An API key can hold every scope named on this surface except webhooks:manage, which is grantable to OAuth tokens only today — the webhook-endpoint operations answer 403 scope_missing to every API key. Operations that name no scope accept any valid token of the workspace.

Headers

Scripe-Api-Version
string

Pin the API version. Format YYYY-MM-DD. Omit to receive the currently rolling default. Unknown versions return 400 version_unsupported.

Example:

"2026-08-10"

Idempotency-Key
string

Opaque string (1–64 chars, [A-Za-z0-9_-]) used to dedup retried writes. Within 24h of the first request, the same key

  • same body returns the original response (Idempotent-Replayed: true). Same key + different body returns 409 idempotency_key_conflict.

Strongly recommended for every write — see /docs/api/v1/idempotency.

Pattern: ^[A-Za-z0-9_-]{1,64}$

Path Parameters

postId
string
required
Example:

"post_a1b2c3d4e5f6g7h8"

Body

application/json

Partial update. All fields optional. statusCategory and statusId are mutually exclusive. scheduledFor accepts a future timestamp (schedule/reschedule), null (unschedule), or may be omitted (leave schedule unchanged).

content
string
Maximum string length: 100000
title
string

The post's INTERNAL name. Unlike on create, omitting it and sending "" differ here: omit it to keep a name YOU set (a still-unnamed post is named from the content you send, and a name Scripe derived keeps following your opening line until you rewrite it), or send "" to clear the name and return the post to being unnamed and Scripe-nameable.

Maximum string length: 500
contentType
enum<string>
Available options:
PERSONAL,
BUSINESS_INTERNAL,
BUSINESS_EXTERNAL,
EDUCATIONAL,
UNKNOWN
statusCategory
enum<string>

Move the post to the workspace's default status in this lifecycle category. Mutually exclusive with statusId.

Available options:
suggested,
draft,
inProgress,
review,
scheduled,
published
statusId
string

Move the post to a specific custom status by id (from GET /post-statuses). Mutually exclusive with statusCategory.

scheduledFor
string<date-time> | null

Future ISO timestamp to schedule/reschedule the post (LinkedIn connection verified first). null unschedules. Omit to leave unchanged.

Offset-less timestamps resolve in the project's calendar timezone; a bare date is rejected. See PostCreate.scheduledFor.

Example:

"2026-08-18T09:00:00+02:00"

autoLike
boolean

Enable auto-like engagement when the post goes live.

autoComment
boolean

Enable auto-comment engagement when the post goes live.

Response

Post updated.

data
object
required