Contents

The API takes its input through parameters provided by the HTTP request in application/x-www-form-urlencoded or multipart/form-data format.
Every module and submodule has its own set of parameters, which are listed in the documentation and in action=help. They can also be retrieved through action=paraminfo.

Parameters that take multiple values are normally submitted with the values separated using the pipe character (|), e.g. param=value1|value2.
If a value contains the pipe character in itself, use U+001F (Unit Separator) as the separator and prefix the value with U+001F, e.g. param=%1Fvalue1%1Fvalue2.

Whether a parameter accepts multiple values is listed explicitly in its module documentation.

If a boolean parameter is specified in an HTTP request, it is considered true regardless of its value. For a false value, omit the parameter entirely.
The best way to specify a true parameter in an HTTP request is to use someParam=; the trailing = ensures the browser or HTTP library does not discard the "empty" someParam.

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 modules which require additional rights won't work unless anonymous users are allowed to use them.

XML and PHP output formats are deprecated but still in use. 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.

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

Feed modules like Feed Recent Changes override the standard output format, instead using RSS or Atom, as specified by their feedformat parameter. In those cases, the format specified in the format parameter is only used if there's an error.