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"
}

Documentation Index

Fetch the complete documentation index at: https://paragraph.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

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. Pass 0 or omit the field for an unscheduled post.

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