Fetch up to 100 posts and comments, and 100 communities, in one call

POST /v1/reddit/lookup

Current state of items you already know about: fresh scores and comment counts, whether a post was removed (removedByCategory) or a comment deleted ([deleted] body), and community metadata — in one request instead of one per item. Accepts the links people actually paste.

Items Reddit did not return (deleted, nonexistent, or not publicly readable) are listed in meta.missing as t3_<id>, t1_<id>, or r/<name>. Results are not filtered for NSFW: you named these items. Billed per item returned.

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

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

MCP tool: lookup_reddit, on every MCP connection.

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

Request

curl --request POST \
  --url https://api.weirapp.io/v1/reddit/lookup \
  --header "Authorization: Bearer $WEIR_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{}'

Body

Field Type Required Notes
posts array of string no Posts, as ids (1vdo8we), t3_ fullnames, post URLs, or redd.it links. Share links (/s/...) carry no id and are refused.
comments array of string no Comments, as ids, t1_ fullnames, or comment permalinks.
subreddits array of string no Communities, by name, r/name, or community URL.

Response

The items that exist and are publicly readable, in Reddit's own field names.

200

Field Type Required Notes
data object yes
data.posts array of object yes
data.posts[].id string yes Reddit's base-36 post id, without the t3_ prefix.
data.posts[].subreddit string yes Community name without the r/ prefix.
data.posts[].title string yes
data.posts[].selftext string yes Body text. Empty for a link post.
data.posts[].author string yes Username without the u/ prefix. [deleted] if removed.
data.posts[].permalink string yes Path on reddit.com, beginning with a slash.
data.posts[].url string yes Absolute URL to the post.
data.posts[].score integer yes Upvotes minus downvotes. Can be negative, and is fuzzed by Reddit.
data.posts[].upvoteRatio number yes Fraction of votes that were upvotes. · 0–1
data.posts[].numComments integer yes min 0
data.posts[].over18 boolean yes Marked NSFW by the author or a moderator.
data.posts[].createdUtc number yes Creation time in epoch seconds, as Reddit reports it.
data.posts[].createdAt string (date-time) yes The same instant as createdUtc, in ISO 8601.
data.posts[].domain string yes self.<subreddit> for a text post; otherwise the host the post links to.
data.posts[].isSelf boolean yes A text post rather than a link.
data.posts[].urlOverriddenByDest string or null yes Where a link post points. Null for a text post.
data.posts[].linkFlairText string or null yes The post's flair, such as Question or Hiring. Null when it has none.
data.posts[].authorFlairText string or null yes The author's flair in this community.
data.posts[].distinguished string or null yes moderator or admin when posted in an official capacity; otherwise null.
data.posts[].stickied boolean yes Pinned to the top of the community.
data.posts[].locked boolean yes New comments are disabled.
data.posts[].archived boolean yes Past Reddit's archive age: no new comments or votes.
data.posts[].spoiler boolean yes
data.posts[].edited number or null yes When the post was last edited, in epoch seconds. Null if it never was.
data.posts[].numCrossposts integer yes min 0
data.posts[].crosspostParent string or null yes The original post's id, without t3_, when this post is a crosspost.
data.posts[].removedByCategory string or null yes Why the post was removed: moderator, deleted, author, automod_filtered, reddit, and so on. Null while it is visible.
data.posts[].subredditSubscribers integer yes Members of the community at the time the post was read. · min 0
data.posts[].postHint string or null yes What the post holds when Reddit says: image, link, hosted:video, self.
data.posts[].isVideo boolean yes
data.comments array of object yes
data.comments[].id string yes Reddit's base-36 comment id, without the t1_ prefix.
data.comments[].postId string yes The post this comment belongs to, without t3_.
data.comments[].parentId string yes The comment or post this replies to.
data.comments[].author string yes Username without the u/ prefix. [deleted] if removed.
data.comments[].body string yes Markdown. [removed] or [deleted] once taken down.
data.comments[].score integer yes
data.comments[].permalink string yes Absolute URL of the comment.
data.comments[].createdUtc number yes
data.comments[].createdAt string (date-time) yes
data.comments[].subreddit string yes Community name without the r/ prefix.
data.comments[].isSubmitter boolean yes The commenter is the post's author (OP).
data.comments[].edited number or null yes When the comment was last edited, in epoch seconds. Null if it never was.
data.comments[].distinguished string or null yes moderator or admin when posted in an official capacity; otherwise null.
data.comments[].stickied boolean yes Pinned under the post by a moderator.
data.comments[].scoreHidden boolean yes Reddit is hiding this comment's score for now; score means nothing while true.
data.comments[].linkTitle string yes Title of the post the comment belongs to.
data.comments[].linkAuthor string yes Author of that post.
data.comments[].linkPermalink string yes Absolute URL of that post.
data.comments[].numComments integer yes Comments on that post. · min 0
data.comments[].over18 boolean yes That post is marked NSFW.
data.subreddits array of object yes
data.subreddits[].id string yes Reddit's fullname for the community, t5_ included.
data.subreddits[].name string yes Community name without the r/ prefix.
data.subreddits[].title string yes
data.subreddits[].description string or null yes The short public description. Null if unset.
data.subreddits[].url string yes
data.subreddits[].subscribers integer yes min 0
data.subreddits[].over18 boolean yes The whole community is marked NSFW.
data.subreddits[].createdUtc number yes
data.subreddits[].createdAt string (date-time) yes
data.subreddits[].subredditType string yes public, restricted, private, archived, gold_restricted, or user.
data.subreddits[].submissionType string or null yes What may be posted: any, link, or self.
data.subreddits[].lang string or null yes The community's declared language, such as en.
data.subreddits[].quarantine boolean yes Quarantined by Reddit: hidden from search and listings.
data.subreddits[].communityIcon string or null yes URL of the community icon. Null if unset.
data.subreddits[].bannerImg string or null yes URL of the banner image. Null if unset.
meta object yes
meta.requestId string yes
meta.missing array of string yes What was asked for and not returned: t3_<id>, t1_<id>, r/<name>.

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.

View this page as Markdown