API:Data formats

Output
MediaWiki API has historically supported a number of different formats, but this has significantly complicated further development.

We would like to standardize on just one JSON format.

For now, MediaWiki discourages, but still supports two additional generic output formats (XML and PHP).

You should always specify the format with the input (request) parameter  and a lowercase value.

Feed modules like api>Special:MyLanguage/API:Feedrecentchanges|Feed Recent Changes override the standard output format, instead using RSS or Atom, as specified by their  parameter.

In those cases, the format specified in the  parameter is only used if there's an error.

All formats other than JSON are deprecated.

XML and PHP are still supported, but all others have been removed in either MediaWiki 1.26 or 1.27; see the table below.

All new API users should use JSON.

Clients written in PHP should avoid using the PHP format because it is fundamentally insecure.

It is maintained for now only due to its popularity.

Unless specified, all modules allow data output in all generic formats.

To simplify debugging, all generic formats have "pretty-print in HTML" alternatives with an  suffix.

The default format changed in MediaWiki 1.25 to ; it was   in earlier MediaWiki releases.

Note that while the pretty-print formats are all indented and separate syntactic elements with newlines, the non-pretty formats don't do this.

There are many conversion libraries and online converters to convert JSON responses to other formats—for example, JSON-CSV converts to Comma-Separated Values

JSON parameters
and  accept the following additional parameters:


 * Specify  for to get json (and php) format responses in a  cleaner format. This also encodes most non-ASCII characters as UTF-8.
 * Specify  for to get json (and php) format responses in a  cleaner format. This also encodes most non-ASCII characters as UTF-8.
 * Specify  for to get json (and php) format responses in a  cleaner format. This also encodes most non-ASCII characters as UTF-8.

Callback restrictions
When using JSON in callback mode, a number of things are disabled for security:


 * Tokens cannot be obtained (so state-changing actions aren't possible)


 * The client is treated as an anonymous user (i.e. not logged in) for all purposes, even after logging in through action=login


 * This means that things that require additional rights, such as, won't work unless anonymous users are allowed to use them

Examples
'' it may be useful to add the '&indexpageids' parameter, to parse the json if the pageid ("736") is not known before the result. ''