Get post by publication slug and post slug
Retrieve a post using its publication's slug and the post's slug. This is useful for building user-facing URLs.
publicationSlug*stringURL-friendly identifier of the publication, e.g. 'blog'
1 <= length <= 256postSlug*stringURL-friendly identifier of the post, e.g. 'my-first-post'
1 <= length <= 256includeContent?|Include full content fields (markdown, json, staticHtml). Default: false
Post details retrieved successfully
application/json- response
id*stringUnique identifier for the post
title*stringTitle of the post
length <= 200imageUrl?stringOptional URL to the post's main image
uriimageAlt?stringAlternative text describing the cover image, shown to screen readers and when the image fails to load
publishedAt?stringEpoch timestamp when the post was published
updatedAt?stringEpoch timestamp when the post was last updated
subtitle?stringOptional subtitle or brief summary
length <= 300slug*stringURL-friendly identifier for the post; accessible at paragraph.com/@[publicationSlug]/[slug]
1 <= length <= 256staticHtml?stringRendered HTML content of the post
json?stringTipTap JSON representation of the post content structure. This is the source of truth that the staticHtml and markdown is generated from
markdown?stringMarkdown source of the post content
coinId?stringID of the associated coin, if the post is coined
categories?array<string>Categories/tags associated with this post
canonicalUrl?stringCanonical URL used in rendered metadata. This does not change the Paragraph permalink.
uripublishOnline?booleanWhether the published post is visible on the public website
communityId?stringSubscriber segment id selected for newsletter delivery
authors?array<>Authors of this post
authorIds?array<string>IDs of the authors of this post
views?numberTotal views. Only included when fetching your own posts via GET /v1/posts
status?stringCurrent publish status. Only set on authenticated endpoints (listOwn, getById for your own post). Use this instead of publishedAt to determine publish state — publishedAt is preserved across unpublishing.
"published""draft""scheduled""archived"curl -X GET "https://example.com/v1/publications/slug/string/posts/slug/string"{ "id": "string", "title": "string", "imageUrl": "http://example.com", "imageAlt": "string", "publishedAt": "string", "updatedAt": "string", "subtitle": "string", "slug": "string", "staticHtml": "string", "json": "string", "markdown": "string", "coinId": "string", "categories": [ "string" ], "canonicalUrl": "http://example.com", "publishOnline": true, "communityId": "string", "authors": [ { "id": "string", "walletAddress": "string", "avatarUrl": "http://example.com", "publicationId": "string", "name": "string", "bio": "string" } ], "authorIds": [ "string" ], "views": 0, "status": "published"}Get post by publication ID and post slug GET
Retrieve a post using its publication ID and its URL-friendly slug
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.