Stack Exchange API

Stack Exchange API v2.3

This is the documentation for the v2.3 Stack Exchange API (with both authentication and write support). If you have additional questions, or believe you have encountered a bug, don't hesitate to post a question on Stack Apps.

If your application is in a runnable state (even a beta one), Stack Apps is also the place to list it.

General

Applications should be registered on Stack Apps to get a request key. Request keys grant more requests per day, and are necessary for using access_tokens created via authentication.

All API responses are JSON, we do support JSONP with the callback query parameter. Every response in the API is returned in a common "wrapper" object, for easier and more consistent parsing.

Additionally, all API responses are compressed. The Content-Encoding header is always set, but some proxies will strip this out. The proper way to decode API responses can be found here.

API usage is subject to a number of throttles. In general, applications should strive to make as few requests as possible to satisfy their function.

API responses are heavily cached. Polling for changes should be done sparingly in any case, and polling at a rate faster than once a minute (for semantically identical requests) is considered abusive.

Developers can trim API responses down to just the fields they are interested in using custom filters. Many types have fields that are not normally returned (question bodies, for example) that can likewise be requested via a custom filter.

There are a few methods which require that the application be acting on behalf of a user in order to be invoked. For authentication purposes, the Stack Exchange API implements OAuth 2.0 (templated on Facebook's implementation in pursuit of developer familiarity).

A number of methods in the Stack Exchange accept dates as parameters and return dates as properties, the format of these dates is consistent and documented. The cliff-notes version is, all dates in the Stack Exchange API are in unix epoch time.

Unless otherwise noted, the maximum size of any page is 100, any {ids} parameter likewise is capped at 100 elements, all indexes start at 1.

The maximum page number that will be returned for anonymous API access (no access token or app key) is 25

If a parameter name is plural it accepts vectorized requests, otherwise a single value may be passed. Compare users/{id}/inbox and /users/{ids}.

It is possible to compose reasonably complex queries against the live Stack Exchange sites using the min, max, fromdate, todate, and sort parameters. Most, but not all, methods accept some or all of these parameters, the documentation for individual methods will highlight which do. Most methods also have a common set of paging parameters.

Some methods require access_tokens with particular scopes, such as private_info (/users/{id}/reputation-history/full for example) or write_access (/questions/add). Certain fields require access_tokens with the private_info scope, such as answer.upvoted; the documentation for each time makes note of these fields.

Per-Site Methods

Each of these methods operates on a single site at a time, identified by the site parameter. This parameter can be the full domain name (ie. "stackoverflow.com"), or a short form identified by api_site_parameter on the site object.

Answers

Get all answers on the site.

Get answers identified by a set of ids.

Casts an accept vote on the given answer. auth required

Undoes an accept vote on the given answer. auth required

Get comments on the answers identified by a set of ids.

Deletes the given answer. auth required

Casts a downvote on the given answer. auth required

Undoes a downvote on the given answer. auth required

Edits the given answer. auth required

Returns valid flag options for the given answer. auth required

Casts a flag on the given answer. auth required

Gets all questions the answers identified by ids are on.

Casts an upvote on the given answer. auth required

Undoes an upvote on the given answer. auth required

Casts a recommendation on the given answer. auth required

Undoes an recommendation on the given answer. auth required

Creates a suggested edit on an existing answer. auth required

Badges

Get all badges on the site, in alphabetical order.

Get the badges identified by ids.

Get all non-tagged-based badges in alphabetical order.

Get badges recently awarded on the site.

Get the recent recipients of the given badges.

Get all tagged-based badges in alphabetical order.

Collectives

Get all Collectives on the site, in alphabetical order.

Get Collectives identified by a set of slugs.

Get questions identified by a set of slugs.

Get answers identified by a set of slugs.

Get tags identified by a set of slugs.

Get users identified by a set of slugs.

Get reports identified by a set of slugs. auth required

Creates a new report request for the Collective auth required

Comments

Get all comments on the site.

Get comments identified by a set of ids.

Delete a comment identified by its id. auth required

Edit a comment identified by its id. auth required

Casts a flag on the given comment. auth required

Returns valid flag options for the given comment. auth required

Casts an upvote on the given comment. auth required

Undoes an upvote on the given comment. auth required

Events

Get recent events that have occurred on the site. Effectively a stream of new users and content. auth required

Info

Get information about the entire site.

Posts

Get all posts (questions and answers) in the system.

Get all posts identified by a set of ids. Useful for when the type of post (question or answer) is not known.

Get comments on the posts (question or answer) identified by a set of ids.

Create a new comment on the post identified by id. auth required

Renders a hypothetical comment on the given post.

Get revisions on the set of posts in ids.

Get suggested edits on the set of posts in ids.

Privileges

Get all the privileges available on the site.

Questions

Get all questions on the site.

Get the questions identified by a set of ids.

Get the answers to the questions identified by a set of ids.

Creates an answer on the given question. auth required

Renders a hypothetical answer to a question.

Returns valid flag options which are also close reasons for the given question. auth required

Get the comments on the questions identified by a set of ids.

Deletes the given question. auth required

Casts a downvote on the given question. auth required

Undoes a downvote on the given question. auth required

Edits the given question. auth required

Bookmarks the given question. (Previously known as "favoriting" a question) auth required

Undoes bookmarking the given question. (Previously known as "favoriting" a question) auth required

Casts a flag on the given question. auth required

Returns valid flag options for the given question. auth required

Get the questions that link to the questions identified by a set of ids.

Get the questions that are related to the questions identified by a set of ids.

Creates a suggested_edit on an existing question. auth required

Get the timelines of the questions identified by a set of ids.

Casts an upvote on the given question. auth required

Undoes an upvote on the given question. auth required

Creates a new question. auth required

Get all questions on the site with active bounties.

Get all questions on the site with no answers.

Renders a hypothetical question. auth required

Get all questions the site considers unanswered.

Get questions the site considers unanswered within a user's favorite or interesting tags. auth required

Revisions

Get all revisions identified by a set of ids.

Search

Search the site for questions meeting certain criteria.

Search the site for questions using most of the on-site search options.

Search the site based on similarity to a title.

Searches a site.

Suggested Edits

Get all the suggested edits on the site.

Get the suggested edits identified by a set of ids.

Tags

Get the tags on the site.

Get tags on the site by their names.

Get the tags on the site that only moderators can use.

Get the tags on the site that fulfill required tag constraints.

Get all the tag synonyms on the site.

Get frequently asked questions in a set of tags.

Get related tags, based on common tag pairings.

Get the synonyms for a specific set of tags.

Get the top answer posters in a specific tag, either in the last month or for all time.

Get the top question askers in a specific tag, either in the last month or for all time.

Get the wiki entries for a set of tags.

Users

All user methods that take an {ids} parameter have a /me equivalent method that takes an access_token instead. These methods are provided for developer convenience, with the exception of plain /me, which is actually necessary for discovering which user authenticated to an application.

Get all users on the site.

Get the users identified by a set of ids.

Get the answers posted by the users identified by a set of ids.

Get the badges earned by the users identified by a set of ids.

Get the comments posted by the users identified by a set of ids.

Get the comments posted by a set of users in reply to another user.

Get the questions bookmarked (previously known as "favorited") by users identified by a set of ids.

Get the comments that mention one of the users identified by a set of ids.

Gets a user's activity across the Stack Exchange network.

Get a user's notifications.

Get a user's unread notifications.

Get all posts (questions and answers) owned by a set of users.

Get the privileges the given user has on the site.

Get the questions asked by the users identified by a set of ids.

Get the questions on which a set of users, have active bounties.

Get the questions asked by a set of users, which have no answers.

Get the questions asked by a set of users, which have at least one answer but no accepted answer.

Get the questions asked by a set of users, which are not considered to be adequately answered.

Get a subset of the reputation changes experienced by the users identified by a set of ids.

Get a history of a user's reputation, excluding private events.

Get a full history of a user's reputation. auth required

Get the suggested edits provided by users identified by a set of ids.

Get the tags that the users (identified by a set of ids) have been active in.

Get the top answers a user has posted on questions with a set of tags.

Get the top questions a user has posted with a set of tags.

Get a given user's tag preferences. auth required

Edit a user's tag preferences. auth required

Get a subset of the actions of that have been taken by the users identified by a set of ids.

Get the top tags (by score) a single user has posted answers in.

Get the top tags (by score) a single user has asked questions in.

Get the top tags (by score) a single user has posted in.

Get the users who have moderation powers on the site.

Get the users who are active moderators who have also won a moderator election.

Get a user's inbox. auth required

Get the unread items in a user's inbox. auth required

Network Methods

These methods return data across the entire Stack Exchange network of sites. Accordingly, you do not pass a site parameter to them.

Access Tokens

Allows an application to dispose of access_tokens when it is done with them.

Allows an application to inspect access_tokens it has, useful for debugging.

Achievements

Get a user's recent network-wide achievements. auth required

Applications

Allows an application to de-authorize itself for a set of users.

Errors

Get descriptions of all the errors that the API could return.

Simulate an API error for testing purposes.

Filters

Create a new filter.

Decode a set of filters, useful for debugging purposes.

Inbox

Get a user's inbox, outside of the context of a site. auth required

Get the unread items in a user's inbox, outside of the context of a site. auth required

Notifications

Get a user's notifications, outside of the context of a site. auth required

Get a user's unread notifications, outside of the context of a site. auth required

Sites

Get all the sites in the Stack Exchange network.

Users

Get a user's associated accounts.

Get the merges a user's accounts has undergone.