Skip to main content
PUT
/
v1
/
posts
/
{postId}
import { ParagraphAPI } from "@paragraph-com/sdk"

const api = new ParagraphAPI({ apiKey: "your-api-key" })
await api.posts.update({
  id: "3T2PQZlsdQtigUp4fhlb",
  title: "Updated Title",
  markdown: "## New content\n\nUpdated post body.",
  status: "published"
})
{
  "success": true
}

Authorizations

Authorization
string
header
required

API key for authenticating protected endpoints. Pass as Bearer token in Authorization header.

Path Parameters

postId
string
required

Unique identifier of the post to update

Body

application/json

Body

markdown
string

Post content in Markdown format. Replaces full content — rich blocks created in the editor will be lost

title
string

Title of the post

Maximum string length: 200
subtitle
string

Optional subtitle or brief summary

Maximum string length: 300
slug
string

URL-friendly identifier for the post

Required string length: 1 - 256
postPreview
string

Preview text for the post

Maximum string length: 500
categories

Category tags for the post. Can also be a comma-separated string.

status
enum<string>

Set to 'published' to publish, 'draft' to unpublish, or 'archived' to archive

Available options:
draft,
published,
archived
scheduledAt
integer | null

Unix timestamp (milliseconds) to schedule the post's first publish at a future time. Must be in the future and at most 30 days out. Only valid for draft posts that haven't been published or already scheduled. Cannot be combined with status: 'draft' or 'archived'. Pass null to cancel a previously scheduled publish.

Required range: x > 0
sendNewsletter

Whether to send an email newsletter to subscribers when the post publishes. Only meaningful when publishing (status: 'published') or scheduling (scheduledAt set). Default: false

Response

Post updated successfully

success
enum<boolean>
required

Whether the update succeeded

Available options:
true