This is automatically-generated documentation for the reddit API.
The reddit API and code are open source. Found a mistake or interested in helping us improve? Have a gander at api.py and send us a pull request.
Please take care to respect our API access rules.
overview
listings
Many endpoints on reddit use the same protocol for controlling pagination and
filtering. These endpoints are called Listings and share five common
parameters: after / before, limit, count, and show.
Listings do not use page numbers because their content changes so frequently.
Instead, they allow you to view slices of the underlying data. Listing JSON
responses contain after and before fields which are equivalent to the
"next" and "prev" buttons on the site and in combination with count can be
used to page through the listing.
The common parameters are as follows:
after/before- only one should be specified. these indicate the fullname of an item in the listing to use as the anchor point of the slice.limit- the maximum number of items to return in this slice of the listing.count- the number of items already seen in this listing. on the html site, the builder uses this to determine when to give values forbeforeandafterin the response.show- optional parameter; ifallis passed, filters such as "hide links that I have voted on" will be disabled.
To page through a listing, start by fetching the first page without specifying
values for after and count. The response will contain an after value
which you can pass in the next request. It is a good idea, but not required, to
send an updated value for count which should be the number of items already
fetched.
modhashes
A modhash is a token that the reddit API requires to help prevent CSRF. Modhashes can be obtained via the /api/me.json call or in response data of listing endpoints.
The preferred way to send a modhash is to include an X-Modhash custom HTTP
header with your requests.
Modhashes are not required when authenticated with OAuth.
fullnames
A fullname is a combination of a thing's type (e.g. Link) and its unique ID
which forms a compact encoding of a globally unique ID on reddit.
Fullnames start with the type prefix for the object's type, followed by the
thing's unique ID in base 36. For
example, t3_15bfi0.
| t1_ | Comment |
|---|---|
| t2_ | Account |
| t3_ | Link |
| t4_ | Message |
| t5_ | Subreddit |
| t6_ | Award |
| t8_ | PromoCampaign |
response body encoding
For legacy reasons, all JSON response bodies currently have <, >, and &
replaced with <, >, and &, respectively. If you wish to opt out
of this behaviour, add a raw_json=1 parameter to your request.
account
GET /api/v1/me/prefsidentity
Return the preference settings of the logged in user
| fields | A comma-separated list of items from this set:
|
|---|
PATCH /api/v1/me/prefsaccount
| This endpoint expects JSON data of this format |
|
|---|
GET /prefs/wherereadrss support
- → /prefs/friends
- → /prefs/blocked
- → /prefs/messaging
- → /prefs/trusted
- → /api/v1/me/friends
- → /api/v1/me/blocked
captcha
flair
POST [/r/subreddit]/api/clearflairtemplatesmodflair
| api_type | the string |
|---|---|
| flair_type | one of ( |
| uh / X-Modhash header | a modhash |
POST [/r/subreddit]/api/deleteflairmodflair
| api_type | the string |
|---|---|
| name | a user by name |
| uh / X-Modhash header | a modhash |
POST [/r/subreddit]/api/deleteflairtemplatemodflair
| api_type | the string |
|---|---|
| flair_template_id | |
| uh / X-Modhash header | a modhash |
POST [/r/subreddit]/api/flairmodflair
POST [/r/subreddit]/api/flairconfigmodflair
| api_type | the string |
|---|---|
| flair_enabled | boolean value |
| flair_position | one of ( |
| flair_self_assign_enabled | boolean value |
| link_flair_position | one of (` |
| link_flair_self_assign_enabled | boolean value |
| uh / X-Modhash header | a modhash |
POST [/r/subreddit]/api/flaircsvmodflair
Change the flair of multiple users in the same subreddit with a single API call.
Requires a string 'flair_csv' which has up to 100 lines of the form
'user,flairtext,cssclass' (Lines beyond the 100th are ignored).
If both cssclass and flairtext are the empty string for a given
user, instead clears that user's flair.
Returns an array of objects indicating if each flair setting was applied, or a reason for the failure.
| flair_csv | comma-seperated flair information |
|---|---|
| uh / X-Modhash header | a modhash |
GET [/r/subreddit]/api/flairlistmodflair
POST [/r/subreddit]/api/flairselectorflair
Return information about a users's flair options.
If link is given, return link flair options.
Otherwise, return user flair options for this subreddit.
The logged in user's flair is also returned.
Subreddit moderators may give a user by name to instead
retrieve that user's flair.
| link | a fullname of a link |
|---|---|
| name | a user by name |
POST [/r/subreddit]/api/flairtemplatemodflair
| api_type | the string |
|---|---|
| css_class | a valid subreddit image name |
| flair_template_id | |
| flair_type | one of ( |
| text | a string no longer than 64 characters |
| text_editable | boolean value |
| uh / X-Modhash header | a modhash |
GET [/r/subreddit]/api/link_flairflair
Return list of available link flair for the current subreddit.
Will not return flair if the user cannot set their own link flair and they are not a moderator that can set flair.
POST [/r/subreddit]/api/selectflairflair
POST [/r/subreddit]/api/setflairenabledflair
| api_type | the string |
|---|---|
| flair_enabled | boolean value |
| uh / X-Modhash header | a modhash |
reddit gold
POST /api/v1/gold/give/usernamecreddits
| months | an integer between 1 and 36 |
|---|---|
| username | A valid, existing reddit username |
links & comments
POST /api/commentany
Submit a new comment or reply to a message.
parent is the fullname of the thing being replied to. Its value
changes the kind of object created by this request:
- the fullname of a Link: a top-level comment in that Link's thread. (requires
submitscope) - the fullname of a Comment: a comment reply to that comment. (requires
submitscope) - the fullname of a Message: a message reply to that message. (requires
privatemessagesscope)
text should be the raw markdown body of the comment or message.
To start a new message thread, use /api/compose.
| api_type | the string |
|---|---|
| text | raw markdown text |
| thing_id | fullname of parent thing |
| uh / X-Modhash header | a modhash |
POST /api/deledit
POST /api/editusertextedit
POST /api/hidereport
Hide a link.
This removes it from the user's default view of subreddit listings.
See also: /api/unhide.
| id | A comma-separated list of link fullnames |
|---|---|
| uh / X-Modhash header | a modhash |
GET [/r/subreddit]/api/inforead
Return a listing of things specified by their fullnames.
Only Links, Comments, and Subreddits are allowed.
| id | A comma-separated list of thing fullnames |
|---|---|
| url | a valid URL |
POST /api/marknsfwmodposts
Mark a link NSFW.
See also: /api/unmarknsfw.
| id | fullname of a thing |
|---|---|
| uh / X-Modhash header | a modhash |
GET /api/morechildrenread
Retrieve additional comments omitted from a base comment tree.
When a comment tree is rendered, the most relevant comments are selected for display first. Remaining comments are stubbed out with "MoreComments" links. This API call is used to retrieve the additional comments represented by those stubs, up to 100 at a time.
The two core parameters required are link and children. link is
the fullname of the link whose comments are being fetched. children
is a comma-delimited list of comment ID36s that need to be fetched.
If id is passed, it should be the ID of the MoreComments object this
call is replacing. This is needed only for the HTML UI's purposes and
is optional otherwise.
NOTE: you may only make one request at a time to this API endpoint. Higher concurrency will result in an error being returned.
| api_type | the string |
|---|---|
| children | a comma-delimited list of comment ID36s |
| id | (optional) id of the associated MoreChildren object |
| link_id | fullname of a link |
| sort | one of ( |
POST /api/reportreport
Report a link, comment or message.
Reporting a thing brings it to the attention of the subreddit's moderators. Reporting a message sends it to a system for admin review.
For links and comments, the thing is implicitly hidden as well (see /api/hide for details).
| api_type | the string |
|---|---|
| other_reason | a string no longer than 100 characters |
| reason | a string no longer than 100 characters |
| rule_reason | a string no longer than 100 characters |
| site_reason | a string no longer than 100 characters |
| thing_id | fullname of a thing |
| uh / X-Modhash header | a modhash |
POST /api/savesave
Save a link or comment.
Saved things are kept in the user's saved listing for later perusal.
See also: /api/unsave.
| category | a category name |
|---|---|
| id | fullname of a thing |
| uh / X-Modhash header | a modhash |
GET /api/saved_categoriessave
Get a list of categories in which things are currently saved.
See also: /api/save.
POST /api/sendrepliesedit
POST /api/set_contest_modemodposts
Set or unset "contest mode" for a link's comments.
state is a boolean that indicates whether you are enabling or
disabling contest mode - true to enable, false to disable.
| api_type | the string |
|---|---|
| id | |
| state | boolean value |
| uh / X-Modhash header | a modhash |
POST /api/set_subreddit_stickymodposts
Set or unset a Link as the sticky in its subreddit.
state is a boolean that indicates whether to sticky or unsticky
this post - true to sticky, false to unsticky.
The num argument is optional, and only used when stickying a post.
It allows specifying a particular "slot" to sticky the post into, and
if there is already a post stickied in that slot it will be replaced.
If there is no post in the specified slot to replace, or num is None,
the bottom-most slot will be used.
| api_type | the string |
|---|---|
| id | |
| num | an integer between 1 and 2 |
| state | boolean value |
| uh / X-Modhash header | a modhash |
POST /api/set_suggested_sortmodposts
Set a suggested sort for a link.
Suggested sorts are useful to display comments in a certain preferred way for posts. For example, casual conversation may be better sorted by new by default, or AMAs may be sorted by Q&A. A sort of an empty string clears the default sort.
| api_type | the string |
|---|---|
| id | |
| sort | one of ( |
| uh / X-Modhash header | a modhash |
POST /api/store_visitssave
Requires a subscription to reddit gold
| links | A comma-separated list of link fullnames |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/submitsubmit
Submit a link to a subreddit.
Submit will create a link or self-post in the subreddit sr with the
title title. If kind is "link", then url is expected to be a
valid URL to link to. Otherwise, text, if present, will be the
body of the self-post unless richtext is present, in which case
it will be converted into the body of the self-post. An error is thrown
if both text and richtext are present.
If a link with the same URL has already been submitted to the specified
subreddit an error will be returned unless resubmit is true.
extension is used for determining which view-type (e.g. json,
compact etc.) to use for the redirect that is generated if the
resubmit error occurs.
| api_type | the string |
|---|---|
| app | |
| extension | extension used for redirects |
| flair_id | a string no longer than 36 characters |
| flair_text | a string no longer than 64 characters |
| g-recaptcha-response | |
| kind | one of ( |
| resubmit | boolean value |
| richtext_json | RTJSON string |
| sendreplies | boolean value |
| sr | subreddit name |
| text | raw markdown text |
| title | title of the submission. up to 300 characters long |
| uh / X-Modhash header | a modhash |
| url | a valid URL |
| video_poster_url | a valid URL |
POST /api/unhidereport
POST /api/unlockmodposts
POST /api/unmarknsfwmodposts
Remove the NSFW marking from a link.
See also: /api/marknsfw.
| id | fullname of a thing |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/unsavesave
POST /api/votevote
Cast a vote on a thing.
id should be the fullname of the Link or Comment to vote on.
dir indicates the direction of the vote. Voting 1 is an upvote,
-1 is a downvote, and 0 is equivalent to "un-voting" by clicking
again on a highlighted arrow.
Note: votes must be cast by humans. That is, API clients proxying a human's action one-for-one are OK, but bots deciding how to vote on content or amplifying a human's vote are not. See the reddit rules for more details on what constitutes vote cheating.
| dir | vote direction. one of (1, 0, -1) |
|---|---|
| id | fullname of a thing |
| rank | an integer greater than 1 |
| uh / X-Modhash header | a modhash |
listings
GET /api/trending_subreddits
Return a list of trending subreddits, link to the comment in r/trendingsubreddits, and the comment count of that link.
GET /by_id/namesread
Get a listing of links by fullname.
names is a list of fullnames for links separated by commas or spaces.
| names | A comma-separated list of link fullnames |
|---|
GET [/r/subreddit]/comments/articlereadrss support
Get the comment tree for a given Link article.
If supplied, comment is the ID36 of a comment in the comment tree for
article. This comment will be the (highlighted) focal point of the
returned view and context will be the number of parents shown.
depth is the maximum depth of subtrees in the thread.
limit is the maximum number of comments to return.
See also: /api/morechildren and /api/comment.
| article | ID36 of a link |
|---|---|
| comment | (optional) ID36 of a comment |
| context | an integer between 0 and 8 |
| depth | (optional) an integer |
| limit | (optional) an integer |
| showedits | boolean value |
| showmore | boolean value |
| sort | one of ( |
| sr_detail | (optional) expand subreddits |
| threaded | boolean value |
| truncate | an integer between 0 and 50 |
GET /duplicates/articlereadrss support
Return a list of other submissions of the same URL
This endpoint is a listing.
| after | fullname of a thing |
|---|---|
| article | The base 36 ID of a Link |
| before | fullname of a thing |
| count | a positive integer (default: 0) |
| limit | the maximum number of items desired (default: 25, maximum: 100) |
| show | (optional) the string |
| sr_detail | (optional) expand subreddits |
GET [/r/subreddit]/hotreadrss support
GET [/r/subreddit]/newreadrss support
GET [/r/subreddit]/risingreadrss support
GET [/r/subreddit]/sortreadrss support
- → [/r/subreddit]/top
- → [/r/subreddit]/controversial
live threads
Real-time updates on reddit.
In addition to the standard reddit API, WebSockets play a huge role in reddit live. Receiving push notification of changes to the thread via websockets is much better than polling the thread repeatedly.
To connect to the websocket server, fetch
/live/thread/about.json and get the
websocket_url field. The websocket URL expires after a period of time; if it
does, fetch a new one from that endpoint.
Once connected to the socket, a variety of messages can come in. All messages
will be in text frames containing a JSON object with two keys: type and
payload. Live threads can send messages with many types:
update- a new update has been posted in the thread. thepayloadcontains the JSON representation of the update.activity- periodic update of the viewer counts for the thread.settings- the thread's settings have changed. thepayloadis an object with each key being a property of the thread (as inabout.json) and its new value.delete- an update has been deleted (removed from the thread). thepayloadis the ID of the deleted update.strike- an update has been stricken (marked incorrect and crossed out). thepayloadis the ID of the stricken update.embeds_ready- a previously posted update has been parsed and embedded media is available for it now. thepayloadcontains aliveupdate_idand list ofembedsto add to it.complete- the thread has been marked complete. no further updates will be sent.
See /r/live for more information.
GET /api/live/by_id/namesread
Get a listing of live events by id.
| names | A comma-separated list of ids |
|---|
POST /api/live/createsubmit
Create a new live thread.
Once created, the initial settings can be modified with /api/live/thread/edit and new updates can be posted with /api/live/thread/update.
| api_type | the string |
|---|---|
| description | raw markdown text |
| nsfw | boolean value |
| resources | raw markdown text |
| title | a string no longer than 120 characters |
| uh / X-Modhash header | a modhash |
GET /api/live/happening_nowread
Get some basic information about the currently featured live thread.
Returns an empty 204 response for api requests if no thread is currently featured.
See also: /api/live/thread/about.
POST /api/live/thread/accept_contributor_invitelivemanage
Accept a pending invitation to contribute to the thread.
See also: /api/live/thread/leave_contributor.
| api_type | the string |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/live/thread/close_threadlivemanage
Permanently close the thread, disallowing future updates.
Requires the close permission for this thread.
| api_type | the string |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/live/thread/delete_updateedit
Delete an update from the thread.
Requires that specified update must have been authored by the user or
that you have the edit permission for this thread.
See also: /api/live/thread/update.
| api_type | the string |
|---|---|
| id | the ID of a single update. e.g. |
| uh / X-Modhash header | a modhash |
POST /api/live/thread/editlivemanage
Configure the thread.
Requires the settings permission for this thread.
See also: /live/thread/about.json.
| api_type | the string |
|---|---|
| description | raw markdown text |
| nsfw | boolean value |
| resources | raw markdown text |
| title | a string no longer than 120 characters |
| uh / X-Modhash header | a modhash |
POST /api/live/thread/invite_contributorlivemanage
Invite another user to contribute to the thread.
Requires the manage permission for this thread. If the recipient
accepts the invite, they will be granted the permissions specified.
See also: /api/live/thread/accept_contributor_invite, and /api/live/thread/rm_contributor_invite.
| api_type | the string |
|---|---|
| name | the name of an existing user |
| permissions | permission description e.g. |
| type | one of ( |
| uh / X-Modhash header | a modhash |
POST /api/live/thread/leave_contributorlivemanage
Abdicate contributorship of the thread.
See also: /api/live/thread/accept_contributor_invite, and /api/live/thread/invite_contributor.
| api_type | the string |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/live/thread/reportreport
Report the thread for violating the rules of reddit.
| api_type | the string |
|---|---|
| type | one of ( |
| uh / X-Modhash header | a modhash |
POST /api/live/thread/rm_contributorlivemanage
Revoke another user's contributorship.
Requires the manage permission for this thread.
See also: /api/live/thread/invite_contributor.
| api_type | the string |
|---|---|
| id | fullname of a account |
| uh / X-Modhash header | a modhash |
POST /api/live/thread/rm_contributor_invitelivemanage
Revoke an outstanding contributor invite.
Requires the manage permission for this thread.
See also: /api/live/thread/invite_contributor.
| api_type | the string |
|---|---|
| id | fullname of a account |
| uh / X-Modhash header | a modhash |
POST /api/live/thread/set_contributor_permissionslivemanage
Change a contributor or contributor invite's permissions.
Requires the manage permission for this thread.
See also: /api/live/thread/invite_contributor and /api/live/thread/rm_contributor.
| api_type | the string |
|---|---|
| name | the name of an existing user |
| permissions | permission description e.g. |
| type | one of ( |
| uh / X-Modhash header | a modhash |
POST /api/live/thread/strike_updateedit
Strike (mark incorrect and cross out) the content of an update.
Requires that specified update must have been authored by the user or
that you have the edit permission for this thread.
See also: /api/live/thread/update.
| api_type | the string |
|---|---|
| id | the ID of a single update. e.g. |
| uh / X-Modhash header | a modhash |
POST /api/live/thread/updatesubmit
Post an update to the thread.
Requires the update permission for this thread.
See also: /api/live/thread/strike_update, and /api/live/thread/delete_update.
| api_type | the string |
|---|---|
| body | raw markdown text |
| uh / X-Modhash header | a modhash |
GET /live/threadreadrss support
Get a list of updates posted in this thread.
See also: /api/live/thread/update.
This endpoint is a listing.
| after | the ID of a single update. e.g. |
|---|---|
| before | the ID of a single update. e.g. |
| count | a positive integer (default: 0) |
| is_embed | (internal use only) |
| limit | the maximum number of items desired (default: 25, maximum: 100) |
| stylesr | subreddit name |
GET /live/thread/aboutread
Get some basic information about the live thread.
See also: /api/live/thread/edit.
GET /live/thread/contributorsread
Get a list of users that contribute to this thread.
See also: /api/live/thread/invite_contributor, and /api/live/thread/rm_contributor.
GET /live/thread/discussionsreadrss support
Get a list of reddit submissions linking to this thread.
This endpoint is a listing.
| after | fullname of a thing |
|---|---|
| before | fullname of a thing |
| count | a positive integer (default: 0) |
| limit | the maximum number of items desired (default: 25, maximum: 100) |
| show | (optional) the string |
| sr_detail | (optional) expand subreddits |
private messages
POST /api/blockprivatemessages
POST /api/collapse_message
Collapse a message
See also: /api/uncollapse_message
| id | A comma-separated list of thing fullnames |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/composeprivatemessages
Handles message composition under /message/compose.
| api_type | the string |
|---|---|
| from_sr | subreddit name |
| g-recaptcha-response | |
| subject | a string no longer than 100 characters |
| text | raw markdown text |
| to | the name of an existing user |
| uh / X-Modhash header | a modhash |
POST /api/del_msgprivatemessages
POST /api/read_all_messagesprivatemessages
Queue up marking all messages for a user as read.
This may take some time, and returns 202 to acknowledge acceptance of the request.
| uh / X-Modhash header | a modhash |
|---|
POST /api/read_messageprivatemessages
POST /api/unblock_subredditprivatemessages
POST /api/uncollapse_message
Uncollapse a message
See also: /api/collapse_message
| id | A comma-separated list of thing fullnames |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/unread_messageprivatemessages
GET /message/whereprivatemessagesrss support
- → /message/inbox
- → /message/unread
- → /message/sent
misc
GET /api/v1/scopesany
Retrieve descriptions of reddit's OAuth2 scopes.
If no scopes are given, information on all scopes are returned.
Invalid scope(s) will result in a 400 error with body that indicates the invalid scope(s).
| scopes | (optional) An OAuth2 scope string |
|---|
moderation
GET [/r/subreddit]/about/logmodlogrss support
Get a list of recent moderation actions.
Moderator actions taken within a subreddit are logged. This listing is a view of that log with various filters to aid in analyzing the information.
The optional mod parameter can be a comma-delimited list of moderator
names to restrict the results to, or the string a to restrict the
results to admin actions taken within the subreddit.
The type parameter is optional and if sent limits the log entries
returned to only those of the type specified.
This endpoint is a listing.
| after | fullname of a thing |
|---|---|
| before | fullname of a thing |
| count | a positive integer (default: 0) |
| limit | the maximum number of items desired (default: 25, maximum: 500) |
| mod | (optional) a moderator filter |
| show | (optional) the string |
| sr_detail | (optional) expand subreddits |
| type | one of ( |
GET [/r/subreddit]/about/locationread
- → [/r/subreddit]/about/reports
- → [/r/subreddit]/about/spam
- → [/r/subreddit]/about/modqueue
- → [/r/subreddit]/about/unmoderated
- → [/r/subreddit]/about/edited
Return a listing of posts relevant to moderators.
- reports: Things that have been reported.
- spam: Things that have been marked as spam or otherwise removed.
- modqueue: Things requiring moderator review, such as reported things and items caught by the spam filter.
- unmoderated: Things that have yet to be approved/removed by a mod.
- edited: Things that have been edited recently.
Requires the "posts" moderator permission for the subreddit.
This endpoint is a listing.
| after | fullname of a thing |
|---|---|
| before | fullname of a thing |
| count | a positive integer (default: 0) |
| limit | the maximum number of items desired (default: 25, maximum: 100) |
| location | |
| only | one of ( |
| show | (optional) the string |
| sr_detail | (optional) expand subreddits |
POST [/r/subreddit]/api/accept_moderator_invitemodself
Accept an invite to moderate the specified subreddit.
The authenticated user must have been invited to moderate the subreddit by one of its current moderators.
See also: /api/friend and /subreddits/mine.
| api_type | the string |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/approvemodposts
Approve a link or comment.
If the thing was removed, it will be re-inserted into appropriate listings. Any reports on the approved thing will be discarded.
See also: /api/remove.
| id | fullname of a thing |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/distinguishmodposts
Distinguish a thing's author with a sigil.
This can be useful to draw attention to and confirm the identity of the user in the context of a link or comment of theirs. The options for distinguish are as follows:
yes- add a moderator distinguish ([M]). only if the user is a moderator of the subreddit the thing is in.no- remove any distinguishes.admin- add an admin distinguish ([A]). admin accounts only.special- add a user-specific distinguish. depends on user.
The first time a top-level comment is moderator distinguished, the author of the link the comment is in reply to will get a notification in their inbox.
| api_type | the string |
|---|---|
| how | one of ( |
| id | fullname of a thing |
| uh / X-Modhash header | a modhash |
POST /api/ignore_reportsmodposts
Prevent future reports on a thing from causing notifications.
Any reports made about a thing after this flag is set on it will not cause notifications or make the thing show up in the various moderation listings.
See also: /api/unignore_reports.
| id | fullname of a thing |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/leavecontributormodself
Abdicate approved submitter status in a subreddit.
See also: /api/friend.
| id | fullname of a thing |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/leavemoderatormodself
Abdicate moderator status in a subreddit.
See also: /api/friend.
| id | fullname of a thing |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/mute_message_authormodcontributors
POST /api/removemodposts
Remove a link, comment, or modmail message.
If the thing is a link, it will be removed from all subreddit listings. If the thing is a comment, it will be redacted and removed from all subreddit comment listings.
See also: /api/approve.
| id | fullname of a thing |
|---|---|
| spam | boolean value |
| uh / X-Modhash header | a modhash |
POST /api/unignore_reportsmodposts
Allow future reports on a thing to cause notifications.
See also: /api/ignore_reports.
| id | fullname of a thing |
|---|---|
| uh / X-Modhash header | a modhash |
POST /api/unmute_message_authormodcontributors
GET [/r/subreddit]/stylesheetmodconfig
Redirect to the subreddit's stylesheet if one exists.
See also: /api/subreddit_stylesheet.
new modmail
POST /api/mod/bulk_readmodmail
Marks all conversations read for a particular conversation state within the passed list of subreddits.
| entity | comma-delimited list of subreddit names |
|---|---|
| state | one of ( |
GET /api/mod/conversationsmodmail
Get conversations for a logged in user or subreddits
| after | base36 modmail conversation id |
|---|---|
| entity | comma-delimited list of subreddit names |
| limit | an integer (default: 25) |
| sort | one of ( |
| state | one of ( |
POST /api/mod/conversationsmodmail
Creates a new conversation for a particular SR
This endpoint will create a ModmailConversation object as well as the first ModmailMessage within the ModmailConversation object.
| body | raw markdown text |
|---|---|
| isAuthorHidden | boolean value |
| srName | subreddit name |
| subject | a string no longer than 100 characters |
| to | Modmail conversation recipient fullname |
GET /api/mod/conversations/:conversation_idmodmail
Returns all messages, mod actions and conversation metadata for a given conversation id
| conversation_id | base36 modmail conversation id |
|---|---|
| markRead | boolean value |
POST /api/mod/conversations/:conversation_idmodmail
Creates a new message for a particular conversation
| body | raw markdown text |
|---|---|
| conversation_id | base36 modmail conversation id |
| isAuthorHidden | boolean value |
| isInternal | boolean value |
POST /api/mod/conversations/:conversation_id/archivemodmail
Marks a conversation as archived.
| conversation_id | base36 modmail conversation id |
|---|
DELETE /api/mod/conversations/:conversation_id/highlightmodmail
Removes a highlight from a conversation.
| conversation_id | base36 modmail conversation id |
|---|
POST /api/mod/conversations/:conversation_id/highlightmodmail
Marks a conversation as highlighted.
| conversation_id | base36 modmail conversation id |
|---|
POST /api/mod/conversations/:conversation_id/mutemodmail
Mutes the non mod user associated with a particular conversation.
| conversation_id | base36 modmail conversation id |
|---|
POST /api/mod/conversations/:conversation_id/unarchivemodmail
Marks conversation as unarchived.
| conversation_id | base36 modmail conversation id |
|---|
POST /api/mod/conversations/:conversation_id/unmutemodmail
Unmutes the non mod user associated with a particular conversation.
| conversation_id | base36 modmail conversation id |
|---|
GET /api/mod/conversations/:conversation_id/usermodmail
Returns recent posts, comments and modmail conversations for a given user.
| conversation_id | base36 modmail conversation id |
|---|
POST /api/mod/conversations/readmodmail
Marks a conversations as read for the user.
| conversationIds | A comma-separated list of items |
|---|
GET /api/mod/conversations/subredditsmodmail
Returns a list of srs that the user moderates that are also enrolled in the new modmail
POST /api/mod/conversations/unreadmodmail
Marks conversations as unread for the user.
| conversationIds | A comma-separated list of items |
|---|
GET /api/mod/conversations/unread/countmodmail
Endpoint to retrieve the unread conversation count by conversation state.
multis
POST /api/multi/copysubscribe
Copy a multi.
Responds with 409 Conflict if the target already exists.
A "copied from ..." line will automatically be appended to the description.
| display_name | a string no longer than 50 characters |
|---|---|
| from | multireddit url path |
| to | destination multireddit url path |
| uh / X-Modhash header | a modhash |
GET /api/multi/mineread
Fetch a list of multis belonging to the current user.
| expand_srs | boolean value |
|---|
POST /api/multi/renamesubscribe
Rename a multi.
| display_name | a string no longer than 50 characters |
|---|---|
| from | multireddit url path |
| to | destination multireddit url path |
| uh / X-Modhash header | a modhash |
GET /api/multi/user/usernameread
Fetch a list of public multis belonging to username
| expand_srs | boolean value |
|---|---|
| username | A valid, existing reddit username |
DELETE /api/multi/multipathsubscribe
- → /api/filter/filterpath
Delete a multi.
| multipath | multireddit url path |
|---|---|
| uh / X-Modhash header | a modhash |
| expand_srs | boolean value |
GET /api/multi/multipathread
- → /api/filter/filterpath
Fetch a multi's data and subreddit list by name.
| expand_srs | boolean value |
|---|---|
| multipath | multireddit url path |
POST /api/multi/multipathsubscribe
- → /api/filter/filterpath
Create a multi. Responds with 409 Conflict if it already exists.
| model | json data:
|
|---|---|
| multipath | multireddit url path |
| uh / X-Modhash header | a modhash |
| expand_srs | boolean value |
PUT /api/multi/multipathsubscribe
- → /api/filter/filterpath
Create or update a multi.
| model | json data:
|
|---|---|
| multipath | multireddit url path |
| uh / X-Modhash header | a modhash |
| expand_srs | boolean value |
GET /api/multi/multipath/descriptionread
Get a multi's description.
| multipath | multireddit url path |
|---|
PUT /api/multi/multipath/descriptionread
Change a multi's markdown description.
| model | json data:
|
|---|---|
| multipath | multireddit url path |
| uh / X-Modhash header | a modhash |
DELETE /api/multi/multipath/r/srnamesubscribe
- → /api/filter/filterpath/r/srname
Remove a subreddit from a multi.
| multipath | multireddit url path |
|---|---|
| srname | subreddit name |
| uh / X-Modhash header | a modhash |
GET /api/multi/multipath/r/srnameread
- → /api/filter/filterpath/r/srname
Get data about a subreddit in a multi.
| multipath | multireddit url path |
|---|---|
| srname | subreddit name |
PUT /api/multi/multipath/r/srnamesubscribe
- → /api/filter/filterpath/r/srname
Add a subreddit to a multi.
| model | json data:
|
|---|---|
| multipath | multireddit url path |
| srname | subreddit name |
| uh / X-Modhash header | a modhash |
search
GET [/r/subreddit]/searchreadrss support
Search links page.
This endpoint is a listing.
| after | fullname of a thing |
|---|---|
| before | fullname of a thing |
| count | a positive integer (default: 0) |
| include_facets | boolean value |
| limit | the maximum number of items desired (default: 25, maximum: 100) |
| q | a string no longer than 512 characters |
| restrict_sr | boolean value |
| show | (optional) the string |
| sort | one of ( |
| sr_detail | (optional) expand subreddits |
| syntax | one of ( |
| t | one of ( |
| type | (optional) comma-delimited list of result types ( |
subreddits
GET [/r/subreddit]/about/wherereadrss support
- → [/r/subreddit]/about/banned
- → [/r/subreddit]/about/muted
- → [/r/subreddit]/about/wikibanned
- → [/r/subreddit]/about/contributors
- → [/r/subreddit]/about/wikicontributors
- → [/r/subreddit]/about/moderators
POST [/r/subreddit]/api/delete_sr_bannermodconfig
Remove the subreddit's custom mobile banner.
See also: /api/upload_sr_img.
| api_type | the string |
|---|---|
| uh / X-Modhash header | a modhash |
POST [/r/subreddit]/api/delete_sr_headermodconfig
Remove the subreddit's custom header image.
The sitewide-default header image will be shown again after this call.
See also: /api/upload_sr_img.
| api_type | the string |
|---|---|
| uh / X-Modhash header | a modhash |
POST [/r/subreddit]/api/delete_sr_iconmodconfig
Remove the subreddit's custom mobile icon.
See also: /api/upload_sr_img.
| api_type | the string |
|---|---|
| uh / X-Modhash header | a modhash |
POST [/r/subreddit]/api/delete_sr_imgmodconfig
Remove an image from the subreddit's custom image set.
The image will no longer count against the subreddit's image limit. However, the actual image data may still be accessible for an unspecified amount of time. If the image is currently referenced by the subreddit's stylesheet, that stylesheet will no longer validate and won't be editable until the image reference is removed.
See also: /api/upload_sr_img.
| api_type | the string |
|---|---|
| img_name | a valid subreddit image name |
| uh / X-Modhash header | a modhash |
GET /api/recommend/sr/srnamesread
Return subreddits recommended for the given subreddit(s).
Gets a list of subreddits recommended for srnames, filtering out any
that appear in the optional omit param.
| omit | comma-delimited list of subreddit names |
|---|---|
| over_18 | boolean value |
| srnames | comma-delimited list of subreddit names |
POST /api/search_reddit_namesread
List subreddit names that begin with a query string.
Subreddits whose names begin with query will be returned. If
include_over_18 is false, subreddits with over-18 content
restrictions will be filtered from the results.
If include_unadvertisable is False, subreddits that have hide_ads
set to True or are on the anti_ads_subreddits list will be filtered.
If exact is true, only an exact match will be returned. Exact matches
are inclusive of over_18 subreddits, but not hide_ad subreddits
when include_unadvertisable is False.
| exact | boolean value |
|---|---|
| include_over_18 | boolean value |
| include_unadvertisable | boolean value |
| query | a string up to 50 characters long, consisting of printable characters. |
POST /api/search_subredditsread
List subreddits that begin with a query string.
Subreddits whose names begin with query will be returned. If
include_over_18 is false, subreddits with over-18 content
restrictions will be filtered from the results.
If include_unadvertisable is False, subreddits that have hide_ads
set to True or are on the anti_ads_subreddits list will be filtered.
If exact is true, only an exact match will be returned. Exact matches
are inclusive of over_18 subreddits, but not hide_ad subreddits
when include_unadvertisable is False.
| exact | boolean value |
|---|---|
| include_over_18 | boolean value |
| include_unadvertisable | boolean value |
| query | a string up to 50 characters long, consisting of printable characters. |
POST /api/site_adminmodconfig
Create or configure a subreddit.
If sr is specified, the request will attempt to modify the specified
subreddit. If not, a subreddit with name name will be created.
This endpoint expects all values to be supplied on every request. If modifying a subset of options, it may be useful to get the current settings from /about/edit.json first.
For backwards compatibility, description is the sidebar text and
public_description is the publicly visible subreddit description.
Most of the parameters for this endpoint are identical to options visible in the user interface and their meanings are best explained there.
See also: /about/edit.json.
| allow_discovery | boolean value |
|---|---|
| allow_images | boolean value |
| allow_top | boolean value |
| allow_videos | boolean value |
| api_type | the string |
| collapse_deleted_comments | boolean value |
| comment_score_hide_mins | an integer between 0 and 1440 (default: 0) |
| description | raw markdown text |
| exclude_banned_modqueue | boolean value |
| free_form_reports | boolean value |
| g-recaptcha-response | |
| header-title | a string no longer than 500 characters |
| hide_ads | boolean value |
| lang | a valid IETF language tag (underscore separated) |
| link_type | one of ( |
| name | subreddit name |
| over_18 | boolean value |
| public_description | raw markdown text |
| show_media | boolean value |
| show_media_preview | boolean value |
| spam_comments | one of ( |
| spam_links | one of ( |
| spam_selfposts | one of ( |
| spoilers_enabled | boolean value |
| sr | fullname of a thing |
| submit_link_label | a string no longer than 60 characters |
| submit_text | raw markdown text |
| submit_text_label | a string no longer than 60 characters |
| suggested_comment_sort | one of ( |
| theme_sr | subreddit name |
| theme_sr_update | boolean value |
| title | a string no longer than 100 characters |
| type | one of ( |
| uh / X-Modhash header | a modhash |
| wiki_edit_age | an integer greater than 0 (default: 0) |
| wiki_edit_karma | an integer greater than 0 (default: 0) |
| wikimode | one of ( |
GET [/r/subreddit]/api/submit_textsubmit
Get the submission text for the subreddit.
This text is set by the subreddit moderators and intended to be displayed on the submission form.
See also: /api/site_admin.
POST [/r/subreddit]/api/subreddit_stylesheetmodconfig
Update a subreddit's stylesheet.
op should be save to update the contents of the stylesheet.
| api_type | the string |
|---|---|
| op | one of ( |
| reason | a string up to 256 characters long, consisting of printable characters. |
| stylesheet_contents | the new stylesheet content |
| uh / X-Modhash header | a modhash |
GET /api/subreddits_by_topicread
Return a list of subreddits that are relevant to a search query.
| query | a string no longer than 50 characters |
|---|
POST /api/subscribesubscribe
Subscribe to or unsubscribe from a subreddit.
To subscribe, action should be sub. To unsubscribe, action should
be unsub. The user must have access to the subreddit to be able to
subscribe to it.
The skip_initial_defaults param can be set to True to prevent
automatically subscribing the user to the current set of defaults
when they take their first subscription action. Attempting to set it
for an unsubscribe action will result in an error.
See also: /subreddits/mine/.
| action | one of ( |
|---|---|
| skip_initial_defaults | boolean value |
| source | |
| sr / sr_name | A comma-separated list of subreddit fullnames (when using the "sr" parameter), or of subreddit names (when using the "sr_name" parameter). |
| uh / X-Modhash header | a modhash |
POST [/r/subreddit]/api/upload_sr_imgmodconfig
Add or replace a subreddit image, custom header logo, custom mobile icon, or custom mobile banner.
- If the
upload_typevalue isimg, an image for use in the subreddit stylesheet is uploaded with the name specified inname. - If the
upload_typevalue isheaderthen the image uploaded will be the subreddit's new logo andnamewill be ignored. - If the
upload_typevalue isiconthen the image uploaded will be the subreddit's new mobile icon andnamewill be ignored. - If the
upload_typevalue isbannerthen the image uploaded will be the subreddit's new mobile banner andnamewill be ignored.
For backwards compatibility, if upload_type is not specified, the
header field will be used instead:
- If the
headerfield has value0, thenupload_typeisimg. - If the
headerfield has value1, thenupload_typeisheader.
The img_type field specifies whether to store the uploaded image as a
PNG or JPEG.
Subreddits have a limited number of images that can be in use at any given time. If no image with the specified name already exists, one of the slots will be consumed.
If an image with the specified name already exists, it will be replaced. This does not affect the stylesheet immediately, but will take effect the next time the stylesheet is saved.
See also: /api/delete_sr_img, /api/delete_sr_header, /api/delete_sr_icon, and /api/delete_sr_banner.
| file | file upload with maximum size of 500 KiB |
|---|---|
| formid | (optional) can be ignored |
| header | an integer between 0 and 1 |
| img_type | one of |
| name | a valid subreddit image name |
| uh / X-Modhash header | a modhash |
| upload_type | one of ( |
GET /r/subreddit/aboutread
Return information about the subreddit.
Data includes the subscriber count, description, and header image.
GET /r/subreddit/about/editmodconfig
Get the current settings of a subreddit.
In the API, this returns the current settings of the subreddit as used by /api/site_admin. On the HTML site, it will display a form for editing the subreddit.
| created | one of ( |
|---|---|
| location |
GET [/r/subreddit]/stickyread
Redirect to one of the posts stickied in the current subreddit
The "num" argument can be used to select a specific sticky, and will default to 1 (the top sticky) if not specified. Will 404 if there is not currently a sticky post in this subreddit.
| num | an integer between 1 and 2 (default: 1) |
|---|
GET /subreddits/mine/wheremysubredditsrss support
- → /subreddits/mine/subscriber
- → /subreddits/mine/contributor
- → /subreddits/mine/moderator
Get subreddits the user has a relationship with.
The where parameter chooses which subreddits are returned as follows:
subscriber- subreddits the user is subscribed tocontributor- subreddits the user is an approved submitter inmoderator- subreddits the user is a moderator of
See also: /api/subscribe, /api/friend, and /api/accept_moderator_invite.
This endpoint is a listing.
| after | fullname of a thing |
|---|---|
| before | fullname of a thing |
| count | a positive integer (default: 0) |
| limit | the maximum number of items desired (default: 25, maximum: 100) |
| show | (optional) the string |
| sr_detail | (optional) expand subreddits |
GET /subreddits/searchreadrss support
Search subreddits by title and description.
This endpoint is a listing.
| after | fullname of a thing |
|---|---|
| before | fullname of a thing |
| count | a positive integer (default: 0) |
| limit | the maximum number of items desired (default: 25, maximum: 100) |
| q | a search query |
| show | (optional) the string |
| sort | one of ( |
| sr_detail | (optional) expand subreddits |
GET /subreddits/wherereadrss support
- → /subreddits/popular
- → /subreddits/new
- → /subreddits/gold
- → /subreddits/default
Get all subreddits.
The where parameter chooses the order in which the subreddits are
displayed. popular sorts on the activity of the subreddit and the
position of the subreddits can shift around. new sorts the subreddits
based on their creation date, newest first.
This endpoint is a listing.
| after | fullname of a thing |
|---|---|
| before | fullname of a thing |
| count | a positive integer (default: 0) |
| limit | the maximum number of items desired (default: 25, maximum: 100) |
| show | (optional) the string |
| sr_detail | (optional) expand subreddits |
GET /users/wherereadrss support
- → /users/popular
- → /users/new
Get all user subreddits.
The where parameter chooses the order in which the subreddits are
displayed. popular sorts on the activity of the subreddit and the
position of the subreddits can shift around. new sorts the user
subreddits based on their creation date, newest first.
This endpoint is a listing.
| after | fullname of a thing |
|---|---|
| before | fullname of a thing |
| count | a positive integer (default: 0) |
| limit | the maximum number of items desired (default: 25, maximum: 100) |
| show | (optional) the string |
| sr_detail | (optional) expand subreddits |
users
POST [/r/subreddit]/api/friendany
Create a relationship between a user and another user or subreddit
OAuth2 use requires appropriate scope based on the 'type' of the relationship:
- moderator: Use "moderator_invite"
- moderator_invite:
modothers - contributor:
modcontributors - banned:
modcontributors - muted:
modcontributors - wikibanned:
modcontributorsandmodwiki - wikicontributor:
modcontributorsandmodwiki - friend: Use /api/v1/me/friends/{username}
- enemy: Use /api/block
Complement to POST_unfriend
| api_type | the string |
|---|---|
| ban_message | raw markdown text |
| ban_reason | a string no longer than 100 characters |
| container | |
| duration | an integer between 1 and 999 |
| name | the name of an existing user |
| note | a string no longer than 300 characters |
| permissions | |
| type | one of ( |
| uh / X-Modhash header | a modhash |
POST /api/report_userreport
Report a user. Reporting a user brings it to the attention of a Reddit admin.
| reason | a string no longer than 100 characters |
|---|---|
| ('user',) | A valid, existing reddit username |
POST [/r/subreddit]/api/setpermissionsmodothers
| api_type | the string |
|---|---|
| name | the name of an existing user |
| permissions | |
| type | |
| uh / X-Modhash header | a modhash |
POST [/r/subreddit]/api/unfriendany
Remove a relationship between a user and another user or subreddit
The user can either be passed in by name (nuser) or by fullname (iuser). If type is friend or enemy, 'container' MUST be the current user's fullname; for other types, the subreddit must be set via URL (e.g., /r/funny/api/unfriend)
OAuth2 use requires appropriate scope based on the 'type' of the relationship:
- moderator:
modothers - moderator_invite:
modothers - contributor:
modcontributors - banned:
modcontributors - muted:
modcontributors - wikibanned:
modcontributorsandmodwiki - wikicontributor:
modcontributorsandmodwiki - friend: Use /api/v1/me/friends/{username}
- enemy:
privatemessages
Complement to POST_friend
| container | |
|---|---|
| id | fullname of a thing |
| name | the name of an existing user |
| type | one of ( |
| uh / X-Modhash header | a modhash |
GET /api/username_availableany
Check whether a username is available for registration.
| user | a valid, unused, username |
|---|
DELETE /api/v1/me/friends/usernamesubscribe
Stop being friends with a user.
| id | A valid, existing reddit username |
|---|
GET /api/v1/me/friends/usernamemysubreddits
Get information about a specific 'friend', such as notes.
| id | A valid, existing reddit username |
|---|
PUT /api/v1/me/friends/usernamesubscribe
Create or update a "friend" relationship.
This operation is idempotent. It can be used to add a new friend, or update an existing friend (e.g., add/change the note on that friend)
| This endpoint expects JSON data of this format |
|
|---|
GET /api/v1/user/username/trophiesread
Return a list of trophies for the a given user.
| id | A valid, existing reddit username |
|---|
GET /user/username/aboutread
Return information about the user, including karma and gold status.
| username | the name of an existing user |
|---|
GET /user/username/wherehistoryrss support
- → /user/username/overview
- → /user/username/submitted
- → /user/username/comments
- → /user/username/upvoted
- → /user/username/downvoted
- → /user/username/saved
- → /user/username/gilded
This endpoint is a listing.
| show | one of ( |
|---|---|
| sort | one of ( |
| t | one of ( |
| type | one of ( |
| username | the name of an existing user |
| after | fullname of a thing |
| before | fullname of a thing |
| count | a positive integer (default: 0) |
| limit | the maximum number of items desired (default: 25, maximum: 100) |
| sr_detail | (optional) expand subreddits |
wiki
POST [/r/subreddit]/api/wiki/alloweditor/actmodwiki
- → [/r/subreddit]/api/wiki/alloweditor/del
- → [/r/subreddit]/api/wiki/alloweditor/add
Allow/deny username to edit this wiki page
| act | one of ( |
|---|---|
| page | the name of an existing wiki page |
| uh / X-Modhash header | a modhash |
| username | the name of an existing user |
POST [/r/subreddit]/api/wiki/editwikiedit
Edit a wiki page
| content | |
|---|---|
| page | the name of an existing page or a new page to create |
| previous | the starting point revision for this edit |
| reason | a string up to 256 characters long, consisting of printable characters. |
| uh / X-Modhash header | a modhash |
POST [/r/subreddit]/api/wiki/hidemodwiki
Toggle the public visibility of a wiki page revision
| page | the name of an existing wiki page |
|---|---|
| revision | a wiki revision ID |
| uh / X-Modhash header | a modhash |
POST [/r/subreddit]/api/wiki/revertmodwiki
Revert a wiki page to revision
| page | the name of an existing wiki page |
|---|---|
| revision | a wiki revision ID |
| uh / X-Modhash header | a modhash |
GET [/r/subreddit]/wiki/discussions/pagewikiread
Retrieve a list of discussions about this wiki page
This endpoint is a listing.
| after | fullname of a thing |
|---|---|
| before | fullname of a thing |
| count | a positive integer (default: 0) |
| limit | the maximum number of items desired (default: 25, maximum: 100) |
| page | the name of an existing wiki page |
| show | (optional) the string |
| sr_detail | (optional) expand subreddits |
GET [/r/subreddit]/wiki/revisionswikiread
GET [/r/subreddit]/wiki/revisions/pagewikiread
Retrieve a list of revisions of this wiki page
This endpoint is a listing.
| after | fullname of a thing |
|---|---|
| before | fullname of a thing |
| count | a positive integer (default: 0) |
| limit | the maximum number of items desired (default: 25, maximum: 100) |
| page | the name of an existing wiki page |
| show | (optional) the string |
| sr_detail | (optional) expand subreddits |
GET [/r/subreddit]/wiki/settings/pagemodwiki
Retrieve the current permission settings for page
| page | the name of an existing wiki page |
|---|