Create a new post
Create a new post in your publication. The publication is identified by the API key provided in the Authorization header.
Requirements:
titlefield is required- Provide content as either
markdown(converted to TipTap JSON) ORbodyJson(a Tiptap document for content with buttons/linked images) — exactly one is required, not both
Behavior:
- The post will be created as published by default. Set
statusto"draft"to create a draft instead - If
sendNewsletteris true, an email will be sent to all subscribers when the post publishes - Set
scheduledAt(Unix timestamp in milliseconds) to schedule first-publish for a future time. Must be in the future and at most 30 days out. Scheduling cannot be combined withstatus: "draft". When scheduled, the responsestatusis"scheduled"and the post publishes (plus sends newsletter, if requested) at the scheduled time.
apiKeyAuthorizationBearer <token>API key for authenticating protected endpoints. Pass as Bearer token in Authorization header.
Body
application/json- body
markdown?stringPost content in Markdown format. Provide markdown OR bodyJson, not both. Markdown cannot represent buttons or linked images — use bodyJson for those.
bodyJson?stringPost content as a Tiptap document, JSON-stringified (e.g. '{"type":"doc","content":[...]}'). Use instead of markdown when the body needs Subscribe/Share/custom buttons or linked images. Validated server-side; an invalid document is rejected. Provide markdown OR bodyJson, not both.
title*stringTitle of the post
length <= 200subtitle?stringOptional subtitle or brief summary
length <= 300imageUrl?stringOptional URL to the post's cover image
uriimageAlt?stringAlternative text describing the cover image. Only used when imageUrl is provided.
length <= 1000sendNewsletter?|Whether to send an email newsletter to subscribers. Default: false
status?stringStatus of the post. Default: published
"published""draft"slug?stringOptional URL-friendly identifier for the post. If not provided, will be generated from title
1 <= length <= 256postPreview?stringOptional preview text for the post. If not provided, will be generated from content
length <= 500categories?array<string>|Optional array of category tags for the post. Can also be a comma-separated string.
authorIds?array<string>Optional user ids to credit as the post's authors, in byline order. Each id must be the publication's owner or an active team member — ids from outside the publication are rejected. Defaults to the API key's own user.
1 <= items <= 20scheduledAt?integerOptional 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.
0 <= valuecanonicalUrl?stringOptional canonical URL used in rendered metadata, for a post whose original lives elsewhere. When the publication has its own website set up, a canonical on that site is also where the Paragraph link redirects. This does not change the post's Paragraph permalink.
urilength <= 2048Post created successfully
application/json- response
id*stringThe ID of the created post
status*stringFinal status of the post: 'published' if published immediately, 'draft' if created as a draft, 'scheduled' if queued to publish at scheduledAt
"published""draft""scheduled"curl -X POST "https://example.com/v1/posts" \ -H "Content-Type: application/json" \ -d '{ "title": "string" }'{ "id": "string", "status": "published"}List your posts GET
Retrieve a paginated list of posts from your publication. The publication is identified by the API key provided in the Authorization header. Use the `status` parameter to filter by post status (published, draft, scheduled, or archived). Defaults to published.
Delete a post by slug DELETE
Permanently delete a post using its URL slug. The publication is identified by the API key provided in the Authorization header. **Warning:** This action is irreversible. The post and all related data (notifications and drafts) will be permanently deleted.