API:Delete
MediaWiki Action API |
---|
Basics |
Authentication |
Accounts and Users |
Page Operations |
|
Search |
Developer Utilities |
Tutorials |
v · d · e |
POST request to delete a page. Pages can be undeleted with the API:Undelete method.
API documentation
action=delete
- This module requires read rights.
- This module requires write rights.
- This module only accepts POST requests.
- Source: MediaWiki
- License: GPL-2.0-or-later
Delete a page.
- title
Title of the page to delete. Cannot be used together with pageid.
- pageid
Page ID of the page to delete. Cannot be used together with title.
- Type: integer
- reason
Reason for the deletion. If not set, an automatically generated reason will be used.
Change tags to apply to the entry in the deletion log.
- Values (separate with | or alternative): AWB, convenient-discussions
- deletetalk
Delete the talk page, if it exists.
- Type: boolean (details)
- watch
- Deprecated.
Add the page to the current user's watchlist.
- Type: boolean (details)
- watchlist
Unconditionally add or remove the page from the current user's watchlist, use preferences (ignored for bot users) or do not change watch.
- One of the following values: nochange, preferences, unwatch, watch
- Default: preferences
- watchlistexpiry
Watchlist expiry timestamp. Omit this parameter entirely to leave the current expiry unchanged.
- Type: expiry (details)
- unwatch
- Deprecated.
Remove the page from the current user's watchlist.
- Type: boolean (details)
- oldimage
The name of the old image to delete as provided by action=query&prop=imageinfo&iiprop=archivename.
- token
A "csrf" token retrieved from action=query&meta=tokens
- This parameter is required.
- Delete MediaWiki.
- api.php?action=delete&title=MediaWiki&token=123ABC [open in sandbox]
- Delete MediaWiki with the reason Preparing for move.
- api.php?action=delete&title=MediaWiki&token=123ABC&reason=Preparing%20for%20move [open in sandbox]
Example
The process has four steps:
- Fetch login token from API:Tokens .
- Send a POST request with the fetched login token and user information to the API.
- Retrieve a CSRF token when logged in.
- Send a post request to delete a page with the fetched CSRF token.
POST request
Response
{ "delete":{ "title":"page name", "reason":"content was: 'Test' and the only contributor was Username", "logid":1234567 } }
Sample code
Python
#!/usr/bin/python3 """ delete.py MediaWiki API Demos Demo of `Delete` module: post request to delete a page MIT license """ importrequests S = requests.Session() URL = "https://test.wikipedia.org/w/api.php" # Step1: Retrieve login token PARAMS_0 = { 'action':"query", 'meta':"tokens", 'type':"login", 'format':"json" } R = S.get(url=URL, params=PARAMS_0) DATA = R.json() LOGIN_TOKEN = DATA['query']['tokens']['logintoken'] # Step2: Send a post request to login. Use of main account for login is not # supported. Obtain credentials via Special:BotPasswords # (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword PARAMS_1 = { 'action':"login", 'lgname':"your_bot_username", 'lgpassword':"your_bot_password", 'lgtoken':LOGIN_TOKEN, 'format':"json" } R = S.post(URL, data=PARAMS_1) # Step 3: When logged in, retrieve a CSRF token PARAMS_2 = { 'action':"query", 'meta':"tokens", 'format':"json" } R = S.get(url=URL, params=PARAMS_2) DATA = R.json() CSRF_TOKEN = DATA['query']['tokens']['csrftoken'] # Step 4: Send a post request to delete a page PARAMS_3 = { 'action':"delete", 'title':"enter_a_page_title", 'token':CSRF_TOKEN, 'format':"json", 'reason':'the reason for deletion' } R = S.post(URL, data=PARAMS_3) DATA = R.json() print(DATA)
PHP
<?php /* delete.php MediaWiki API Demos Demo of `Delete` module: post request to delete a page MIT license */ $endPoint = "http://dev.wiki.local.wmftest.net:8080/w/api.php"; $login_Token = getLoginToken(); // Step 1 loginRequest( $login_Token ); // Step 2 $csrf_Token = getCSRFToken(); // Step 3 delete( $csrf_Token ); // Step 4 // Step 1: GET request to fetch login token function getLoginToken() { global $endPoint; $params1 = [ "action" => "query", "meta" => "tokens", "type" => "login", "format" => "json" ]; $url = $endPoint . "?" . http_build_query( $params1 ); $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" ); $output = curl_exec( $ch ); curl_close( $ch ); $result = json_decode( $output, true ); return $result["query"]["tokens"]["logintoken"]; } // Step 2: POST request to log in. Use of main account for login is not // supported. Obtain credentials via Special:BotPasswords // (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword function loginRequest( $logintoken ) { global $endPoint; $params2 = [ "action" => "login", "lgname" => "bot_user_name", "lgpassword" => "bot_password", "lgtoken" => $logintoken, "format" => "json" ]; $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $endPoint ); curl_setopt( $ch, CURLOPT_POST, true ); curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params2 ) ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" ); $output = curl_exec( $ch ); curl_close( $ch ); } // Step 3: GET request to fetch CSRF token function getCSRFToken() { global $endPoint; $params3 = [ "action" => "query", "meta" => "tokens", "format" => "json" ]; $url = $endPoint . "?" . http_build_query( $params3 ); $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" ); $output = curl_exec( $ch ); curl_close( $ch ); $result = json_decode( $output, true ); return $result["query"]["tokens"]["csrftoken"]; } // Step 4: POST request to delete a page function delete( $csrftoken ) { global $endPoint; $params4 = [ "action" => "delete", "title" => "Sandbox", "token" => $csrftoken, "format" => "json" ]; $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $endPoint ); curl_setopt( $ch, CURLOPT_POST, true ); curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params4 ) ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" ); $output = curl_exec( $ch ); curl_close( $ch ); echo ( $output ); }
JavaScript
/* delete.js MediaWiki API Demos Demo of `Delete` module: post request to delete a page MIT license */ varrequest=require('request').defaults({jar:true}), url="http://dev.wiki.local.wmftest.net:8080/w/api.php"; // Step 1: GET request to fetch login token functiongetLoginToken(){ varparams_0={ action:"query", meta:"tokens", type:"login", format:"json" }; request.get({url:url,qs:params_0},function(error,res,body){ if(error){ return; } vardata=JSON.parse(body); loginRequest(data.query.tokens.logintoken); }); } // Step 2: POST request to log in. // Use of main account for login is not // supported. Obtain credentials via Special:BotPasswords // (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword functionloginRequest(login_token){ varparams_1={ action:"login", lgname:"bot_username", lgpassword:"bot_password", lgtoken:login_token, format:"json" }; request.post({url:url,form:params_1},function(error,res,body){ if(error){ return; } getCsrfToken(); }); } // Step 3: GET request to fetch CSRF token functiongetCsrfToken(){ varparams_2={ action:"query", meta:"tokens", format:"json" }; request.get({url:url,qs:params_2},function(error,res,body){ if(error){ return; } vardata=JSON.parse(body); delete_page(data.query.tokens.csrftoken); }); } // Step 4: POST request to delete a page functiondelete_page(csrf_token){ varparams_3={ action:"delete", title:"Test", token:csrf_token, format:"json" }; request.post({url:url,form:params_3},function(error,res,body){ if(error){ return; } console.log(body); }); } // Start From Step 1 getLoginToken();
MediaWiki JS
/* delete.js MediaWiki API Demos Demo of `Delete` module: post request to delete a page MIT License */ varparams={ action:'delete', title:'enter_a_page_title', format:'json' }, api=newmw.Api(); api.postWithToken('csrf',params).done(function(data){ console.log(data); });
Possible errors
Code | Info |
---|---|
missingtitle | The page you specified doesn't exist. |
notoken | The token parameter must be set. |
badtoken | Invalid CSRF token. |
permissiondenied | You don't have permission to delete this page. On most wikis, deleting pages is restricted to sysops, but other wikis may have different rules.
|
cantdelete | The page or file "title" could not be deleted.
It may have already been deleted by someone else. |
Parameter history
- v1.38: Introduced
deletetalk
- v1.27: Introduced
tags
- v1.17: Deprecated
watch
,unwatch
- v1.14: Introduced
pageid
- v1.13: Introduced
watch
,oldimage
,unwatch
Additional notes
- For older versions of MediaWiki, you can use API:Tokens (action) or API:Info to get an edit token in place of login token.
- While executing the code snippets provided on this page, remember to use
https://test.wikipedia.org/w/api.php
as the endpoint, so that you don't accidentally delete pages on production wikis. - In addition to the
delete
right, other rights may be required, depending on the location and type of page.
Deleting a user's .css
page, for example, also requires the editusercss
right.
See also
- API:Undelete - Undeletes a page.