# List the comments an account has made

`GET /v1/reddit/users/{username}/comments`

Comments the account made, across every community, each with the post it belongs to
(`linkTitle`, `linkPermalink`). Newest first by default.

Reddit lets people hide some or all of their activity from their profile, so an empty page
for an account with karma usually means hidden, not inactive. An account that does not exist
is a 404, and a suspended one is a 404 with `details.reason` `suspended`. Pages stop at
about 1,000 items, Reddit's own ceiling.

**Price:** 1 credit per call, plus 3 credits per Reddit comment returned. Failed and refused calls cost nothing.

**Rate limit:** Counts as 2 requests against your per-minute rate limit.

**MCP tool:** `get_reddit_user_comments`, on every [MCP](/mcp) connection.

Requires an API key, sent as `Authorization: Bearer <key>`.

## Request

```bash
curl --request GET \
  --url https://api.weirapp.io/v1/reddit/users/USERNAME/comments \
  --header "Authorization: Bearer $WEIR_API_KEY"
```

### Path parameters

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `username` | string | yes | Username without the `u/` prefix. · matches `^[A-Za-z0-9_-]{1,20}$` |

### Query parameters

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `sort` | string | no | `new` is what the account did most recently. · `new`, `hot`, `top`, `controversial`, default `"new"` |
| `time` | string | no | Window for `top` and `controversial` only. Defaults to `all` for those sorts. · `hour`, `day`, `week`, `month`, `year`, `all` |
| `includeNsfw` | string | no | Include posts marked NSFW. Off by default; what it removes is reported in `meta.omittedNsfw`, so a short or empty page is never mistaken for a quiet one. · `true`, `false`, default `"false"` |
| `limit` | integer | no | 1–100, default `25` |
| `cursor` | string | no | `meta.nextCursor` from the previous page, unchanged. Opaque, signed, and bound to the other parameters: change any of them and start again without a cursor. · 1–4096 chars |

## Response

Comments, in Reddit's own field names.

### `200`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `data` | array of object | yes |  |
| `data[].id` | string | yes | Reddit's base-36 comment id, without the `t1_` prefix. |
| `data[].postId` | string | yes | The post this comment belongs to, without `t3_`. |
| `data[].parentId` | string | yes | The comment or post this replies to. |
| `data[].author` | string | yes | Username without the `u/` prefix. `[deleted]` if removed. |
| `data[].body` | string | yes | Markdown. `[removed]` or `[deleted]` once taken down. |
| `data[].score` | integer | yes |  |
| `data[].permalink` | string | yes | Absolute URL of the comment. |
| `data[].createdUtc` | number | yes |  |
| `data[].createdAt` | string (date-time) | yes |  |
| `data[].subreddit` | string | yes | Community name without the `r/` prefix. |
| `data[].isSubmitter` | boolean | yes | The commenter is the post's author (OP). |
| `data[].edited` | number or null | yes | When the comment was last edited, in epoch seconds. Null if it never was. |
| `data[].distinguished` | string or null | yes | `moderator` or `admin` when posted in an official capacity; otherwise null. |
| `data[].stickied` | boolean | yes | Pinned under the post by a moderator. |
| `data[].scoreHidden` | boolean | yes | Reddit is hiding this comment's score for now; `score` means nothing while true. |
| `data[].linkTitle` | string | yes | Title of the post the comment belongs to. |
| `data[].linkAuthor` | string | yes | Author of that post. |
| `data[].linkPermalink` | string | yes | Absolute URL of that post. |
| `data[].numComments` | integer | yes | Comments on that post. · min 0 |
| `data[].over18` | boolean | yes | That post is marked NSFW. |
| `meta` | object | yes |  |
| `meta.requestId` | string | yes |  |
| `meta.nextCursor` | string or null | no |  |
| `meta.omittedNsfw` | integer | no | Items removed from this page because they are marked NSFW and `includeNsfw` is false. Absent when nothing was removed. A page can be short, or even empty with a non-null `nextCursor`, because of it. · min 0 |

## Errors

| Status | Meaning | What to do |
| --- | --- | --- |
| `400` | The request failed validation. | The request was malformed. The `details` object names the field. |
| `401` | The API key is missing, malformed, expired, or revoked. | The key is missing, malformed, revoked, or expired. |
| `402` | The account is out of credit. Not retryable: this cannot clear until the billing period resets or the plan changes. | Out of credits. **Never retry.** Only a person can clear it, by adding credits at https://weirapp.io/dashboard/billing. Retrying never will. |
| `403` | The API key does not carry the scope this route requires. | The key is valid but lacks the scope this operation needs. |
| `404` | The requested resource does not exist. | No such resource, or it is not public. |
| `429` | The per-minute rate limit is exhausted. Retryable: wait for Retry-After and try again. | Rate limited. Retryable: wait for `Retry-After`, then try again. |
| `500` | An unexpected error occurred. | Something failed on our side. Retryable with backoff. |
| `503` | The source is temporarily unavailable. The request is safe to retry. | A source was unreachable. Retryable with backoff. |
