Skip to content
Navigation

Read Post

GET /v1/reddit/post
1 credit up to 500 comments (+1 per further 100) Permission: reddit:read

Returns a Reddit post with its nested comment tree and synthesized discussion digest, formatted as JSON, Markdown, or a graph.

Reddit hides long threads behind "load more comments"; threadapi automatically follows those links until it has collected the requested comments. The digest highlights OP follow-up replies, top-upvoted comments, and controversial discussions.

Authorization

  • bearerAuth: optional HTTP
  • apiKeyAuth: optional API key in header

Query parameters

  • url: optional string

    Reddit post URL (any reddit.com, redd.it, or share link) or post ID. Either url or id is required.

  • id: optional string

    Post ID (e.g. 1x144ok) or t3_ fullname. Alternative to url.

  • comment: optional string

    Comment ID to focus on. When set, returns its parent ancestor chain and direct replies.

  • context: optional integer

    Number of ancestor context levels to include above the focused comment.

    range: 0–8 · default: 3
  • max_comments: optional integer

    Maximum comments to return. Set to 0 to return the post alone.

    range: 0–2000 · default: 200
  • format: optional json|md|graph

    Response format: json (complete post and digest), md (Markdown for LLMs), or graph (discussion digest only).

    default: "json"

Returns

200

The post.

JSON
  • post: optional object
    • id: optional string
    • name: optional string
    • domain: optional string
    • is_self: optional boolean
    • flair: optional string
    • spoiler: optional boolean
    • stickied: optional boolean
    • locked: optional boolean
    • removed: optional boolean
    • subreddit: optional string
    • title: optional string
    • author: optional string
    • score: optional integer
    • upvote_ratio: optional number
    • num_comments: optional integer
    • url: optional string
    • selftext: optional string
    • created_at: optional string
      format: date-time
    • is_video: optional boolean
    • over_18: optional boolean
    • media: optional array ofobject
      • type: optional image|video|gallery
      • url: optional string
      • width: optional integer
      • height: optional integer
      • caption: optional string
    • poll: optional object
      • total_votes: optional integer
      • is_closed: optional boolean
      • options: optional array ofobject
        • id: optional string
        • text: optional string
        • vote_count: optional integer
    • crosspost_of: optional object
      • id: optional string
      • subreddit: optional string
      • title: optional string
      • author: optional string
    • comments: optional array ofobject
      • id: optional string
      • parent_id: optional string

        t3_<post id> for a top-level comment, t1_<comment id> for a reply.

      • author: optional string
      • score: optional integer
      • body: optional string
      • created_at: optional string
        format: date-time
      • depth: optional integer
      • is_submitter: optional boolean

        Written by the original poster.

      • controversy: optional integer
      • replies: optional array ofobject
        • id: optional string
        • parent_id: optional string

          t3_<post id> for a top-level comment, t1_<comment id> for a reply.

        • author: optional string
        • score: optional integer
        • body: optional string
        • created_at: optional string
          format: date-time
        • depth: optional integer
        • is_submitter: optional boolean

          Written by the original poster.

        • controversy: optional integer
        • replies: optional array ofobject
  • discussion_graph: optional object
    • post_id: optional string
    • title: optional string
    • author: optional string
    • author_followups: optional array ofobject

      The original poster's own comments in the thread.

      • id: optional string
      • parent_id: optional string

        t3_<post id> for a top-level comment, t1_<comment id> for a reply.

      • author: optional string
      • score: optional integer
      • body: optional string
      • created_at: optional string
        format: date-time
      • depth: optional integer
      • is_submitter: optional boolean

        Written by the original poster.

      • controversy: optional integer
      • replies: optional array ofobject
        • id: optional string
        • parent_id: optional string

          t3_<post id> for a top-level comment, t1_<comment id> for a reply.

        • author: optional string
        • score: optional integer
        • body: optional string
        • created_at: optional string
          format: date-time
        • depth: optional integer
        • is_submitter: optional boolean

          Written by the original poster.

        • controversy: optional integer
        • replies: optional array ofobject
    • most_upvoted: optional array ofobject

      Highest-score comments excluding OP, AutoModerator and deleted comments.

      • id: optional string
      • parent_id: optional string

        t3_<post id> for a top-level comment, t1_<comment id> for a reply.

      • author: optional string
      • score: optional integer
      • body: optional string
      • created_at: optional string
        format: date-time
      • depth: optional integer
      • is_submitter: optional boolean

        Written by the original poster.

      • controversy: optional integer
      • replies: optional array ofobject
        • id: optional string
        • parent_id: optional string

          t3_<post id> for a top-level comment, t1_<comment id> for a reply.

        • author: optional string
        • score: optional integer
        • body: optional string
        • created_at: optional string
          format: date-time
        • depth: optional integer
        • is_submitter: optional boolean

          Written by the original poster.

        • controversy: optional integer
        • replies: optional array ofobject
    • controversial: optional array ofobject

      Comments with controversiality flag or negative score, excluding OP.

      • id: optional string
      • parent_id: optional string

        t3_<post id> for a top-level comment, t1_<comment id> for a reply.

      • author: optional string
      • score: optional integer
      • body: optional string
      • created_at: optional string
        format: date-time
      • depth: optional integer
      • is_submitter: optional boolean

        Written by the original poster.

      • controversy: optional integer
      • replies: optional array ofobject
        • id: optional string
        • parent_id: optional string

          t3_<post id> for a top-level comment, t1_<comment id> for a reply.

        • author: optional string
        • score: optional integer
        • body: optional string
        • created_at: optional string
          format: date-time
        • depth: optional integer
        • is_submitter: optional boolean

          Written by the original poster.

        • controversy: optional integer
        • replies: optional array ofobject
    • total_analyzed: optional integer
  • meta: optional object
    • comments_returned: optional integer

      Comments in the response.

    • comments_total: optional integer

      Reddit's comment count, deleted and hidden comments included.

    • has_more: optional boolean

      A larger max_comments would return more.

    • max_comments: optional integer
    • credits_used: optional integer
    • cache: optional string
    • limited_by_balance: optional boolean
    • focus_comment_id: optional string

      Comment ID when a comment permalink was requested.

