openapi: 3.1.0 info: title: Stack Exchange Answers Questions API description: The Stack Exchange API v2.3 provides programmatic access to the Stack Exchange network of Q&A sites, including Stack Overflow, Server Fault, Super User, and hundreds of other communities. The API supports reading and writing questions, answers, comments, tags, users, and other content. Authentication is via OAuth 2.0 with access tokens. All responses are JSON-encoded and support GZIP compression. version: '2.3' contact: name: Stack Exchange API Support url: http://stackapps.com/ email: team+api@stackexchange.com termsOfService: https://stackexchange.com/legal/api-terms-of-use servers: - url: https://api.stackexchange.com/2.3 description: Stack Exchange API v2.3 security: - oauth2: [] - {} tags: - name: Questions description: Operations for retrieving, searching, and managing questions across the Stack Exchange network. paths: /questions: get: operationId: getQuestions summary: Get All Questions description: Returns the questions on a Stack Exchange site. Results are sorted by activity by default. Requires the site parameter to specify which Stack Exchange site to query. tags: - Questions parameters: - $ref: '#/components/parameters/site' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/pagesize' - $ref: '#/components/parameters/fromdate' - $ref: '#/components/parameters/todate' - $ref: '#/components/parameters/order' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' responses: '200': description: A list of questions content: application/json: schema: $ref: '#/components/schemas/QuestionsResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '502': $ref: '#/components/responses/Throttled' /questions/{ids}: get: operationId: getQuestionsByIds summary: Get Questions by IDs description: Returns the questions identified by a semicolon-delimited list of IDs. Maximum 100 IDs per request. tags: - Questions parameters: - name: ids in: path required: true schema: type: string description: Semicolon-delimited list of question IDs (max 100) example: 1;2;3 - $ref: '#/components/parameters/site' - $ref: '#/components/parameters/filter' responses: '200': description: Questions matching the provided IDs content: application/json: schema: $ref: '#/components/schemas/QuestionsResponse' '400': $ref: '#/components/responses/BadRequest' '502': $ref: '#/components/responses/Throttled' /questions/{ids}/answers: get: operationId: getAnswersForQuestion summary: Get Answers for Questions description: Returns the answers for a set of questions identified by a semicolon-delimited list of IDs. tags: - Questions parameters: - name: ids in: path required: true schema: type: string description: Semicolon-delimited list of question IDs example: '12345' - $ref: '#/components/parameters/site' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/pagesize' - $ref: '#/components/parameters/order' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' responses: '200': description: Answers for the specified questions content: application/json: schema: $ref: '#/components/schemas/AnswersResponse' '400': $ref: '#/components/responses/BadRequest' /questions/{ids}/comments: get: operationId: getCommentsOnQuestions summary: Get Comments on Questions description: Returns the comments on a set of questions identified by a semicolon-delimited list of IDs. tags: - Questions parameters: - name: ids in: path required: true schema: type: string description: Semicolon-delimited list of question IDs - $ref: '#/components/parameters/site' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/pagesize' - $ref: '#/components/parameters/order' - $ref: '#/components/parameters/filter' responses: '200': description: Comments on the specified questions content: application/json: schema: $ref: '#/components/schemas/CommentsResponse' /questions/unanswered: get: operationId: getUnansweredQuestions summary: Get Unanswered Questions description: Returns questions that have no answers. Questions returned by this method technically have at least one answer but none of those answers have been accepted. tags: - Questions parameters: - $ref: '#/components/parameters/site' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/pagesize' - $ref: '#/components/parameters/order' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/tagged' - $ref: '#/components/parameters/filter' responses: '200': description: List of unanswered questions content: application/json: schema: $ref: '#/components/schemas/QuestionsResponse' /questions/featured: get: operationId: getFeaturedQuestions summary: Get Featured Questions description: Returns questions that have active bounties. Questions with bounties are featured to attract attention and answers. tags: - Questions parameters: - $ref: '#/components/parameters/site' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/pagesize' - $ref: '#/components/parameters/order' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/tagged' - $ref: '#/components/parameters/filter' responses: '200': description: List of featured questions with active bounties content: application/json: schema: $ref: '#/components/schemas/QuestionsResponse' /users/{ids}/questions: get: operationId: getQuestionsByUser summary: Get Questions by User description: Returns the questions asked by the users identified in the IDs parameter. tags: - Questions parameters: - name: ids in: path required: true schema: type: string description: Semicolon-delimited list of user IDs - $ref: '#/components/parameters/site' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/pagesize' - $ref: '#/components/parameters/order' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' responses: '200': description: Questions asked by the specified users content: application/json: schema: $ref: '#/components/schemas/QuestionsResponse' components: schemas: Question: type: object description: A question on a Stack Exchange site properties: question_id: type: integer description: Unique identifier of the question title: type: string description: The title of the question body: type: string description: The HTML body of the question body_markdown: type: string description: The Markdown body of the question score: type: integer description: The net vote score of the question view_count: type: integer description: Number of times the question has been viewed answer_count: type: integer description: Number of answers the question has received accepted_answer_id: type: integer description: ID of the accepted answer if one exists is_answered: type: boolean description: Whether the question has an accepted answer creation_date: type: integer description: Unix timestamp of when the question was created last_activity_date: type: integer description: Unix timestamp of the last activity on the question last_edit_date: type: integer description: Unix timestamp of the last edit owner: $ref: '#/components/schemas/ShallowUser' tags: type: array items: type: string description: Tags associated with the question link: type: string format: uri description: Link to the question page closed_reason: type: string description: Reason the question was closed if applicable closed_date: type: integer description: Unix timestamp of when the question was closed bounty_amount: type: integer description: Bounty amount if an active bounty exists bounty_closes_date: type: integer description: Unix timestamp when the bounty closes QuestionsResponse: allOf: - $ref: '#/components/schemas/Wrapper' - type: object properties: items: type: array items: $ref: '#/components/schemas/Question' AnswersResponse: allOf: - $ref: '#/components/schemas/Wrapper' - type: object properties: items: type: array items: $ref: '#/components/schemas/Answer' Wrapper: type: object description: Standard Stack Exchange API response wrapper containing items, pagination info, and backoff/quota information. properties: items: type: array description: The list of items returned items: type: object has_more: type: boolean description: Whether there are more results available quota_max: type: integer description: Maximum number of requests allowed per day quota_remaining: type: integer description: Number of requests remaining for today backoff: type: integer description: Number of seconds to wait before making additional requests if the API has asked for backoff total: type: integer description: Total number of items available page: type: integer description: Current page number page_size: type: integer description: Number of items per page type: type: string description: The type of items in the response error_id: type: integer description: Error identifier if an error occurred error_message: type: string description: Human-readable error description error_name: type: string description: Machine-readable error name ErrorResponse: type: object properties: error_id: type: integer description: Numeric error identifier error_message: type: string description: Human-readable error description error_name: type: string description: Machine-readable error name Answer: type: object description: An answer to a question on a Stack Exchange site properties: answer_id: type: integer description: Unique identifier of the answer question_id: type: integer description: ID of the question this answer belongs to body: type: string description: The HTML body of the answer body_markdown: type: string description: The Markdown body of the answer score: type: integer description: The net vote score of the answer is_accepted: type: boolean description: Whether this answer has been accepted by the question owner creation_date: type: integer description: Unix timestamp of when the answer was created last_activity_date: type: integer description: Unix timestamp of the last activity on the answer last_edit_date: type: integer description: Unix timestamp of the last edit owner: $ref: '#/components/schemas/ShallowUser' link: type: string format: uri description: Link to the answer on the question page ShallowUser: type: object description: A shallow representation of a Stack Exchange user properties: user_id: type: integer description: Unique identifier of the user display_name: type: string description: The user's display name reputation: type: integer description: The user's reputation score user_type: type: string enum: - unregistered - registered - moderator - named_moderator - team_admin description: The type of user account profile_image: type: string format: uri description: URL of the user's profile image link: type: string format: uri description: Link to the user's profile page accept_rate: type: integer description: Percentage of questions the user has accepted answers for CommentsResponse: allOf: - $ref: '#/components/schemas/Wrapper' - type: object properties: items: type: array items: $ref: '#/components/schemas/Comment' Comment: type: object description: A comment on a question or answer on a Stack Exchange site properties: comment_id: type: integer description: Unique identifier of the comment post_id: type: integer description: ID of the post (question or answer) this comment belongs to body: type: string description: The HTML body of the comment body_markdown: type: string description: The Markdown body of the comment score: type: integer description: The net vote score of the comment creation_date: type: integer description: Unix timestamp of when the comment was created owner: $ref: '#/components/schemas/ShallowUser' link: type: string format: uri description: Link to the comment parameters: order: name: order in: query schema: type: string enum: - asc - desc default: desc description: Sort order for results page: name: page in: query schema: type: integer minimum: 1 default: 1 description: The page number to return (1-indexed) pagesize: name: pagesize in: query schema: type: integer minimum: 0 maximum: 100 default: 30 description: Number of results to return per page (max 100) sort: name: sort in: query schema: type: string description: The field to sort results by (varies by endpoint) tagged: name: tagged in: query schema: type: string description: Semicolon-delimited list of tags to filter by site: name: site in: query required: true schema: type: string default: stackoverflow description: The Stack Exchange site to query. Use the API name of the site, e.g., stackoverflow, serverfault, superuser. example: stackoverflow fromdate: name: fromdate in: query schema: type: integer description: Unix timestamp for the minimum creation date todate: name: todate in: query schema: type: integer description: Unix timestamp for the maximum creation date filter: name: filter in: query schema: type: string description: A filter to control which fields are returned in the response. Use the /filter endpoint to create custom filters. responses: BadRequest: description: Bad request due to missing or invalid parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' Throttled: description: Request throttled due to rate limit content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' Unauthorized: description: Authentication required or token is invalid content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' securitySchemes: oauth2: type: oauth2 description: OAuth 2.0 authentication for Stack Exchange API. Register an application at http://stackapps.com/apps/oauth to obtain client credentials. flows: authorizationCode: authorizationUrl: https://stackoverflow.com/oauth tokenUrl: https://stackoverflow.com/oauth/access_token/json scopes: no_expiry: Issues an access token that does not expire write_access: Allows write access to a user's data private_info: Access a user's private information externalDocs: description: Stack Exchange API Documentation url: https://api.stackexchange.com/docs