threadapiDocs

Listings and pages

The envelope every list endpoint returns, how to page through it, and how NSFW items are filtered.

Every endpoint that returns a list of posts, comments, subreddits or users answers with the same envelope:

{
  "subreddit": "golang",      // the subreddit asked for, or null
  "query": null,              // the search query, or null
  "sort": "top",              // the sort Reddit applied
  "count": 3,                 // items in this page
  "items": [ /* posts, comments, subreddits or users */ ],
  "after": "t3_1x0vbyx",      // pass back as after= for the next page; null on the last
  "filtered_nsfw": 0          // NSFW items left out of this page
}

The item type depends on the endpoint: Subreddit, Search, Duplicates and User posts return posts; Subreddit comments, User comments and Comment search return comments; Subreddits and search?type=subreddit return subreddits; search?type=user returns users.

Pages

Pass the previous page's after to get the next one. Each page is one call and 1 credit.

curl "https://api.threadapi.dev/v1/reddit/subreddit?sub=golang&sort=new&limit=100&after=t3_1x0vbyx" \
  -H "Authorization: Bearer $THREADAPI_API_KEY"

after is a Reddit fullname (t3_… for posts, t1_… for comments, t5_… for subreddits, t2_… for users) except on comment search, where it is an opaque string. Treat it as opaque everywhere and pass it back unchanged.

Reddit stops a listing at about 1,000 items, whatever the sort. To go further back, narrow the request: a shorter t window, a search with sub, or a different sort.

NSFW

Items Reddit marks NSFW are left out unless you pass nsfw=true. filtered_nsfw counts how many were left out of the page, so a page can hold fewer than limit items while after is still set.

Reading a subreddit that is itself marked NSFW without nsfw=true returns 403 nsfw_subreddit:

{"error":{"code":"nsfw_subreddit","message":"This subreddit is marked NSFW. Pass nsfw=true to read it.","retryable":false}}

Caching

Listings are cached briefly: 30 seconds for new and rising, a minute for hot and search, and 5 minutes for top and controversial over a day or longer. The X-Cache-Tier header says whether the page came from the cache (L1_LISTING) or from Reddit (MISS). A cached page costs the same 1 credit.

On this page