---
pageClass: page-reference
---
# Preset
> Presets hold the preferences of individual users of the platform. This allows Directus to show and maintain custom
> item listings and bookmarks for users of the app.
> [Learn more about Presets](/concepts/collections/#collection-presets-bookmarks).
[[toc]]
---
## The Preset Object
`id` **uuid**\
Primary key of the preset.
`bookmark` **string**\
The title of the bookmark. If this value is `null`, it's considered a preset instead of a bookmark.
`user` **many-to-one**\
User this preset applies to. Many-to-one to [users](/reference/api/system/users/).
`role` **many-to-one**\
Role this preset applies to. Many-to-one to [users](/reference/api/system/roles/).
`collection` **string**\
Collection this preset applies to.
`search` **string**\
The search query used in the preset.
`filters` **array**\
The filters used in the preset.
`layout` **string**\
The layout used in this preset.
`layout_query` **object**\
The item query used by the layout. This structure is based on the used layout.
`layout_options` **object**\
The options used by the layout. This structure is based on the used layout.
```json
{
"id": 39,
"bookmark": null,
"user": "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca",
"role": null,
"collection": "directus_activity",
"search": null,
"filters": [],
"layout": "tabular",
"layout_query": {
"tabular": {
"sort": "-timestamp",
"fields": ["action", "collection", "timestamp", "user"],
"page": 1
}
},
"layout_options": {
"tabular": {
"widths": {
"action": 100,
"collection": 210,
"timestamp": 240,
"user": 240
}
}
}
}
```
---
## List Presets
List all presets that exist in Directus.
::: tip Permissions
The data returned in this endpoint will be filtered based on the user's permissions. For example, presets for a role
other than the current user's role won't be returned.
:::
### Query Parameters
Supports all [global query parameters](/reference/api/query).
### Returns
An array of up to [limit](/reference/api/query/#limit) [preset objects](#the-preset-object). If no items are available,
data will be an empty array.
### REST API
```
GET /presets
SEARCH /presets
```
[Learn more about SEARCH ->](/reference/api/introduction/#search-http-method)
### GraphQL
```
POST /graphql/system
```
```graphql
type Query {
presets: [directus_presets]
}
```
##### Example
```graphql
query {
presets {
id
user
}
}
```
---
## Retrieve a preset
List an existing preset by primary key.
### Query Parameters
Supports all [global query parameters](/reference/api/query).
### Returns
Returns the requested [preset object](#the-preset-object).
### REST API
```
GET /presets/:id
```
##### Example
```
GET /presets/42
```
### GraphQL
```
POST /graphql/system
```
```graphql
type Query {
presets_by_id(id: ID!): directus_presets
}
```
##### Example
```graphql
query {
presets_by_id(id: 42) {
id
user
}
}
```
---
## Create a Preset
Create a new preset.
### Query Parameters
Supports all [global query parameters](/reference/api/query).
### Request Body
A partial [preset object](#the-preset-object).
### Returns
Returns the [preset object](#the-preset-object) for the created preset.
### REST API
```
POST /presets
```
##### Example
```json
// POST /presets
{
"user": "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca",
"layout": "cards",
"search": "Directus"
}
```
### GraphQL
```
POST /graphql/system
```
```graphql
type Mutation {
create_presets_item(data: create_directus_presets_input!): directus_presets
}
```
##### Example
```graphql
mutation {
create_presets_item(data: { user: "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca", layout: "cards", search: "Directus" }) {
id
user
}
}
```
---
## Create Multiple Presets
Create multiple new presets.
### Query Parameters
Supports all [global query parameters](/reference/api/query).
### Request Body
An array of partial [preset objects](#the-preset-object).
### Returns
Returns the [preset object](#the-preset-object) for the created preset.
### REST API
```
POST /presets
```
##### Example
```json
// POST /presets
[
{
"collection": "directus_files",
"user": "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca",
"layout": "cards",
"search": "Directus"
},
{
"collection": "articles",
"user": "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca",
"layout": "tabular"
}
]
```
### GraphQL
```
POST /graphql/system
```
```graphql
type Mutation {
create_presets_items(data: [create_directus_presets_input!]!): [directus_presets]
}
```
##### Example
```graphql
mutation {
create_presets_items(
data: [
{
collection: "directus_files"
user: "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca"
layout: "cards"
search: "Directus"
}
{ collection: "articles", user: "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca", layout: "tabular" }
]
) {
id
user
}
}
```
---
## Update a Preset
Update an existing preset.
### Query Parameters
Supports all [global query parameters](/reference/api/query).
### Request Body
A partial [preset object](#the-preset-object).
### Returns
Returns the [preset object](#the-preset-object) for the updated preset.
### REST API
```
PATCH /presets/:id
```
##### Example
```json
// PATCH /presets/34
{
"layout": "tabular"
}
```
### GraphQL
```
POST /graphql/system
```
```graphql
type Mutation {
update_presets_item(id: ID!, data: update_directus_presets_input): directus_presets
}
```
##### Example
```graphql
mutation {
update_presets_item(id: 32, data: { layout: "tabular" }) {
id
user
}
}
```
---
## Update Multiple Presets
Update multiple existing presets.
### Query Parameters
Supports all [global query parameters](/reference/api/query).
### Request Body
`keys` **Required**\
Array of primary keys of the presets you'd like to update.
`data` **Required**\
Any of [the preset object](#the-preset-object)'s properties.
### Returns
Returns the [preset objects](#the-preset-object) for the updated presets.
### REST API
```
PATCH /presets
```
##### Example
```json
// PATCH /presets
{
"keys": [15, 64],
"data": {
"layout": "tabular"
}
}
```
### GraphQL
```
POST /graphql/system
```
```graphql
type Mutation {
update_presets_items(ids: [ID!]!, data: update_directus_presets_input): [directus_presets]
}
```
##### Example
```graphql
mutation {
update_presets_items(ids: [15, 64], data: { layout: "tabular" }) {
id
user
}
}
```
---
## Delete a Preset
Delete an existing preset.
### Returns
Empty body.
### REST API
```
DELETE /presets/:id
```
##### Example
```
DELETE /presets/34
```
### GraphQL
```
POST /graphql/system
```
```graphql
type Mutation {
delete_presets_item(id: ID!): delete_one
}
```
##### Example
```graphql
mutation {
delete_presets_item(id: 32) {
id
}
}
```
---
## Delete Multiple Presets
Delete multiple existing presets.
### Request Body
An array of preset primary keys
### Returns
Empty body.
### REST API
```
DELETE /presets
```
##### Example
```json
// DELETE /presets
[15, 251, 810]
```
### GraphQL
```
POST /graphql/system
```
```graphql
type Mutation {
delete_presets_items(ids: [ID!]!): delete_many
}
```
##### Example
```graphql
mutation {
delete_presets_items(ids: [15, 251, 810]) {
ids
}
}
```