---
description: REST and GraphQL API documentation on the Flows collection in Directus.
readTime: 5 min read
pageClass: page-reference
---

# Flows

> Flows enable custom, event-driven data processing and task automation within Directus.

---

## The Data Chain

`id` **uuid**\
Primary key of the flow.

`name` **string**\
Name for the flow.

`icon` **string**\
Icon displayed in the Admin App for the flow.

`color` **string**\
Color of the icon displayed in the Admin App for the flow.

`note` **text**\
Short description displayed in the Admin App.

`status` **string**\
Current status of the flow. One of `active`, `inactive`. Defaults to `active` when not specified.

`trigger` **string**\
Type of trigger for the flow. One of `hook`, `webhook`, `operation`, `schedule`, `manual`.

`options` **json**\
Options of the selected trigger for the flow.

`accountability` **string**\
The permission used during the flow. One of `$public`, `$trigger`, `$full`, or UUID of a role.

`date_created` **timestamp**\
Timestamp in ISO8601 when the flow was created.

`user_created` **many-to-one**\
The user who created the flow. Many-to-one to [users](/reference/system/users#the-users-object).

`operation` **string**\
UUID of the operation connected to the trigger in the flow.

```json
{
	"id": "2fab3b9d-0543-4b87-8a30-3c5ee66fedf1",
	"name": "My Flow",
	"icon": "bolt",
	"color": "#112233",
	"note": "Note for my flow",
	"status": "active",
	"trigger": "manual",
	"accountability": "$trigger",
	"date_created": "2022-05-11T13:14:52Z",
	"user_created": "12e62fd0-29c7-4fd3-b3d3-c7a39933e8af",
	"operation": "92e82998-e421-412f-a513-13701e83e4ce"
}
```

---

## List Flows

List all flows that exist in Directus.

### Query Parameters

Supports all [global query parameters](/reference/query).

### Returns

An array of up to [limit](/reference/query#limit) [data chains](#the-data-chain). If no items are available, data will
be an empty array.

### REST API

```
GET /flows
SEARCH /flows
```

[Learn more about SEARCH ->](/reference/introduction#search-http-method)

### GraphQL

```
POST /graphql/system
```

```graphql
type Query {
	flows: [directus_flows]
}
```

##### Example

```graphql
query {
	flows {
		id
		name
		status
	}
}
```

---

## Retrieve a flow

List an existing flow by primary key.

### Query Parameters

Supports all [global query parameters](/reference/query).

### Returns

Returns the requested [data chain](#the-data-chain).

### REST API

```
GET /flows/:id
```

##### Example

```
GET /flows/2fc325fb-299b-4d20-a9e7-a34349dee8b2
```

### GraphQL

```
POST /graphql/system
```

```graphql
type Query {
	flows_by_id(id: ID!): directus_flows
}
```

##### Example

```graphql
query {
	flows_by_id(id: "2fc325fb-299b-4d20-a9e7-a34349dee8b2") {
		id
		name
		status
	}
}
```

---

## Create a Flow

Create a new flow.

### Query Parameters

Supports all [global query parameters](/reference/query).

### Request Body

A partial [data chain](#the-data-chain).

### Returns

Returns the [data chain](#the-data-chain) for the created flow.

### REST API

```
POST /flows
```

##### Example

```json
// POST /flows

{
	"name": "My Flow",
	"status": "active",
	"trigger": "manual"
}
```

### GraphQL

```
POST /graphql/system
```

```graphql
type Mutation {
	create_flows_item(data: create_directus_flows_input!): directus_flows
}
```

##### Example

```graphql
mutation {
	create_flows_item(data: { name: "My Flow", status: "active", trigger: "manual" }) {
		id
		name
		status
	}
}
```

---

## Create Multiple Flows

Create multiple new flows.

### Query Parameters

Supports all [global query parameters](/reference/query).

### Request Body

An array of partial [data chains](#the-data-chain).

### Returns

Returns the [data chain](#the-data-chain) for the created flow.

### REST API

```
POST /flows
```

##### Example

```json
// POST /flows

[
	{
		"name": "My Flow",
		"status": "active",
		"trigger": "manual"
	},
	{
		"name": "Another Flow",
		"status": "active",
		"trigger": "webhook"
	}
]
```

### GraphQL

```
POST /graphql/system
```

```graphql
type Mutation {
	create_flows_items(data: [create_directus_flows_input!]!): [directus_flows]
}
```

##### Example

```graphql
mutation {
	create_flows_items(
		data: [
			{
				"name": "My Flow",
				"status": "active",
				"trigger": "manual"
			},
			{
				"name": "Another Flow",
				"status": "active",
				"trigger": "webhook"
			}
		]
	) {
		id
		name
		status
	}
}
```

---

## Update a Flow

Update an existing flow.

### Query Parameters

Supports all [global query parameters](/reference/query).

### Request Body

A partial [data chain](#the-data-chain).

### Returns

Returns the [data chain](#the-data-chain) for the updated flow.

### REST API

```
PATCH /flows/:id
```

##### Example

```json
// PATCH /flows/2fc325fb-299b-4d20-a9e7-a34349dee8b2

{
	"name": "My Updated Flow"
}
```

### GraphQL

```
POST /graphql/system
```

```graphql
type Mutation {
	update_flows_item(id: ID!, data: update_directus_flows_input): directus_flows
}
```

##### Example

```graphql
mutation {
	update_flows_item(id: "2fc325fb-299b-4d20-a9e7-a34349dee8b2", data: { name: "My Updated Flow" }) {
		id
		name
	}
}
```

---

## Update Multiple Flows

Update multiple existing flows.

### Query Parameters

Supports all [global query parameters](/reference/query).

### Request Body

`keys` **Required**\
Array of primary keys of the flows you'd like to update.

`data` **Required**\
Any of [the data chain](#the-data-chain)'s properties.

### Returns

Returns the [data chains](#the-data-chain) for the updated flows.

### REST API

```
PATCH /flows
```

##### Example

```json
// PATCH /flows

{
	"keys": ["3f2facab-7f05-4ee8-a7a3-d8b9c634a1fc", "7259bfa8-3786-45c6-8c08-cc688e7ba229"],
	"data": {
		"status": "inactive"
	}
}
```

### GraphQL

```
POST /graphql/system
```

```graphql
type Mutation {
	update_flows_items(ids: [ID!]!, data: update_directus_flows_input): [directus_flows]
}
```

##### Example

```graphql
mutation {
	update_flows_items(
		ids: ["3f2facab-7f05-4ee8-a7a3-d8b9c634a1fc", "7259bfa8-3786-45c6-8c08-cc688e7ba229"]
		data: { status: "inactive" }
	) {
		id
		name
		status
	}
}
```

---

## Delete a Flow

Delete an existing flow.

### Returns

Empty body.

### REST API

```
DELETE /flows/:id
```

##### Example

```
DELETE /flows/12204ee2-2c82-4d9a-b044-2f4842a11dba
```

### GraphQL

```
POST /graphql/system
```

```graphql
type Mutation {
	delete_flows_item(id: ID!): delete_one
}
```

##### Example

```graphql
mutation {
	delete_flows_item(id: "12204ee2-2c82-4d9a-b044-2f4842a11dba") {
		id
	}
}
```

---

## Delete Multiple Flows

Delete multiple existing flows.

### Request Body

An array of flows primary keys

### Returns

Empty body.

### REST API

```
DELETE /flows
```

##### Example

```json
// DELETE /flows
["25821236-8c2a-4f89-8fdc-c7d01f35877d", "02b9486e-4273-4fd5-b94b-e18fd923d1ed", "7d62f1e9-a83f-407b-84f8-1c184f014501"]
```

### GraphQL

```
POST /graphql/system
```

```graphql
type Mutation {
	delete_flows_items(ids: [ID!]!): delete_many
}
```

##### Example

```graphql
mutation {
	delete_flows_items(
		ids: [
			"25821236-8c2a-4f89-8fdc-c7d01f35877d"
			"02b9486e-4273-4fd5-b94b-e18fd923d1ed"
			"7d62f1e9-a83f-407b-84f8-1c184f014501"
		]
	) {
		ids
	}
}
```

## Flow with GET webhook trigger

Start a flow with GET webhook trigger.

### Returns

Result of the flow, if any.

### REST API

```
GET /flows/trigger/:flow_uuid
```

##### Example

```json
// GET /flows/trigger/202a940b-a00b-47df-b832-369c53f13122
// Payload here
```

## Flow with POST webhook trigger

Start a flow with POST webhook trigger.

### Request Body

Payload for the POST request.

### Returns

Result of the flow, if any.

### REST API

```
POST /flows/trigger/:flow_uuid
```

##### Example

```json
// POST /flows/trigger/202a940b-a00b-47df-b832-369c53f13122
// Payload here
```
