All Payload API routes are mounted and prefixed to your config's routes.api
URL segment (default: /api
).
REST query parameters:
Each collection is mounted using its slug
value. For example, if a collection's slug is users
, all corresponding routes will be mounted on /api/users
.
Note: Collection slugs must be formatted in kebab-case
All CRUD operations are exposed as follows:
Operation | Method | Path | View |
---|---|---|---|
Find | GET | /api/{collection-slug} | |
Find By ID | GET | /api/{collection-slug}/{id} | |
Count | GET | /api/{collection-slug}/count | |
Create | POST | /api/{collection-slug} | |
Update | PATCH | /api/{collection-slug} | |
Update By ID | PATCH | /api/{collection-slug}/{id} | |
Delete | DELETE | /api/{collection-slug} | |
Delete by ID | DELETE | /api/{collection-slug}/{id} |
Auth enabled collections are also given the following endpoints:
Operation | Method | Path | View |
---|---|---|---|
Login | POST | /api/{user-collection}/login | |
Logout | POST | /api/{user-collection}/logout | |
Unlock | POST | /api/{user-collection}/unlock | |
Refresh | POST | /api/{user-collection}/refresh-token | |
Verify User | POST | /api/{user-collection}/verify/{token} | |
Current User | GET | /api/{user-collection}/me | |
Forgot Password | POST | /api/{user-collection}/forgot-password | |
Reset Password | POST | /api/{user-collection}/reset-password |
Globals cannot be created or deleted, so there are only two REST endpoints opened:
Operation | Method | Path | View |
---|---|---|---|
Get Global | GET | /api/globals/{global-slug} | |
Update Global | POST | /api/globals/{global-slug} |
In addition to the dynamically generated endpoints above Payload also has REST endpoints to manage the admin user preferences for data specific to the authenticated user.
Operation | Method | Path | View |
---|---|---|---|
Get Preference | GET | /api/payload-preferences/{key} | |
Create Preference | POST | /api/payload-preferences/{key} | |
Delete Preference | DELETE | /api/payload-preferences/{key} |
Additional REST API endpoints can be added to your application by providing an array of endpoints
in various places within a Payload config. Custom endpoints are useful for adding additional middleware on existing routes or for building custom functionality into Payload apps and plugins. Endpoints can be added at the top of the Payload config, collections
, and globals
and accessed respective of the api and slugs you have configured.
Each endpoint object needs to have:
Property | Description |
---|---|
path | A string for the endpoint route after the collection or globals slug |
method | The lowercase HTTP verb to use: 'get', 'head', 'post', 'put', 'delete', 'connect' or 'options' |
handler | A function or array of functions to be called with req, res and next arguments. Express |
root | When true , defines the endpoint on the root Express app, bypassing Payload handlers and the routes.api subpath. Note: this only applies to top-level endpoints of your Payload config, endpoints defined on collections or globals cannot be root. |
custom | Extension point for adding custom data (e.g. for plugins) |
Example: