# Get a Reddit account's public profile

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

Karma, account age, moderator and Premium status, and the profile's bio and follower count
— the facts that tell a real, established account from a throwaway. A suspended account is
returned with `isSuspended: true` and its counters null, because that is all Reddit shows;
an account that does not exist is a 404.

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

**Rate limit:** Counts as 1 request against your per-minute rate limit.

**MCP tool:** `get_reddit_user`, 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 \
  --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}$` |

## Response

The profile, in Reddit's own field names.

### `200`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `data` | object | yes |  |
| `data.id` | string or null | yes | Base-36 account id without `t2_`. Null for a suspended account. |
| `data.name` | string | yes | Username without the `u/` prefix. |
| `data.url` | string | yes | Absolute URL of the profile. |
| `data.isSuspended` | boolean | yes | Suspended by Reddit: the profile shows nothing else. |
| `data.createdUtc` | number or null | yes | When the account was created, in epoch seconds. |
| `data.createdAt` | string or null | yes |  |
| `data.linkKarma` | integer or null | yes | Karma from posts. |
| `data.commentKarma` | integer or null | yes | Karma from comments. |
| `data.totalKarma` | integer or null | yes |  |
| `data.isEmployee` | boolean or null | yes | A Reddit employee. |
| `data.isMod` | boolean or null | yes | Moderates at least one community. |
| `data.isGold` | boolean or null | yes | Has Reddit Premium. |
| `data.verified` | boolean or null | yes |  |
| `data.hasVerifiedEmail` | boolean or null | yes |  |
| `data.iconImg` | string or null | yes | URL of the avatar. |
| `data.snoovatarImg` | string or null | yes | URL of the full-body avatar, if one is set. |
| `data.acceptFollowers` | boolean or null | yes |  |
| `data.subreddit` | object or null | yes | The profile page itself, which Reddit models as a community named `u_<name>`. Null for a suspended account. |
| `data.subreddit.title` | string | yes |  |
| `data.subreddit.publicDescription` | string or null | yes | The profile's bio. |
| `data.subreddit.over18` | boolean | yes | The account marked its profile NSFW. |
| `data.subreddit.bannerImg` | string or null | yes |  |
| `data.subreddit.subscribers` | integer | yes | Followers. 0 when the account hides the count. · min 0 |
| `meta` | object | yes |  |
| `meta.requestId` | string | yes |  |
| `meta.nextCursor` | string or null | no |  |

## 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. |
