---
title: "Get post by ID"
method: GET
path: "/v1/posts/{postId}"
tags: ["posts"]
---

# Get post by ID

`GET /v1/posts/{postId}`

Retrieve detailed information about a specific post

## Path parameters

- `postId` string, required

## Query parameters

- `includeContent` union
  - boolean
  - string

## Response `200`

Post details retrieved successfully

- object
  - `id` string, required — Unique identifier for the post
  - `title` string, required — Title of the post
  - `imageUrl` string, uri — Optional URL to the post's main image
  - `publishedAt` string — Epoch timestamp when the post was published
  - `updatedAt` string — Epoch timestamp when the post was last updated
  - `subtitle` string — Optional subtitle or brief summary
  - `slug` string, required — URL-friendly identifier for the post; accessible at paragraph.com/@[publicationSlug]/[slug]
  - `staticHtml` string — Rendered HTML content of the post
  - `json` string — TipTap JSON representation of the post content structure. This is the source of truth that the staticHtml and markdown is generated from
  - `markdown` string — Markdown source of the post content
  - `coinId` string — ID of the associated coin, if the post is coined
  - `categories` string[] — Categories/tags associated with this post
  - `authors` object[] — Authors of this post
    - `id` string, required — Unique identifier for the user
    - `walletAddress` string — Wallet address of the user
    - `avatarUrl` string, uri — URL to the user's avatar image
    - `publicationId` string, required — ID of the publication this user belongs to
    - `name` string — Display name of the user
    - `bio` string — Brief biography of the user (max 500 characters)
    - `farcaster` object — Farcaster profile information, if linked
      - `username` string, required — Farcaster username
      - `displayName` string, required — Farcaster display name
      - `fid` number, required — Farcaster fid
  - `authorIds` string[] — IDs of the authors of this post
  - `views` number — Total views. Only included when fetching your own posts via GET /v1/posts
  - `status` 'published' | 'draft' | 'scheduled' | 'archived' — Current 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.

## Other responses

- `404` — Post not found
- `500` — Internal server error

---

[API](https://skmtc.net/paragraph-xyz/apis/paragraph-api.md) · [All operations](https://skmtc.net/paragraph-xyz/apis/paragraph-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/paragraph-xyz/paragraph-api/versions/7bbf1b62c1a0/schema)
