---
pageClass: page-reference
---
# Relations
> What data is linked to what other data. Allows you to assign authors to articles, products to sales, and whatever other
structures you can think of. [Learn more about Relationships](/concepts/relationships/).
[[toc]]
---
## The Relation Object
`id` **integer**\
Primary key of the relation.
`many_collection` **string**\
Collection on the "many" side of the relation.
`many_field` **string**\
Field on the "many" side of the relation.
`one_collection` **string**\
Collection on the "one" side of the relation.
`one_field` **string**\
Field on the "one" side of the relation.
`one_collection_field` **string**\
In Many-to-Any type fields, this holds the field in the many collection that holds the name of the "one" collection.
`one_allowed_collections` **string**\
In Many-to-Any type fields, this holds a csv of collection names the user is allowed to use through the m2a relation.
`junction_field` **string**\
For Many-to-Many type fields, this holds the name of the field that "links" a many-to-one to a one-to-many, creating a many-to-many.
```json
{
"id": 13,
"many_collection": "articles",
"many_field": "featured_image",
"one_collection": "directus_files",
"one_field": null,
"one_collection_field": null,
"one_allowed_collections": null,
"junction_field": null
}
```
---
## List relations
List all relations that exist in Directus.
::: tip Permissions
The data returned in this endpoint will be filtered based on the user's permissions. For example, relations that apply
to a collection that the current user doesn't have access to are stripped out.
:::
### Query Parameters
Supports all [global query parameters](/reference/api/query).
### Returns
An array of up to [limit](/reference/api/query/#limit) [relation objects](#the-relation-object). If no items are
available, data will be an empty array.
```
GET /relations
```
```json
// Response
{
"data": [
{
"id": 13,
"many_collection": "articles",
"many_field": "featured_image",
"one_collection": "directus_files",
"one_field": null,
"one_collection_field": null,
"one_allowed_collections": null,
"junction_field": null
},
{...},
{...}
]
}
```
---
## Retrieve a relation
List an existing relation by primary key.
### Query Parameters
Supports all [global query parameters](/reference/api/query).
### Returns
Returns the requested [relation object](#the-relation-object).
```
GET /relations/:id
```
```json
// Response
{
"data": {
"id": 13,
"many_collection": "articles",
"many_field": "featured_image",
"one_collection": "directus_files",
"one_field": null,
"one_collection_field": null,
"one_allowed_collections": null,
"junction_field": null
}
}
```
---
## Create relation
Create one or more new relation(s).
### Query Parameters
Supports all [global query parameters](/reference/api/query).
### Request Body
A partial [relation object](#the-relation-object) or an array of partial [relation objects](#the-relation-object).
### Returns
Returns the [relation object](#the-relation-object) for the created relation.
```
POST /relations
```
```json
// Request
{
"many_collection": "articles",
"many_field": "featured_image",
"one_collection": "directus_files"
}
```
```json
// Response
{
"data": {
"id": 13,
"many_collection": "articles",
"many_field": "featured_image",
"one_collection": "directus_files",
"one_field": null,
"one_collection_field": null,
"one_allowed_collections": null,
"junction_field": null
}
}
```
---
## Update relation
Update an existing relation.
### Query Parameters
Supports all [global query parameters](/reference/api/query).
### Request Body
A partial [relation object](#the-relation-object).
### Returns
Returns the [relation object](#the-relation-object) for the created relation.
```
PATCH /relations/:id
```
```json
// Request
{
"one_field": "articles"
}
```
```json
// Response
{
"data": {
"id": 13,
"many_collection": "articles",
"many_field": "featured_image",
"one_collection": "directus_files",
"one_field": "articles",
"one_collection_field": null,
"one_allowed_collections": null,
"junction_field": null
}
}
```
---
## Delete relation
Delete an existing relation.
### Returns
Empty body.
```
DELETE /relations/:id
```
```json
// Empty Response
```
---
## Delete Multiple relations
Delete multiple existing relations.
### Request Body
An array of relation primary keys
### Returns
Empty body.
```
DELETE /relations
```
```json
// Request
[15, 251, 810]
```
```json
// Empty Response
```
---