VOOZH about

URL: https://www.mediawiki.org/wiki/Special:MyLanguage/API:Tokens

⇱ API:Tokens - MediaWiki


Jump to content
From mediawiki.org
👁 Image
This page is part of the MediaWiki Action API documentation.
MediaWiki Action API
Basics
Authentication
Accounts and Users
Page Operations
Search
Developer Utilities
Tutorials
v · d · e
MediaWiki version:
1.24

API:Tokens module provide tokens required by data-modifying actions such as logging, editing or moving a page, and watching or patrolling changes. For each action, you need a specific type of token. For example: if you want to login to a wiki site via the Action API, you would need a token of type “login” to proceed.

For help in migrating older code, refer to Deprecation of legacy API token parameters.

All tokens change every time you visit a different page or refresh the page. Tokens are generated for both logged in and logged out users. A secret hash that is used to compute all other tokens is stored in whatever storage engine is specified at Manual:$wgSessionCacheType.

Be careful not to post your tokens publicly, for example in screenshots when trying to get technical help. Someone who has one of your un-expired tokens can do things as if they were logged into your account.

API documentation

[edit]
👁 Image
The following documentation is the output of Special:ApiHelp/query+tokens, automatically generated by the pre-release version of MediaWiki that is running on this site (MediaWiki.org).

meta=tokens

(main | query | tokens)

Gets tokens for data-modifying actions.

Specific parameter:
Other general parameters are available.
type

Types of token to request.

Values (separate with or alternative): createaccount, csrf, deleteglobalaccount, login, patrol, rollback, setglobalaccountstatus, userrights, watch
To specify all values, use .
Default: csrf
Examples:
Retrieve a csrf token (the default).
api.php?action=query&meta=tokens [open in sandbox]
Retrieve a watch token and a patrol token.
api.php?action=query&meta=tokens&type=watch|patrol [open in sandbox]

Example

[edit]

GET request

[edit]

Response

[edit]
{
"batchcomplete":"",
"query":{
"tokens":{
"logintoken":"9ed1499d99c0c34c73faa07157b3b6075b427365+\\"
}
}
}

Sample code

[edit]

Python

[edit]
#!/usr/bin/python3

"""
 tokens.py
 MediaWiki API Demos
 Demo of `Token` module: Fetch token of type `login`
 MIT License
"""

importrequests

S = requests.Session()

URL = "https://www.mediawiki.org/w/api.php"

PARAMS = {
 "action": "query",
 "meta": "tokens",
 "type": "login",
 "format": "json"
}

R = S.get(url=URL, params=PARAMS)
DATA = R.json()

LOGIN_TOKEN = DATA['query']['tokens']['logintoken']

print(LOGIN_TOKEN)

PHP

[edit]
<?php

/*
 tokens.php

 MediaWiki API Demos
 Demo of `Token` module: Fetch token of type `login`

 MIT License
*/

$endPoint = "https://www.mediawiki.org/w/api.php";
$params = [
 "action" => "query",
 "meta" => "tokens",
 "type" => "login",
 "format" => "json"
];

$url = $endPoint . "?" . http_build_query( $params );

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
// Wikis such as Wikimedia Commons require that you also set a user agent through CURLOPT_USERAGENT
$output = curl_exec( $ch );
curl_close( $ch );

$result = json_decode( $output, true );
echo( $result['query']['tokens']['logintoken'] . "\n" );

Perl

[edit]
#!/usr/bin/perl

# tokens.pl
# MediaWiki API Demos
# Demo of `Token` module: Fetch token of type `login`
# WTFPL

usestrict;
usewarnings;
useJSON;
useLWP::UserAgent;
useURI;

my$url=URI->new('https://www.mediawiki.org/w/api.php');
my%params=(
'action'=>'query',
'meta'=>'tokens',
'type'=>'login',
'format'=>'json',
);
$url->query_form(%params);
my$ua=LWP::UserAgent->new();
my$response=$ua->get($url);
my$data=JSON::decode_json($response->content);
my$login_token=$data->{'query'}{'tokens'}{'logintoken'};
print"$login_token\n";

Node.js

[edit]
/*
 tokens.js
 MediaWiki API Demos
 Demo of `Token` module: Fetch token of type `login`
 MIT License
*/

varrequest=require('request'),
url="https://www.mediawiki.org/w/api.php";

varparams={
action:"query",
meta:"tokens",
type:"login",
format:"json"
};

request.get({url:url,qs:params},function(error,response,body){
body=JSON.parse(body);
console.log(body.query.tokens.logintoken);
});

MediaWiki JS

[edit]
/*
 tokens.js
 MediaWiki API Demos
 Demo of `Token` module: Fetch token of type `csrf`
 MIT License
*/

varparams={
action:'query',
meta:'tokens',
type:'csrf',
format:'json'
},
api=newmw.Api();

api.get(params).done(function(data){
console.log(data.query.tokens.csrftoken);
});

BASH

[edit]
exportMW_URL="https://www.mediawiki.org/w/"
exportAPI_URL="api.php"

# $0 <token type>
# mainly csrf and login
functionget-token(){
API_URL="api.php"
RESULT=$(curl-fsSL-XPOST\
-daction=query\
-dmeta=tokens\
-dtype="$1"\
-dformat=json\
-ccookie.txt\
-bcookie.txt\
"${MW_URL}${API_URL}")
RESULT=${RESULT/*token\":\"}
TOKEN=${RESULT%\\\"*}
echo"$TOKEN"
}

TOKEN=$(get-tokenlogin)

Possible errors

[edit]
Code Info

Parameter history

[edit]
  • v1.27: Introduced login, createaccount

See also

[edit]