openapi: 3.0.3 info: title: MediaWiki Action API description: 'The MediaWiki Action API is the original programmatic interface to MediaWiki, exposed under /w/api.php on every MediaWiki installation. All operations dispatch via the ?action= query parameter. The API supports JSON, XML, and PHP serialization; JSON is the recommended format. Wikimedia projects strongly recommend serial (not parallel) calls, the use of maxlag for non-interactive jobs, and a contactable User-Agent header. The Action API remains the primary write interface (edit, upload, login, patrol) even where the Core REST API is also available.' version: '1.45' x-generated-from: documentation x-source-url: https://www.mediawiki.org/wiki/API:Main_page x-last-validated: '2026-05-29' contact: name: Wikimedia Foundation url: https://www.mediawiki.org/wiki/API:Etiquette license: name: CC BY-SA 4.0 url: https://creativecommons.org/licenses/by-sa/4.0/ servers: - url: https://en.wikipedia.org/w description: English Wikipedia - url: https://{lang}.wikipedia.org/w description: Per-language Wikipedia variables: lang: default: en description: Language code - url: https://commons.wikimedia.org/w description: Wikimedia Commons - url: https://www.wikidata.org/w description: Wikidata - url: https://www.mediawiki.org/w description: MediaWiki.org tags: - name: Query description: Read-only data retrieval (action=query) — pages, revisions, links, search - name: Parse description: Wikitext parsing (action=parse) - name: Edit description: Create/modify page content (action=edit) - name: Authentication description: Login, logout, token retrieval (action=login, clientlogin, logout, query&meta=tokens) - name: Upload description: File upload (action=upload) - name: Patrol description: Mark edits as patrolled (action=patrol) - name: Meta description: Metadata operations (action=opensearch, action=feedrecentchanges) paths: /api.php: get: operationId: callActionApiGet summary: MediaWiki Action Dispatch an Action API Call (GET) description: Generic dispatch endpoint for read operations. Use ?action=query for data retrieval, ?action=parse to parse wikitext, ?action=opensearch for auto-complete. Always include format=json. Combine multiple titles with the pipe character (titles=A|B|C). Use the maxlag parameter for non-interactive jobs. tags: - Query - Parse - Meta parameters: - name: action in: query required: true schema: type: string enum: - query - parse - opensearch - feedrecentchanges - feedcontributions - feedwatchlist - sitematrix - compare - expandtemplates - help - paraminfo - rsd example: query description: API action to dispatch - name: format in: query required: true schema: type: string enum: - json - jsonfm - xml - xmlfm - php - rawfm - none default: json description: Response format. Always use json. - name: titles in: query schema: type: string description: Pipe-separated list of titles example: Earth|Mars|Venus - name: pageids in: query schema: type: string description: Pipe-separated list of page IDs - name: prop in: query schema: type: string description: Properties to fetch (info|revisions|links|categories|images|extracts|...) example: info|revisions - name: list in: query schema: type: string description: List generators (allpages|search|recentchanges|categorymembers|...) - name: meta in: query schema: type: string description: Meta queries (siteinfo|userinfo|tokens|...) example: tokens - name: maxlag in: query schema: type: integer description: Maximum replication lag in seconds before the request is rejected. Required for bots. example: 5 - name: smaxage in: query schema: type: integer description: Shared-cache max-age in seconds - name: maxage in: query schema: type: integer description: Cache max-age in seconds responses: '200': description: Action result content: application/json: schema: $ref: '#/components/schemas/ActionResult' '429': description: Rate limited - retry with exponential backoff x-microcks-operation: delay: 0 dispatcher: FALLBACK post: operationId: callActionApiPost summary: MediaWiki Action Dispatch an Action API Call (POST) description: Generic dispatch endpoint for write operations. Use ?action=edit to create/modify pages, ?action=upload for files, ?action=login or ?action=clientlogin to authenticate. All write operations require a CSRF token from action=query&meta=tokens. POSTs are not cached - use them for writes only. tags: - Edit - Upload - Authentication - Patrol parameters: - name: action in: query required: true schema: type: string enum: - edit - upload - login - clientlogin - logout - patrol - rollback - move - delete - protect - block - unblock - thank - createaccount - emailuser - managetags - tag - options example: edit - name: format in: query required: true schema: type: string enum: - json - jsonfm - xml - xmlfm default: json requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ActionApiWriteRequest' multipart/form-data: schema: $ref: '#/components/schemas/ActionApiWriteRequest' description: Use multipart for action=upload responses: '200': description: Action result content: application/json: schema: $ref: '#/components/schemas/ActionResult' '401': description: Authentication required or invalid token '403': description: Permission denied '429': description: Rate limited security: - BearerAuth: [] - CookieAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK components: securitySchemes: BearerAuth: type: http scheme: bearer description: OAuth 2.0 bearer token from meta.wikimedia.org CookieAuth: type: apiKey in: cookie name: '{wiki}wikiUserID' description: Session cookie obtained via action=login or action=clientlogin schemas: ActionResult: type: object description: Generic envelope for Action API responses. Concrete payload shape depends on action and prop/list/meta selection. properties: batchcomplete: type: string description: Present when the batch completed in one round-trip continue: type: object description: Continuation tokens for paginated responses query: type: object description: Result body for action=query parse: type: object description: Result body for action=parse edit: type: object description: Result body for action=edit login: type: object description: Result body for action=login error: $ref: '#/components/schemas/ActionApiError' warnings: type: object ActionApiWriteRequest: type: object required: - token properties: title: type: string description: Page title for edit/move/delete/protect pageid: type: integer description: Alternative to title text: type: string description: Full wikitext content for action=edit appendtext: type: string prependtext: type: string summary: type: string description: Edit summary token: type: string description: CSRF token from query&meta=tokens basetimestamp: type: string format: date-time description: Timestamp of base revision for edit conflict detection starttimestamp: type: string format: date-time bot: type: boolean description: Mark as bot edit (requires bot right) minor: type: boolean recreate: type: boolean createonly: type: boolean nocreate: type: boolean lgname: type: string description: Login username (action=login) lgpassword: type: string description: Login password (action=login) lgtoken: type: string description: Login token filename: type: string description: Destination filename for action=upload file: type: string format: binary description: File contents for action=upload (multipart) url: type: string format: uri description: Source URL for action=upload (sideload) comment: type: string description: Upload comment tags: type: string description: Pipe-separated change tags ActionApiError: type: object properties: code: type: string example: ratelimited info: type: string description: Human-readable error description '*': type: string description: Legacy error text docref: type: string description: Pointer to docs for this error class