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 connection.
Requires an API key, sent as Authorization: Bearer <key>.
Request
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. |