For the complete documentation index, see llms.txt. This page is also available as Markdown.

Node Type Policy

Operations about node type availability policies

Retrieve the instance node type policy

get
/node-type-policies/instance

Returns the composed instance-scope policy: its default action and the rules of every attached policy document in evaluation order. An instance that was never configured reports scopeId: null, no rules, defaultAction: allow, and version: 0.

Authorizations
X-N8N-API-KEYstringRequired
Responses
200

Operation successful.

application/json
scopeIdstring · nullableRequired
defaultActionstring · enumRequiredPossible values:
versionintegerRequired
get/node-type-policies/instance
GET /api/v1/node-type-policies/instance HTTP/1.1
X-N8N-API-KEY: YOUR_API_KEY
Accept: */*
{
  "scopeId": "text",
  "rules": [
    {
      "id": "text",
      "action": "allow",
      "selector": {
        "kind": "name",
        "value": "text"
      }
    }
  ],
  "defaultAction": "allow",
  "version": 1
}

Replace the instance node type policy

put
/node-type-policies/instance

Sets the instance default action and replaces the rules of its single policy document, creating both on first write. version must equal the version last read; a stale value is rejected with 409. Rule ids must be unique within the list.

Authorizations
X-N8N-API-KEYstringRequired
Body
defaultActionstring · enumRequiredPossible values:
versionintegerRequired
Responses
200

Operation successful.

application/json
scopeIdstring · nullableRequired
defaultActionstring · enumRequiredPossible values:
versionintegerRequired
put/node-type-policies/instance
PUT /api/v1/node-type-policies/instance HTTP/1.1
X-N8N-API-KEY: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 120

{
  "rules": [
    {
      "id": "text",
      "action": "allow",
      "selector": {
        "kind": "name",
        "value": "text"
      }
    }
  ],
  "defaultAction": "allow",
  "version": 1
}
{
  "scopeId": "text",
  "rules": [
    {
      "id": "text",
      "action": "allow",
      "selector": {
        "kind": "name",
        "value": "text"
      }
    }
  ],
  "defaultAction": "allow",
  "version": 1,
  "warnings": [
    {
      "ruleId": "text",
      "shadowedByRuleId": "text"
    }
  ]
}

Retrieve a project's node type policy

get
/node-type-policies/projects/{projectId}

Returns the project's own composed policy, not the result of combining it with the instance policy. A project that was never configured reports scopeId: null, no rules, defaultAction: allow, and version: 0.

Authorizations
X-N8N-API-KEYstringRequired
Path parameters
projectIdstringRequired

The ID of the project.

Responses
200

Operation successful.

application/json
scopeIdstring · nullableRequired
defaultActionstring · enumRequiredPossible values:
versionintegerRequired
get/node-type-policies/projects/{projectId}
GET /api/v1/node-type-policies/projects/{projectId} HTTP/1.1
X-N8N-API-KEY: YOUR_API_KEY
Accept: */*
{
  "scopeId": "text",
  "rules": [
    {
      "id": "text",
      "action": "allow",
      "selector": {
        "kind": "name",
        "value": "text"
      }
    }
  ],
  "defaultAction": "allow",
  "version": 1
}

Replace a project's node type policy

put
/node-type-policies/projects/{projectId}

Sets the project's default action and replaces the rules of its single policy document, creating both on first write. The delegate action is not accepted at project scope. version must equal the version last read; a stale value is rejected with 409, as is a project document that is shared with another scope.

Authorizations
X-N8N-API-KEYstringRequired
Path parameters
projectIdstringRequired

The ID of the project.

Body
defaultActionstring · enumRequiredPossible values:
versionintegerRequired
Responses
200

Operation successful.

application/json
scopeIdstring · nullableRequired
defaultActionstring · enumRequiredPossible values:
versionintegerRequired
put/node-type-policies/projects/{projectId}
PUT /api/v1/node-type-policies/projects/{projectId} HTTP/1.1
X-N8N-API-KEY: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 120

{
  "rules": [
    {
      "id": "text",
      "action": "allow",
      "selector": {
        "kind": "name",
        "value": "text"
      }
    }
  ],
  "defaultAction": "allow",
  "version": 1
}
{
  "scopeId": "text",
  "rules": [
    {
      "id": "text",
      "action": "allow",
      "selector": {
        "kind": "name",
        "value": "text"
      }
    }
  ],
  "defaultAction": "allow",
  "version": 1,
  "warnings": [
    {
      "ruleId": "text",
      "shadowedByRuleId": "text"
    }
  ]
}

List node type policy documents

get
/node-type-policies/policies

Returns a cursor-paginated list of reusable policy documents.

Authorizations
X-N8N-API-KEYstringRequired
Query parameters
limitnumber · max: 250Optional

The maximum number of items to return.

Default: 100Example: 100
cursorstringOptional

Paginate by setting the cursor parameter to the nextCursor attribute returned by the previous request's response. Default value fetches the first "page" of the collection. See pagination for more detail.

Responses
200

Operation successful.

