Skip to main content
POST
/
v1
/
posts
import { ParagraphAPI } from "@paragraph-com/sdk" const api = new ParagraphAPI({ apiKey: "your-api-key" }) const { id, status } = await api.posts.create({ title: "My First Post", markdown: "# Hello World\n\nThis is my first post!", sendNewsletter: true }) // status: "published"
{
  "id": "<string>",
  "status": "published"
}

Authorizations

Authorization
string
header
required

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

Body

application/json

Body

markdown
string
required

Post content in Markdown format

title
string
required

Title of the post

Maximum string length: 200
subtitle
string

Optional subtitle or brief summary

Maximum string length: 300
imageUrl
string<uri>

Optional URL to the post's cover image

sendNewsletter

Whether to send an email newsletter to subscribers. Default: false

status
enum<string>

Status of the post. Default: published

Available options:
published,
draft
slug
string

Optional URL-friendly identifier for the post. If not provided, will be generated from title

Required string length: 1 - 256
postPreview
string

Optional preview text for the post. If not provided, will be generated from content

Maximum string length: 500
categories

Optional array of category tags for the post. Can also be a comma-separated string.

scheduledAt
integer

Optional Unix timestamp (milliseconds) to schedule first-publish of the post at a future time. Must be in the future. Cannot be combined with status: 'draft'. When set, the post is created and queued to publish (and send newsletter, if requested) at the specified time.

Required range: x > 0

Response

Post created successfully

id
string
required

The ID of the created post

status
enum<string>
required

Final status of the post: 'published' if published immediately, 'draft' if created as a draft, 'scheduled' if queued to publish at scheduledAt

Available options:
published,
draft,
scheduled