Resources · n8n integration

Cortex n8n integrationAutomate Cortex with n8n.

Cortex sits between your detection tools and the analysis you still run by hand. The Cortex n8n integration exposes 4 operations across 3 resources: Analyzer, Responder and Job. No Cortex trigger node exists, so a workflow starts on a schedule or a webhook, then runs the analysis and reads the report.

Verified Trustpilot reviews · AI, automation & growth agency

Why automate

What does the Cortex n8n integration actually do?

The Cortex node applies an analyzer or a responder to a given entity on a Cortex server you host yourself. An analyzer takes an observable, the value you want checked, and returns a verdict. A responder takes an entity and acts on it. Both run as jobs on the server, and the node can pull a job and its report back into the workflow afterwards.

Start with the case that costs the most attention: every observable checked before a human looks at it. A Schedule Trigger reads pending rows from Postgres, the node runs analyzer.execute on each one, and the verdict lands in a Slack channel with the observable value attached. The analyst opens the channel, not the console.

Containment that does not wait for the morning shift is the second pattern. Once a verdict comes back, an IF node routes the bad ones to responder.execute, which passes the entity to the responder you picked. The entity travels as JSON, so whatever produced it earlier in the workflow can be reused directly.

An archive you can actually search closes the loop. Analysis jobs finish on the server, and job.report returns the report for a job ID. Append it to Google Sheets and three months later you can answer what was checked and what came back, without opening Cortex at all. One public template, 1602, pairs the Cortex node with the TheHive node to analyze emails; another, 809, does nothing but fetch job details.

Where the node stops is easy to state. It covers analyzers, responders and job details, and nothing else of the Cortex API. Anything outside those 4 operations goes through the HTTP Request node, which calls any endpoint of the API and reuses the same credential through predefined authentication. There is also no Cortex trigger, so the workflow always starts somewhere else.

If you are weighing the platform rather than the node, the n8n review covers self-hosting and cost, and the n8n training walks through expressions and error handling on real workflows.

Connect

How do you connect Cortex to n8n?

  1. 01

    Install Cortex on your server

    Cortex is software you run yourself, so the first step happens outside n8n. Install it on a server that your n8n instance can reach over the network, and note the address it answers on. The credential form later expects that address in the form http://<your_server_address>:9001/, which is the default shown in the field.

  2. 02

    Generate an API key in Cortex

    Authentication uses a single API key, and Cortex issues it from its own interface. Generate the key for the account whose analyzers and responders the workflow should use, because a job runs with the permissions attached to that key. Copy the value straight away, then keep it out of the workflow itself: it belongs in the credential, not in a node field.

  3. 03

    Create the Cortex credential in n8n

    In n8n, open the Credentials menu and create a Cortex credential, which is the stored pair n8n uses to authenticate. Paste the key into API Key and the server address into Cortex Instance. A credential is created once and offered in the dropdown of every Cortex node afterwards, so a second workflow needs no new setup.

Actions

What can the Cortex node do?

The Cortex node exposes 4 operations across 3 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.

Resources × operations matrix
ResourceGetExecuteReport
Analyzer✓
Job✓✓
Responder✓

Analyzer

1 operation
01

Execute an analyzer

analyzer.execute

What you see in n8n

Notes & use cases

Runs one analyzer against one observable and returns the job that Cortex created for it.

Key parameters

  • Analyzer Type Name or ID: picked from the list the node loads from your server, or set with an expression like {{ $json.analyzer }}.
  • Observable Type Name or ID: the type of value being submitted, from a similar list.
  • Observable Value: the value itself.
  • Put Output File in Field: the name of the output binary field the file goes into.
  • TLP: the sharing level of the analyzed observable, from 0 White to 3 Red.
  • Force: bypasses the cache when a value was already analyzed and you want a fresh run.
Use cases
checking each observable pulled from a queue before it reaches a human.

Job

2 operations
02

Get a job

job.get

What you see in n8n

Notes & use cases

Returns the details Cortex holds for one job, identified by its ID.

