WP REST API (v1 – Deprecated)

Compatibility

Inputting data as an “array”

Endpoints may allow passing in an array of data, typically used for querying entities. URL semantics do not specify how to pass this, however the convention used by PHP and this API is to pass them with the array name concatenated with the key name in square brackets.

For example, a map of key to value (associative arrays) would look like:

filter[post_status]=draft&filter[s]=foo

This is equivalent to the following PHP representation:

$filter = array(
	'post_status' => 'draft',
	's' => 'foo'
);

Or in Javascript:

var filter = {
	'post_status': 'draft',
	's': 'foo',
};

For lists (numeric arrays), the same syntax is used but with empty key values:

type[]=post&type[]=page

This is equivalent to the following PHP representation:

$type = array(
	'post',
	'page'
);

Or in Javascript:

var type = [
	'post',
	'page'
];

These can be combined; for example, using post__in:

filter[post__in][]=1&filter[post__in][]=4&filter[post__in][]=5

This is equivalent to the following PHP representation:

$filter = array(
	'post__in' => array(
		1,
		4,
		5
	)
);

Or in Javascript:

var filter = {
	'post__in': [
		1,
		4,
		5
	]
}

JSON data input

Some posts allow directly passing JSON data (usually an entity) via the request body. These should be specified with a Content-Type header of application/json although individual endpoints may prefer more specific types.

If your client platform does not support native JSON encoding, the data can be submitted via a regular HTTP multipart body, with properties set as values to the data parameter.

That is, the following are equivalent:

Content-Type: application/x-www-form-urlencoded

data[title]=Hello%20World!&data[content_raw]=Content&data[excerpt_raw]=Excerpt

Content-Type: application/json

{"title":"Hello World!","content_raw":"Content","excerpt_raw":"Excerpt"}

HTTP method compatibility

Due to their relatively new nature, some methods such as PATCH may not be supported by client software. To emulate support for this, a _method parameter may be passed via the URL with the value set to a valid HTTP method (DELETE, GET, HEAD, PATCH, POST, PUT, DELETE). Note that this must be passed via the URL and cannot be passed in the HTTP body.