RedditapisRedditapis
Posts

Check if a Reddit Post Was Removed or Filtered

Find out whether a Reddit post is still publicly visible or was quietly removed, filtered or hidden, in one call that compares the post against its author's public listing.

GET/api/reddit/post/:id/visibility$0.004 / call

A removed Reddit post does not tell its author. Fetch it by id and it still comes back, with its title, its body and its score. It simply stops appearing where other people would find it.

So this question cannot be answered by reading the post. It is answered by reading somewhere the post ought to appear and noticing that it does not. This endpoint makes both reads and compares them: the post by id, then one page of its author's submitted listing.

What it will not tell you

It never names a cause, and that is deliberate rather than a limitation we plan to remove. A moderator removal, an admin removal, an automated spam filter and an author who has simply switched their post history off all look identical from outside Reddit. Only one of them is "removed". Reporting the observation and refusing the cause is the difference between a useful answer and a confident wrong one.

Verdicts

verdictWhat it means
liveThe post appears in its author's listing, which is where a reader would find it.
not_visibleThe post exists but is absent from that listing, and the absence is not a paging artefact.
undecidableTwo calls cannot settle it. See below.

undecidable is a real answer rather than a failure. Reddit caps how far back a listing goes, so for an author with a long history one page cannot prove a post is missing. When the listing does not certify itself complete and the post is not on it, you get undecidable instead of a guess.

Every response also carries a confident boolean and a plain-language reason, plus a checked block naming exactly what was read.

Which way this fails

Ambiguity always resolves away from live. A false live is the expensive answer, because you stop checking. A false not_visible costs you one manual look at the post.

Path Parameters

ParameterTypeRequiredDescription
idstringYesReddit post id (e.g. 1sgjld3), with or without the t3_ prefix

Example

curl -H "Authorization: Bearer $TOKEN" \
  "https://api.redditapis.com/api/reddit/post/1sgjld3/visibility"
const response = await fetch(
  "https://api.redditapis.com/api/reddit/post/1sgjld3/visibility",
  { headers: { Authorization: "Bearer TOKEN" } }
);
const { verdict, reason, confident } = await response.json();
import requests

response = requests.get(
    "https://api.redditapis.com/api/reddit/post/1sgjld3/visibility",
    headers={"Authorization": "Bearer TOKEN"},
)
data = response.json()
print(data["verdict"], data["reason"])

Response

{
  "post": { "id": "1sgjld3", "author": "example_user", "title": "..." },
  "verdict": "not_visible",
  "reason": "the post exists but is absent from its author's submitted listing, and that listing reported itself complete, so the absence is not a paging artefact. This does not say why: a removal, a spam filter and an author who has hidden their history are indistinguishable from here",
  "confident": true,
  "checked": {
    "by_id": true,
    "author_listing": true,
    "author": "example_user",
    "listing_items": 41,
    "listing_status": "complete",
    "degraded": false
  }
}

Cost

Two upstream calls, billed as one request at $0.004. That is twice the read rate because it does twice the work, rather than hiding the second call inside the single-read price.

Independent third-party API for developers and researchers. Not affiliated with, endorsed by, or sponsored by Reddit, Inc.

On this page