JSON:API
A core module that serves Drupal content as JSON in the JSON:API format, shaped by filter, sort, include and paging parameters.
JSON:API is a core Drupal module that exposes entities as a web API following the JSON:API specification. Each bundle, such as the Article content type or a vocabulary, gets its own URL under /jsonapi that returns JSON. A separate website, mobile app or script can read that content, and with writing switched on, change it.
How it works in Drupal 11
The module is named jsonapi. It depends on the core Serialization and File modules. Its URLs follow one pattern: /jsonapi/{entity_type_id}/{bundle_id} for a collection and /jsonapi/{entity_type_id}/{bundle_id}/{uuid} for a single item. Articles live at /jsonapi/node/article. There is no URL at /jsonapi/node, because one path would have to serve several resource types. A request to /jsonapi itself returns an entry point that links to the available resources. Requests and responses use the media type application/vnd.api+json.
The query string does the work that you would otherwise do in code. filter limits a collection by field values, sort orders it, include embeds related entities in the same response, and page[limit] and page[offset] split large collections into pages.
JSON:API adds no access rules of its own. Drupal's entity access and field access are respected, and the validation constraints of the entity apply to write requests. By default the base path is /jsonapi; the security guide shows a jsonapi.base_path setting in services.yml to change it, and files this under security through obscurity that only makes automated attacks less effective.
Example
This request asks for the five newest published articles together with their authors:
GET /jsonapi/node/article?filter[status][value]=1&sort=-created&page[limit]=5&include=uid
Accept: application/vnd.api+json
The response has a data array with the articles and an included array with the user entities that the include parameter asked for. When more articles exist, the response also carries a next link. The client follows that link instead of building page URLs on its own.
Status and add-ons
Checked on 26 October 2026: JSON:API has been part of core since Drupal 8.7, and the 8.7.0 announcement calls it a stable core feature. The Drupal 11.4.0 announcement of 1 July 2026 notes that Wim Leers stepped down as maintainer of the module. The contributed JSON:API Extras module changes what the API exposes: it can enable or disable resources, rename them, change their paths and disable fields. Its project page lists release 8.x-3.28 from 19 December 2025, an 8.x-3.29-beta1 from 16 October 2026, and compatibility with Drupal 11.
Common mistakes
- Requesting a whole entity type.
/jsonapi/nodedoes not exist. Name the bundle, as in/jsonapi/node/article. - Expecting business logic. The drupal.org getting started guide says JSON:API does not support business logic, and names registering a new user account and resetting a password as examples. Plan custom code or the core REST module for those.
- Exposing more than the front end needs. The security guide says JSON:API has a bigger API surface out of the box, because every entity type that is not internal is exposed. Turn off resource types or fields you do not use, in a custom module or with JSON:API Extras.
- Fetching related items one by one. A client that loads every author with a second request wastes round trips. The
includeparameter returns them together, and a user shared by several items appears only once.
For marketing and content teams
JSON:API is the reason a headless Drupal site can show content you edit in Drupal's own forms. What you save as an entity is served as it is stored, and the same access rules apply as in the editing interface. When a developer proposes a new app or front end, ask which content types and fields it will read, and whether it will only read or also write. That decides what a site builder must expose and what stays hidden.
Sources
- Drupal.org: JSON:API module
- Drupal.org: JSON:API security considerations
- Drupal.org: JSON:API API overview
- Drupal.org: JSON:API filtering
- Drupal.org: JSON:API sorting
- Drupal.org: JSON:API includes
- Drupal.org: JSON:API pagination
- Drupal.org: Getting started with JSON:API and REST
- Drupal.org: Drupal 8.7.0 release announcement
- Drupal.org: JSON:API (legacy contributed project)
- Drupal.org: JSON:API Extras project page
- Drupal.org: Drupal 11.4.0 is now available
- Drupal core 11.4.10: JSON:API default settings
- Drupal core 11.4.10: JSON:API settings form
- Drupal core 11.4.10: JSON:API entry point controller
- Drupal core 11.4.10: jsonapi.info.yml
- Drupal core 11.4.10: OffsetPage query class
- Drupal core 11.4.10: Standard profile
Questions about JSON:API
Cite this definition
"JSON:API." DXPR Drupal glossary, https://dxpr.com/hc/documentation/learn-drupal/drupal-glossary/json-api. Last updated أكتوبر 26, 2026.