> **For AI agents:** this page is a focused, LLM-optimized view of a
> single Fiber AI operation. Before calling it, fetch the routing
> instructions at [`https://api.fiber.ai/llms.txt`](https://api.fiber.ai/llms.txt) and the full operation
> index at [`https://api.fiber.ai/ai-docs/index.md`](https://api.fiber.ai/ai-docs/index.md).

# redditPostComments

`POST /v1/reddit/post/comments`

**Tags:** `Reddit`

Fetch post comments

**Endpoint:** `https://api.fiber.ai/v1/reddit/post/comments`

## Description

Fetch comments for a Reddit post by URL or `t3_` identifier. Returns the parent post (when available) and a paginated, depth-first flat list of comments that includes nested replies. Each entry's `parentCommentId` is null for top-level comments or points at the parent comment for replies; group on `parentCommentId` to rebuild the thread tree. Use the `nextPageToken` field from the response to retrieve subsequent pages of top-level comments (their nested replies come along automatically).

⚡ Rate limit: 300 requests per 1 minute

💰 Cost: 2 credits per page of results ⓘ

## Request body (JSON Schema)

```json
{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string",
      "description": "Your Fiber API key"
    },
    "postUrlOrId": {
      "type": "string",
      "minLength": 1,
      "description": "Full Reddit post URL/permalink or post ID (e.g. 't3_ablzuq')."
    },
    "nextPageToken": {
      "type": [
        "string",
        "null"
      ],
      "minLength": 1,
      "description": "Pagination token from a previous response to retrieve the next page. Omit for the first page."
    }
  },
  "required": [
    "apiKey",
    "postUrlOrId"
  ]
}
```

## Response — success (JSON Schema)

```json
{
  "type": "object",
  "properties": {
    "output": {
      "type": "object",
      "properties": {
        "post": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "id": {
              "type": "string",
              "description": "Stable Reddit post identifier (e.g. `ablzuq`). Use this as the primary key when storing posts in a database. Pass as `t3_<id>` to `/reddit/post/comments` to fetch comments for this post."
            },
            "title": {
              "type": [
                "string",
                "null"
              ],
              "description": "Post title."
            },
            "author": {
              "type": [
                "string",
                "null"
              ],
              "description": "Author username."
            },
            "subreddit": {
              "type": [
                "string",
                "null"
              ],
              "description": "Subreddit name."
            },
            "bodyText": {
              "type": [
                "string",
                "null"
              ],
              "description": "Post body text."
            },
            "url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Content URL. For link posts this is the external URL the post points at; for text and media posts it is the post's permalink on Reddit."
            },
            "permalink": {
              "type": [
                "string",
                "null"
              ],
              "description": "Reddit discussion URL. Always points at the post's comments page on reddit.com regardless of post type."
            },
            "score": {
              "type": [
                "number",
                "null"
              ],
              "description": "Net vote score (upvotes minus downvotes, subject to Reddit vote fuzzing)."
            },
            "upvoteRatio": {
              "type": [
                "number",
                "null"
              ],
              "minimum": 0,
              "maximum": 1,
              "description": "Ratio of upvotes to total votes (0 to 1)."
            },
            "commentCount": {
              "type": [
                "number",
                "null"
              ],
              "description": "Number of comments."
            },
            "thumbnailUrl": {
              "type": [
                "string",
                "null"
              ],
              "description": "Thumbnail URL when available."
            },
            "publishedAt": {
              "type": [
                "string",
                "null"
              ],
              "description": "Publication timestamp in ISO 8601 format."
            },
            "isVideo": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "True when the post contains video media."
            },
            "isOver18": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "True when the post is marked NSFW."
            },
            "isSpoiler": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "True when the post is marked as a spoiler."
            }
          },
          "required": [
            "id"
          ],
          "description": "Post metadata for the requested comment thread."
        },
        "comments": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Stable Reddit comment identifier (e.g. `ed1czme`). Use this as the primary key when storing comments in a database."
              },
              "parentCommentId": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Parent comment ID when this entry is a reply to another comment. Null for top-level comments (whose parent is the post). Use this field to rebuild the thread tree by grouping comments on `parentCommentId`."
              },
              "author": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Comment author username."
              },
              "bodyText": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Comment body text."
              },
              "score": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Net vote score (upvotes minus downvotes, subject to Reddit vote fuzzing)."
              },
              "publishedAt": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Comment timestamp in ISO 8601 format."
              },
              "replyCount": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Total number of direct replies on this comment. May exceed the number of reply entries actually present in `comments[]` when some replies are collapsed by Reddit and not included in the current page."
              },
              "permalink": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Canonical Reddit permalink for the comment."
              }
            },
            "required": [
              "id"
            ]
          },
          "description": "Flat list of comments returned for the post, including replies. Each entry's `parentCommentId` is null for top-level comments and points at the parent comment's `id` for replies. The list is depth-first ordered (each top-level comment is followed by its descendants), so customers who want a tree can group on `parentCommentId`."
        },
        "nextPageToken": {
          "type": [
            "string",
            "null"
          ],
          "minLength": 1,
          "description": "Token to retrieve the next page of top-level comments (their nested replies are included automatically). Pass as `nextPageToken` in the next request. Null if no more pages."
        }
      },
      "required": [
        "comments"
      ]
    },
    "chargeInfo": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "charged-now"
              ]
            },
            "creditsCharged": {
              "type": "number"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "creditsCharged"
          ],
          "description": "Credits were charged immediately for this operation"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "charging-later"
              ]
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "message"
          ],
          "description": "Credits will be charged after the operation completes"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "charged-for-async-process"
              ]
            },
            "creditsCharged": {
              "type": "number"
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "creditsCharged",
            "message"
          ],
          "description": "Credits that were charged for an asynchronous operation"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "free"
              ]
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "message"
          ],
          "description": "No credits were charged for this operation"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "credits-refunded"
              ]
            },
            "creditsRefunded": {
              "type": "number"
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "creditsRefunded",
            "message"
          ],
          "description": "Credits were refunded for this operation"
        }
      ]
    },
    "warnings": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "Full path to extraneous field (e.g., 'searchParams.ExtraField')"
          },
          "message": {
            "type": "string",
            "description": "Warning message"
          }
        },
        "required": [
          "field",
          "message"
        ]
      },
      "description": "Warnings about extraneous fields in request"
    },
    "advice": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Tips, recommendations, and suggestions for using this API effectively."
    }
  },
  "required": [
    "output",
    "chargeInfo"
  ],
  "additionalProperties": false
}
```

---

Canonical JSON: [`https://api.fiber.ai/openapi.json`](https://api.fiber.ai/openapi.json)
Operation index: [`https://api.fiber.ai/ai-docs/index.md`](https://api.fiber.ai/ai-docs/index.md)
