• JSON Formatter: CTRL/CMD+Click a triangle to collapse/expand nodes at the same level.
  • YARC: When testing with Basic Authentication, make sure you are logged out of WordPress first.

Getting Started

WP API supports all HTTP Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS. WP API respects permissions but the developer must setup authentication separately.


WP API is self-documenting. Send an OPTIONS request to any endpoint and get back

JSON Schema compatible info on how to use it:

Options in YARC
7 Options in YARC

To get the entire API schema in a single query, add context=help at the index. (Ie. http://site/book/wp-json?context=help )


Pressbooks has different API endpoints for book and the root site:

Book vs. Root
Book vs. Root


WP API items have a _links node based on HAL (Hypertext Application Language):

To reduce the number of HTTP requests use the *embed parameter to tell the API that the response should include embeddable resources.
10 _embedded
WP API exposes pagination info in the response header.
11 Pagination


WP API renders JSON in a generic way that does not match the DB columns. Keep calm and


if ( ! empty( $schema['properties']['author'] ) ) {
    $data['author'] = (int) $post->post_author;
if ( ! empty( $schema['properties']['slug'] ) ) {
    $data['slug'] = $post->post_name;
if ( ! empty( $schema['properties']['content'] ) ) {
    $data['content'] = array(
        'rendered'  => post_password_required( $post ) ? '' : apply_filters( 'the_content', $post->post_content ),
        'protected' => (bool) $post->post_password,
  "author": 1,
  "slug": "chapter-1",
  "content": {
    "rendered": "<p>This is the first chapter in the main body of the text. You can change the text, rename the chapter, add new chapters, and add new parts.</p>",
    "protected": false

Edit this post on GitHub.