The JSON:API Resources module makes it possible to define custom JSON:API routes. It does not define any custom routes of its own.
This can be incredibly valuable for providing custom collections (like a/jsonapi/featured-posts route) and contextual data (like a /jsonapi/me route).
In addition to GET, this module also makes it easy to accept POST requests. For example, one could define a /jsonapi/user/{id}/reminders route where a new reminder entities could be created and automatically associated with a user.
You can see examples of how to define routes here.
You can find examples of the classes that respond with your custom data here.
Pair with JSON:API Hypermedia
Add typed links and actions to your custom resources with JSON:API Hypermedia. Together they enable HATEOAS-style decoupled behaviors — attach flag, unflag, or subscribe link relations to a node resource without inventing ad-hoc URL conventions.
Looking for a Views-based alternative?
If your custom endpoint is "a filtered list of entities with sorting and pagination," use JSON:API Views instead. It exposes any Views display as a JSON:API collection — no PHP required.
Reach for JSON:API Resources when:
- The response shape doesn't map to a single entity collection (aggregates, computed fields, mixed resource types).
- You need request-scoped logic — auth checks, contextual filters from the session, side effects on
POST. - The route is non-entity, like
/jsonapi/meor/jsonapi/user/{id}/reminders.
Reach for JSON:API Views when the query is already expressible in Views.
Project information
- Project categories: Decoupled
- Ecosystem: JSON:API
7,322 sites report using this module
- Created by mglaman on , updated
Stable releases for this project are covered by the security advisory policy.
Look for the shield icon below.
Releases
Development version: 8.x-1.x-dev updated 22 May 2026 at 21:01 UTC