MARKDOWN
string

400

Bad request (invalid parameter or unknown action)
JSON

One of the following:

  • ErrorResponse
    • error: required string

      Human-readable error message

    • error_code: optional forbidden_scope|rate_limited|daily_quota_exceeded|insufficient_credits|duplicate_transaction

      Machine-readable error code. Known values include: forbidden_scope, rate_limited, daily_quota_exceeded, insufficient_credits, duplicate_transaction. Additional codes may be introduced in future releases.

  • Error
    • error: required object
      • code: required string
      • message: required string
      • retryable: required boolean
      • retry_after: optional integer

        Seconds to wait before retrying.

401

Missing or invalid API key or OAuth access token
JSON

One of the following:

  • ErrorResponse
    • error: required string

      Human-readable error message

    • error_code: optional forbidden_scope|rate_limited|daily_quota_exceeded|insufficient_credits|duplicate_transaction

      Machine-readable error code. Known values include: forbidden_scope, rate_limited, daily_quota_exceeded, insufficient_credits, duplicate_transaction. Additional codes may be introduced in future releases.

  • Error
    • error: required object
      • code: required string
      • message: required string
      • retryable: required boolean
      • retry_after: optional integer

        Seconds to wait before retrying.

402

The account has no credits left (insufficient_credits).
JSON
  • error: required object
    • code: required string
    • message: required string
    • retryable: required boolean
    • retry_after: optional integer

      Seconds to wait before retrying.

403

Reddit does not show this content to logged-out readers, e.g. a private or quarantined subreddit (reddit_refused).
JSON
  • error: required object
    • code: required string
    • message: required string
    • retryable: required boolean
    • retry_after: optional integer

      Seconds to wait before retrying.

404

Requested user or resource not found
JSON

One of the following:

  • ErrorResponse
    • error: required string

      Human-readable error message

    • error_code: optional forbidden_scope|rate_limited|daily_quota_exceeded|insufficient_credits|duplicate_transaction

      Machine-readable error code. Known values include: forbidden_scope, rate_limited, daily_quota_exceeded, insufficient_credits, duplicate_transaction. Additional codes may be introduced in future releases.

  • Error
    • error: required object
      • code: required string
      • message: required string
      • retryable: required boolean
      • retry_after: optional integer

        Seconds to wait before retrying.

429

Rate limit or daily request quota exceeded
JSON

One of the following:

  • ErrorResponse
    • error: required string

      Human-readable error message

    • error_code: optional forbidden_scope|rate_limited|daily_quota_exceeded|insufficient_credits|duplicate_transaction

      Machine-readable error code. Known values include: forbidden_scope, rate_limited, daily_quota_exceeded, insufficient_credits, duplicate_transaction. Additional codes may be introduced in future releases.

  • Error
    • error: required object
      • code: required string
      • message: required string
      • retryable: required boolean
      • retry_after: optional integer

        Seconds to wait before retrying.

503

A temporary problem reaching Reddit (upstream_busy, upstream_timeout, upstream_error). Retry shortly; nothing was billed.
JSON
  • error: required object
    • code: required string
    • message: required string
    • retryable: required boolean
    • retry_after: optional integer

      Seconds to wait before retrying.

Type to search…

↑↓ navigate ↵ select Esc close