application/json
nextCursorstring · nullableRequired
get/node-type-policies/policies
GET /api/v1/node-type-policies/policies HTTP/1.1
X-N8N-API-KEY: YOUR_API_KEY
Accept: */*
{
  "data": [
    {
      "id": "text",
      "kind": "text",
      "rules": [
        {
          "id": "text",
          "action": "allow",
          "selector": {
            "kind": "name",
            "value": "text"
          }
        }
      ],
      "version": 1,
      "updatedBy": "text",
      "createdAt": "2026-01-01T00:00:00.000Z",
      "updatedAt": "2026-01-01T00:00:00.000Z"
    }
  ],
  "nextCursor": "text"
}

Create a node type policy document

post
/node-type-policies/policies

Creates a reusable policy document that is not yet attached to any scope. Rule ids must be unique within the list. warnings lists rules that an earlier rule already shadows.

Authorizations
X-N8N-API-KEYstringRequired
Body
Responses
201

Operation successful.

application/json
post/node-type-policies/policies
POST /api/v1/node-type-policies/policies HTTP/1.1
X-N8N-API-KEY: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 84

{
  "rules": [
    {
      "id": "text",
      "action": "allow",
      "selector": {
        "kind": "name",
        "value": "text"
      }
    }
  ]
}
{
  "policy": {
    "id": "text",
    "kind": "text",
    "rules": [
      {
        "id": "text",
        "action": "allow",
        "selector": {
          "kind": "name",
          "value": "text"
        }
      }
    ],
    "version": 1,
    "updatedBy": "text",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "updatedAt": "2026-01-01T00:00:00.000Z"
  },
  "warnings": [
    {
      "ruleId": "text",
      "shadowedByRuleId": "text"
    }
  ]
}

Retrieve a node type policy document

get
/node-type-policies/policies/{policyId}
Authorizations
X-N8N-API-KEYstringRequired
Path parameters
policyIdstringRequired

The ID of the node type policy document.

Responses
200

Operation successful.

application/json
idstringRequired
kindstringRequired
versionintegerRequired
updatedBystringRequired
createdAtstring · date-timeRequired
updatedAtstring · date-timeRequired
get/node-type-policies/policies/{policyId}
GET /api/v1/node-type-policies/policies/{policyId} HTTP/1.1
X-N8N-API-KEY: YOUR_API_KEY
Accept: */*
{
  "id": "text",
  "kind": "text",
  "rules": [
    {
      "id": "text",
      "action": "allow",
      "selector": {
        "kind": "name",
        "value": "text"
      }
    }
  ],
  "version": 1,
  "updatedBy": "text",
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z"
}

Replace the rules of a node type policy document

put
/node-type-policies/policies/{policyId}

Replaces the document's whole rule list. version must equal the version last read; a stale value is rejected with 409. Every scope the document is attached to has its version bumped. A delegate rule is rejected when the document is attached to a project scope.

Authorizations
X-N8N-API-KEYstringRequired
Path parameters
policyIdstringRequired

The ID of the node type policy document.

Body
versionintegerRequired
Responses
200

Operation successful.

application/json
put/node-type-policies/policies/{policyId}
PUT /api/v1/node-type-policies/policies/{policyId} HTTP/1.1
X-N8N-API-KEY: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 96

{
  "rules": [
    {
      "id": "text",
      "action": "allow",
      "selector": {
        "kind": "name",
        "value": "text"
      }
    }
  ],
  "version": 1
}
{
  "policy": {
    "id": "text",
    "kind": "text",
    "rules": [
      {
        "id": "text",
        "action": "allow",
        "selector": {
          "kind": "name",
          "value": "text"
        }
      }
    ],
    "version": 1,
    "updatedBy": "text",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "updatedAt": "2026-01-01T00:00:00.000Z"
  },
  "warnings": [
    {
      "ruleId": "text",
      "shadowedByRuleId": "text"
    }
  ]
}

Delete a node type policy document

delete
/node-type-policies/policies/{policyId}

Deletes a policy document. A document that is still attached to a scope is rejected with 409; detach it first.

Authorizations
X-N8N-API-KEYstringRequired
Path parameters
policyIdstringRequired

The ID of the node type policy document.

Responses
204

Operation successful.

No content

delete/node-type-policies/policies/{policyId}
DELETE /api/v1/node-type-policies/policies/{policyId} HTTP/1.1
X-N8N-API-KEY: YOUR_API_KEY
Accept: */*

No content

Replace a scope's attached policy documents

put
/node-type-policies/scopes/{scopeId}/attachments

Replaces every attachment on a scope. scopeId comes from the scope's GET response once it has been written. Each policyId and each (isFloor, priority) pair must be unique within the list. Last write wins; the scope's version is bumped.

Authorizations
X-N8N-API-KEYstringRequired
Path parameters
scopeIdstringRequired

The ID of the node type policy scope.

Body
Responses
200

Operation successful.

application/json
versionintegerRequired
put/node-type-policies/scopes/{scopeId}/attachments
PUT /api/v1/node-type-policies/scopes/{scopeId}/attachments HTTP/1.1
X-N8N-API-KEY: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 65

{
  "attachments": [
    {
      "policyId": "text",
      "priority": 1,
      "isFloor": true
    }
  ]
}
{
  "attachments": [
    {
      "policyId": "text",
      "rules": [
        {
          "id": "text",
          "action": "allow",
          "selector": {
            "kind": "name",
            "value": "text"
          }
        }
      ],
      "priority": 1,
      "isFloor": true
    }
  ],
  "version": 1
}

Last updated

Was this helpful?