Advanced
This guide covers advanced Directus features in n8n using raw CRUD operations, which give you full access to Directus's native filter syntax, query parameters, and complex query capabilities.
← Back to Directus + n8n Overview
Raw CRUD Operations
The Directus node provides raw versions of all CRUD operations that allow you to use Directus's native JSON syntax for filters, query parameters, and data manipulation. These operations give you full control over the API request.
Available Raw Operations
Quick reference of all available raw operations organized by resource type:
| Resource | Operation | Description |
|---|---|---|
| Items | Create (Raw JSON) | Create items with full JSON control |
| Items | Get (Raw JSON) | Retrieve a single item with custom query parameters |
| Items | Get Many (Raw JSON) | Retrieve multiple items with advanced filters and query parameters |
| Items | Update (Raw JSON) | Update items with complex data structures |
| Users | Get (Raw JSON) | Retrieve a single user with custom query parameters |
| Users | Get Many (Raw JSON) | Retrieve multiple users with advanced filters and query parameters |
| Users | Update (Raw JSON) | Update users with complex data structures |
| Files | Get (Raw JSON) | Retrieve a single file with custom query parameters |
| Files | Get Many (Raw JSON) | Retrieve multiple files with advanced filters and query parameters |
| Files | Update (Raw JSON) | Update files with complex data structures |
_and, _or), relational field filtering, advanced query parameters (aggregation, search, etc.), or full control over the JSON payload structure.Using Raw Operations
Raw operations work similarly to their standard counterparts, but instead of using the node's form fields, you provide data as a JSON object: the JSON Data field for Create/Update, or the Query Parameters field for Get/Get Many.
Setting Up a Raw Operation
- Add a Directus node to your workflow
- Set Resource to Item, User, or File
- Select a Raw JSON operation (e.g., "Get Many (Raw JSON)", "Create (Raw JSON)")
- For Items operations, select the Collection
- Enter your data in the JSON Data field (Create/Update) or the Query Parameters field (Get/Get Many)
- For Get and Update operations, provide the Item ID if needed
Get Many (Raw JSON)
Retrieve items with advanced filtering and query parameters. Get Many (Raw JSON) returns one page of results from the query JSON as written.
{
"filter": {
"status": {"_eq": "published"},
"views": {"_gt": 1000}
},
"fields": "title,author.name,views",
"sort": "-date_created",
"limit": 10
}
limit controls that single request:
- Omit
limitto get Directus's default page (usually 100), not the whole collection. - Set
"limit": 10to get 10 rows. - Set
"limit": -1to request Directus's maximum allowed page size. IfQUERY_LIMIT_MAXis set (for example,5), you still only get that many rows. This is not a dump of the whole collection.
To process a large filtered set in chunks, keep limit and offset in the query and use n8n's Split In Batches node.
If you want all results and you don't need a custom filter, use standard Get Many with Return All.
Get (Raw JSON)
Retrieve a single item with custom query parameters:
{
"fields": "title,content,author.name,author.email,comments.text"
}
Create (Raw JSON)
Create items with full control over the JSON structure:
{
"title": "My New Post",
"content": "Post content here",
"status": "published",
"author": "author-uuid-here",
"categories": ["category-uuid-1", "category-uuid-2"]
}
Update (Raw JSON)
Update items with complex data structures:
{
"title": "Updated Title",
"status": "archived",
"metadata": {
"tags": ["updated", "archived"],
"notes": "Item has been archived"
}
}
Using Filters with Raw Operations
Raw operations allow you to use Directus's complete filter syntax. Specify filters in the filter parameter of the Query Parameters field (Get Many).
Example: Complex filter with logical operators
{
"filter": {
"_and": [
{"status": {"_eq": "published"}},
{
"_or": [
{"category": {"_eq": "tutorial"}},
{"category": {"_eq": "guide"}}
]
},
{"views": {"_gt": 100}}
]
}
}
Example: Relational filtering
{
"filter": {
"author": {
"name": {"_eq": "John Doe"}
},
"comments": {
"_some": {
"status": {"_eq": "approved"}
}
}
}
}
Query Parameters
Get (Raw JSON) and Get Many (Raw JSON) support all Directus query parameters. Include them in the Query Parameters field alongside filters. If you omit limit on Get Many (Raw JSON), Directus returns its default page (usually 100), not the whole collection.
Common query parameters:
{
"fields": "title,author.name,views",
"sort": "-date_created",
"limit": 10,
"offset": 0
}
Search:
{
"search": "directus tutorial"
}
Aggregation:
{
"aggregate": {
"count": "id",
"sum": "views",
"avg": "rating"
},
"groupBy": "category"
}
Working with Relations
When using Create (Raw JSON) or Update (Raw JSON), you can include related data directly in your JSON:
{
"title": "My Post",
"author": "author-uuid-here",
"categories": ["category-uuid-1", "category-uuid-2"],
"comments": [
{"text": "Great post!", "user": "user-uuid-here"}
]
}
Using Expressions in Raw Operations
You can use n8n expressions in your raw JSON data for dynamic queries:
{
"filter": {
"status": {"_eq": "{{ $json.status }}"},
"views": {"_gt": {{ $json.min_views }}}
},
"fields": "{{ $json.requested_fields }}",
"sort": "-{{ $json.sort_field }}",
"limit": {{ $json.limit }}
}
Performance Tips
- Select only the fields you need: Use the
fieldsparameter to reduce data transfer - Filter in Directus: Use the
filterparameter rather than loading extra rows into n8n - Paginate in chunks: Use
limitandoffsetfor large datasets, then process batches with n8n's Split In Batches node. Get Many (Raw JSON) returns one page of results. - Return All is all-at-once: Standard Get Many with Return All returns all results into n8n in one node run. Use it when you need the rest of a set and you don't need a custom filter. Do not use it to dump a large collection, or when you need to write out rows in chunks.
Example:
{
"fields": "id,title,status",
"filter": {
"status": {"_eq": "published"},
"date_created": {"_gte": "$NOW(-30 days)"}
},
"limit": 100
}
Next Steps
- ← Back to Overview Return to the integration overview
- Learn about Directus Actions → Standard Get Many, Return All, and other operations
- Learn about Directus Triggers → Automation workflows
Get once-a-month release notes & real‑world code tips...no fluff. 🐰