If something goes wrong in an API request, an error or a warning will be thrown (although the HTTP response will usually still be 200 OK
). Warnings are thrown for non-fatal conditions such as invalid parameters, whereas errors are only thrown for fatal conditions.
Warnings are grouped by the name of the module that caused them. Multiple warnings from the same module are separated by a newline. In the legacy error formatting mode (see below), which is the default, warnings are output in the following format:
"warnings": { "modulename": { "*": "warning text" } }
(*
will be replaced by warnings
when formatversion=2
is used.)
When a non-legacy error formatting option is used, warnings are output in the same format as errors. E.g. with errorformat=wikitext
the format will be:
"warnings": [ { "code": "warning message key", "*": "text of warning", "module": "API module which caused the warning" } ]
(*
will be replaced with text
when formatversion=2
is used.)
action=query
submodule has been disabled in the wiki. To check if a module is available before invoking it, see How do I check if an API module is available? in the FAQ. The submodulename module has been disabled. Missing submodule The list
, prop
or meta
submodule is not present in the wiki, for example if it is implemented by an extension that isn't loaded. Unrecognized value for parameter list=submodule. Parameter validation Warnings thrown when validating parameters of any API module. paramname is replaced by the name of the parameter.
Since MediaWiki 1.29 errors are localizable, and available in multiple formats. An error (or warning) is expected to consist of a message, an error code (an arbitrary string, usually generated from the message key; see also #Standard error messages below), and optional extra data (an associative array). An API response with errors will look like this:
{ "errors": [ { "code": "error-code", /* ...error message..., */ "data": [ /* ...any extra data... */ ], "module": "path to the API module that generated the error" }, /* ...more errors... */ ], "docref": "human-readable message on where to find help" }
The data
key in the output above will be missing if there is no extra data to display.
The way the error message in the output above is returned to the client is controlled by the errorformat
API parameter. The various error formats available are:
"html": "the message, interpreted as wikitext and parsed into HTML"wikitext
"text": "the message as-is, with parameter substitution but without any parsing"plaintext Intended for human display in HTML-incapable clients. Plaintext conversion is a minimal, best-effort transformation to make the message (assumed to contain wikitext) more readable: tags are removed, HTML entities are replaced, certain HTML tags are intelligently replaced with punctuation.
"text": "the message, like wikitext, but with added plaintext conversion"raw Intended as a machine-readable format (note that the error key is more unique than the error code). Parameters can themselves be objects with
key
and params
fields.
"key": "message key", "params": [ /* ...message parameters... */ ]none No message information at all. bc The default, for backward compatibility. There’s no point in specifying this value, use one of the non-legacy formats instead. See #Legacy format
For the formatting modes which involve message lookup (html
, wikitext
and plaintext
) the API parameter errorlang
can be used to set the language (only needed when different from the content language) and errorsuselocal
to set whether the MediaWiki: namespace can be used to override default error messages.
Error codes are also returned in the MediaWiki-API-Error
response HTTP header, separated by commas when there are multiple errors.
For an example error response or to test your client's error handling, visit https://en.wikipedia.org/w/api.php?action=blah&errorformat=plaintext&format=jsonfm&formatversion=2
API responses can contain multiple errors. For an example, try adding the lines the abusefilter will block this
and the abusefilter will also block this
to a Test Wikipedia page as API sandbox (if you are logged in, go to the action=edit tab and click Auto-fill the token
first before making the request).
When errorformat
is not set (or set to bc
), errors will be displayed in the legacy format instead.
In the legacy error format, there is always at most one error; additional ones are discarded. The response looks like this:
{ "error": { "code": "error-code", "info": "the message as-is, with parameter substitution but without any parsing", /* ...any extra data... */ } }
The extra data in the output above is spliced into the object instead of being under the data
key.
Error messages are documented in this wiki as shown below, which corresponds to the json error response in #Legacy format above:
Code Info errorcode error messageThe various error messages are:
Type Description Error message(s) Code Info Disabled module The action module has been disabled in the wiki. To check if a module is available before invoking it, see How do I check if an API module is available? in the FAQ. moduledisabled The modulename module has been disabled. Missing module The action module is not present in the wiki, for example if it is implemented by an extension that isn't loaded unknown_action Unrecognized value for parameter action: modulename. Parameter validation Errors thrown when validating parameters of any API module. paramname is replaced by the name of the parameter. multival_paramname Only one of 'value1', 'value2', 'value3' is allowed for parameter 'paramname' unknown_paramname Unrecognized value for parameter paramname: value. paramname paramname may not be less than min (set to value). paramname paramname may not be over max (set to value) for bots or sysops. paramname paramname may not be over max (set to value) for users. badtimestamp_paramname Invalid value "value" for timestamp parameter paramname. baduser_paramname Invalid value "value" for user parameter paramname. invalidparammix The parameters param1, param2, param3 cannot be used together missingparam One of the parameters param1, param2, param3 is required _badcontinue Invalid continue param. You should pass the original value returned by the previous query Standard error messagesSome generic error messages are shared among modules. If a module can throw these errors, that's explicitly mentioned in its Possible errors
section.
list of cascade-protected pages
protectedpage The "right" right is required to edit this page permissiondenied Permission denied. confirmemail You must confirm your email address before editing pages.Please set and validate your email address through your user preferences.
blocked You have been blocked from editing autoblocked Your IP address has been blocked automatically, because it was used by a blocked user ratelimited You've exceeded your rate limit. Please wait some time and try again readonly The wiki is currently in read-only mode badtoken Invalid token (did you remember to urlencode it?) missingtitle The page you requested doesn't exist mustbeposted Type of your HTTP request message must be POST hookaborted The modification you tried to make was aborted by an extension hook nosuchpageid There is no page with ID id nosuchrevid There is no revision with ID id nosuchrcid There is no change with rcid "id" nosuchuser The user you specified doesn't exist invalidtitle Bad title "title" invaliduser Invalid username "username" assertbotfailed "assert=bot" has been used, but logged in user is not a bot assertuserfailed "assert=user" has been used, but user is not logged in readapidenied You need read permission to use this module noapiwrite Editing of this wiki through the API is disabled. Make sure the$wgEnableWriteAPI=true;
statement is included in the wiki's LocalSettings.php file
Additional notes
format=json&formatversion=2
. For formatversion=1
, the field docref
will be replaced by *
.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4