Key parameters

  • Job ID: the ID of the job, typically {{ $json.id }} carried over from the node that started it.
Use cases
a loop that waits on a slow analyzer. Execution starts the job, a Wait node pauses, this operation reads the job back, and an IF node decides whether to go round again or move on. It is the cheap call of the two job operations, since it answers where the job stands rather than what it found.
03

Get a job report

job.report

What you see in n8n

Notes & use cases

Pulls back what the analyzer or responder produced once the job is done.

Key parameters

  • Job ID: the same identifier, reused after the job has finished rather than while it runs.
Use cases
archiving. The report is the part worth keeping, so workflows usually send it to a database or a spreadsheet, or extract a single field from it to build a short summary message. Call it too early on a long analysis and there is nothing to store yet, which is what the Wait loop above is for.

Responder

1 operation
04

Execute a responder

responder.execute

What you see in n8n

Notes & use cases

Hands an entity to a responder so Cortex acts on it instead of only describing it.

Key parameters

  • Responder Type Name or ID: which responder to run, from the list or from an expression.
  • Entity Type Name or ID: the data type of the object you are passing.
  • Entity Object (JSON): the object itself, as JSON.
  • JSON Parameters: switches between one JSON object and separate attributes entered through Parameters.
Use cases
the step after a bad verdict, where the entity that came out of the analysis goes straight into the response without anyone retyping it.
Need help

Need help automating Cortex with n8n?

A person reads every message.

FAQ

Cortex and n8n, the questions that come up next

01Is the Cortex n8n integration free in n8n?
Yes on the n8n side. The Cortex node ships with n8n, so there is nothing to install and no add-on to buy, and it behaves the same on n8n Cloud, the hosted offer run by n8n, as on an instance you host yourself with Docker or npm. A workflow built on one runs unchanged on the other. What sits on the other side of the credential is separate: Cortex is software you install on your own server, which is a prerequisite for the node to have anything to talk to. Cost and licensing on that side are not covered here.
02What credentials do you need to connect Cortex to n8n?
One API key, plus the address of your Cortex server. Cortex supports API key authentication only, so there is no OAuth dance and no scope list to work through. The credential form asks for two things: the key itself, and the Cortex Instance URL, a field that arrives pre-filled with a placeholder pointing at port 9001 of your own server. Both go into a single credential stored in the Credentials menu of n8n, and every Cortex node in every workflow picks it from a dropdown afterwards. Access is whatever the account behind that key can do, so a key with narrow rights limits which analyzers and responders the workflow can run.
03What are the limits of the Cortex node in n8n?
It is a narrow node, on purpose. Four operations across three resources: run an analyzer, run a responder, read a job, read a job report. Anything else in the Cortex API has no dedicated operation, and the way round that is the HTTP Request node, which calls any endpoint and reuses the same credential through predefined authentication. The node also has no trigger, so nothing on the Cortex side can start a workflow by itself. And because analyzers run as jobs rather than returning an answer on the spot, a long analysis needs a wait step before the report is worth fetching.
04Can an n8n workflow react to a Cortex job in real time?
Not from Cortex itself, because there is no Cortex trigger node. A workflow that involves Cortex always starts somewhere else. Three options cover almost everything. A Schedule Trigger fires at a fixed interval and works through whatever is pending. A Webhook node gives n8n a URL, an address a third-party service calls when something happens, so the tool that detects an observable can push it straight in. Or the trigger of another tool starts the chain, and the Cortex node is one step further down it. Once the analyzer job is running, the job operations tell you where it stands.
05n8n or Make for Cortex?
It depends on where the data is allowed to sit. Cortex runs on your own server, and n8n can run next to it, self-hosted with Docker or npm, so the observables never leave infrastructure you control. Make is hosted, with no self-hosting option, and bills per operation, which changes the arithmetic when a workflow analyzes many observables one at a time. Make is often quicker to read for someone who does not build automations daily. So: Make for a small hosted flow with few operations, n8n when the analysis has to stay in house or the volume makes per-operation pricing hurt.