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.
/api/reddit/post/:id/visibility$0.004 / callA 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
verdict | What it means |
|---|---|
live | The post appears in its author's listing, which is where a reader would find it. |
not_visible | The post exists but is absent from that listing, and the absence is not a paging artefact. |
undecidable | Two 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
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Reddit 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.
by ID
Fetch a single Reddit post by post id, all content, metadata, author info, vote counts, and crosspost origin in one HTTP GET call.
Bulk posts by ID (up to 100)
Bulk-fetch posts by comma-separated t3_ fullnames, up to 100 per call. Hydrate post IDs you already have, or backfill fields, without one request per post.
