n8n node for UiPath Orchestrator API - with Dynamic Load Options & Custom API Support
npm install n8n-nodes-uipath-orchestratorhttps://cloud.uipath.com/identity_/connect/token
https:///identity/connect/token
bash
npm install n8n-nodes-uipath-orchestrator
`
$3
1. Open n8n interface
2. Go to Settings โ Community Nodes
3. Search for n8n-nodes-uipath-orchestrator
4. Click Install
5. Restart n8n
---
๐ Credentials Setup
$3
1. In n8n, go to Credentials โ New โ UiPath OAuth2 API
2. Fill in the following fields:
| Field | Description | Example | Required |
|-------|-------------|---------|----------|
| Authentication Mode | Choose cloud or on-premise (external app) authentication flow | UiPath Cloud / On-Premise / External App | โ
Yes |
| Tenant Name | UiPath instance domain | cloud.uipath.com | โ
Yes |
| Client ID | OAuth2 client ID from UiPath | xxxxxxxx-xxxx-xxxx | โ
Yes |
| Client Secret | OAuth2 client secret (kept secret) | * | โ
Yes |
| Account Logical Name | Your UiPath account name | myaccount | โ
Yes |
| Tenant Logical Name | Your tenant name | DefaultTenant | โ
Yes |
| Organization Unit ID | (Optional) Folder/OU ID for scoping | 12345 | โ No |
| API Base URL | (Optional) Custom API endpoint | https://my-uipath.internal/... | โ No |
| OAuth Token URL | (Optional) Custom OAuth endpoint | https://custom-auth.com/token | โ No |
| Additional Scopes | (Optional) Custom OAuth scopes | OR.Settings OR.Monitoring | โ No |
| Server URL (On-Premise) | (On-Premise only) Base server URL for external app authentication | https://orchestrator.mycompany.com | โ No |
$3
1. Log in to your UiPath Orchestrator instance
2. Go to Administration โ API Access
3. Create an Application and get:
- Client ID
- Client Secret
- Tenant name (from instance URL: https://)
- Account logical name (visible in settings)
---
๐ Available Operations
$3
Manage UiPath Orchestrator folders and organizational structure. Complete API coverage with all 14 operations.
| Operation | Description | Parameters |
|-----------|-------------|-----------|
| Get | Retrieve a specific folder by key | Folder Key (UUID), optional: Expand, Filter, Select, Order By |
| Get All | List all folders for current user | Take (max 100), Skip (offset) |
| Delete | Delete a folder | Folder Key |
| Update | Update folder name and description | Folder Key, Name, Description |
| Assign Users | Assign users to folders with roles | User IDs (JSON), Folder Assignments (JSON with roles) |
| Assign Machines | Assign machines to folders | Folder IDs (JSON), Machine IDs (JSON) |
| Assign Domain User | Assign directory users/groups to folders | Username (AD user/group), Folder Assignments (JSON) |
| Get Users For Folder | List users with folder access | Folder Key, Include Inherited (bool), optional: Include Alerts, Top, Skip |
| Get All Roles For User | Get user's folder permissions | Username, Take, Skip, optional: Type, Search Text |
| Get Machines For Folder | List machines assigned to folder | Folder Key, optional: Top, Skip |
| Get Subfolders With Assigned Machine | View machine assignments across folder tree | Root Folder ID, optional: Machine ID, Top, Skip |
| Get Move Folder Machines Changes | Preview machine changes when moving folder | Folder ID, Target Parent ID |
| Toggle Folder Machine Inherit | Control machine propagation to subfolders | Folder ID, Inherit Machines (bool) |
| Update Machines To Folder Associations | Add/remove machine associations | Folder ID, Machine IDs To Add (JSON), Machine IDs To Remove (JSON) |
Coverage: 14/14 Operations - 100% โ
Example: Assign Users to Folder
`
Resource: Folders
Operation: Assign Users
User IDs: [1, 2, 3]
Folder Assignments: [{"FolderId": 1, "RoleIds": [1]}]
`
Example: Get Users For Folder
`
Resource: Folders
Operation: Get Users For Folder
Folder Key: 550e8400-e29b-41d4-a716-446655440000
Include Inherited: true
`
Advanced Workflows:
1. Set Up New Folder โ Assign Users โ Assign Machines โ Verify Setup
2. Audit Permissions โ Get All Roles For User or Get Users For Folder
3. Move Folder with Impact Analysis โ Get Move Folder Machines Changes โ Verify Results
4. Batch Machine Updates โ Update Machines To Folder Associations
๐ Full Documentation: See FOLDERS_OPERATIONS_v1.1.0.md for comprehensive operation reference with examples.
---
$3
Search and manage users, groups, and directory information.
| Operation | Description | Parameters |
|-----------|-------------|-----------|
| Get Domains | List available directory domains | (none) |
| Get Directory Permissions | Get user permissions in directory | Username |
| Search Users and Groups | Search for users/groups in directory | Search Context (All/Users/Groups/Robots/ExternalApps), Domain, Prefix |
Example: Search Users
`
Resource: DirectoryService
Operation: Search Users and Groups
Search Context: Users
Domain: ACME
Prefix: john
`
---
$3
View and manage RPA processes/releases.
| Operation | Description | Parameters |
|-----------|-------------|-----------|
| Get All | List all available processes | Take (max 100), Skip (offset) |
Example: List Processes
`
Resource: Processes
Operation: Get All
Take: 50
Skip: 0
`
---
$3
Monitor, start, stop, manage, and control RPA job executions.
| Operation | Description | Parameters |
|-----------|-------------|-----------|
| Export | Export jobs data to CSV | Filter (OData), Order By (OData) |
| Get | Get details of a specific job | Job ID (numeric ID) |
| Get All | List all jobs with pagination | Take (max 100), Skip (offset) |
| Restart Job | Restart a stopped job | Job ID (numeric ID) |
| Resume Job | Resume a paused job | Job Key (UUID) |
| Start Jobs | Execute one or more jobs | Release Key, Strategy (JobsCount/Specific/All), No. of Robots, Input arguments, Robot IDs |
| Stop Jobs | Terminate one or more jobs | Job ID, Stop Strategy (SoftStop/Kill) |
| Validate Job | Validate job parameters before starting | Release Key, Input Arguments (JSON) |
Example: Start a Job
`
Resource: Jobs
Operation: Start Jobs
Release Key: f3c1a8f0-e2b9-4c5d-9e3f-7a2c5b8d1f4e
Strategy: JobsCount
No. of Robots: 2
Input Arguments: {"param1": "value1"}
`
Example: Restart Failed Job
`
Resource: Jobs
Operation: Restart Job
Job ID: 12345
`
Example: Validate Parameters Before Starting
`
Resource: Jobs
Operation: Validate Job
Release Key: f3c1a8f0-e2b9-4c5d-9e3f-7a2c5b8d1f4e
Input Arguments: {"param1": "value1", "param2": 123}
`
Example: Export Failed Jobs Report
`
Resource: Jobs
Operation: Export
Filter: State eq 'Failed'
Order By: StartTime desc
`
Example: Get All Jobs
`
Resource: Jobs
Operation: Get All
Take: 20
Skip: 0
`
See JOBS_OPERATIONS_v1.0.4.md for detailed documentation on all Job operations.
---
---
$3
Retrieve and export Orchestrator audit/event logs.
| Operation | Description | Parameters |
|-----------|-------------|-----------|
| Get All | List audit log entries | Take, Skip, Filter (OData) |
| Get Details | Get details for a specific audit log entry | AuditLog ID |
| Export | Export audit logs (CSV) | Filter, Order By |
Example: Export Audit Logs
`
Resource: AuditLogs
Operation: Export
Filter: "Category eq 'Authentication'"
Order By: TimeStamp desc
`
---
$3
Manage credentials, secrets, and global assets.
| Operation | Description | Parameters |
|-----------|-------------|-----------|
| Get All | List all assets | Take (max 100), Skip (offset) |
Example: List Assets
`
Resource: Assets
Operation: Get All
Take: 100
`
---
$3
Work with UiPath Bucket storage for file operations.
| Operation | Description | Parameters |
|-----------|-------------|-----------|
| List Files | List files in a bucket | Bucket ID, Prefix (optional path filter), Take Hint (max 1000) |
Example: List Bucket Files
`
Resource: Buckets
Operation: List Files
Bucket ID: my-bucket-123
Prefix: /documents/
Take Hint: 500
`
---
$3
Manage queue items and transactions for workload distribution.
| Operation | Description | Parameters |
|-----------|-------------|-----------|
| Add Queue Item | Add a new item to a queue | Queue Name, Item Data (JSON), Priority, Reference (optional) |
| Bulk Add Queue Items | Add multiple items to a queue | Queue Name, Items (JSON array) |
| Get All Queue Items | List queue items | QueueName, Filter (OData), Take, Skip |
| Start Transaction | Start processing a queue item | Queue Name, Robot ID (optional) |
| Get Transaction | Retrieve transaction details | Transaction ID |
| Set Transaction Result | Mark transaction as Success/Failed | Queue Item ID, Transaction Status, Output Data, Error Type, Error Reason |
| Add Comment | Add comment to a queue item | Queue Item ID, Comment |
| Get Events | Get events for a queue item | Queue Item ID |
Example: Add Queue Item
`
Resource: Queues
Operation: Add Queue Item
Queue Name: InvoiceQueue
Item Data: {"Invoice": "INV-001", "Amount": 1000}
Priority: High
Reference: REF-2025-001
`
Example: Bulk Add Queue Items
`
Resource: Queues
Operation: Bulk Add Queue Items
Queue Name: InvoiceQueue
Items: [{"Invoice":"INV-002"},{"Invoice":"INV-003"}]
`
Example: Set Transaction Result
`
Resource: Queues
Operation: Set Transaction Result
Queue Item ID: 12345
Transaction Status: Success
Output Data: {"ProcessedAmount": 1000}
`
---
$3
Make custom API requests to any UiPath Orchestrator endpoint - perfect for advanced use cases, undocumented endpoints, or new API features not yet supported by predefined operations.
#### Features
โ
Full HTTP Method Support: GET, POST, PUT, PATCH, DELETE
โ
Flexible Query Parameters: UI builder or JSON format for OData queries
โ
Custom Headers: Add any headers (X-UIPATH-OrganizationUnitId, etc.)
โ
Request Body: JSON body for POST/PUT/PATCH operations
โ
Auto OData Unwrapping: Automatically extracts .value from OData responses
โ
No Limitations: Access any endpoint in the UiPath Orchestrator API
#### Quick Example: Get Custom Entity
`
Resource: Custom API Call
Operation: Make Custom API Request
HTTP Method: GET
Endpoint Path: /odata/Organizations
Query Parameters (JSON):
{
"$filter": "IsActive eq true",
"$top": 50,
"$orderby": "Name asc"
}
`
#### Example: Create Custom Queue Item
`
Resource: Custom API Call
Operation: Make Custom API Request
HTTP Method: POST
Endpoint Path: /odata/QueueItems
Body:
{
"Name": "CustomWorkItem",
"Priority": "High",
"SpecificContent": {
"InvoiceNumber": "INV-2025-001",
"Amount": 1500.00,
"Customer": "Acme Corp"
}
}
`
#### Example: Call OData Function with Parameters
`
Resource: Custom API Call
Operation: Make Custom API Request
HTTP Method: GET
Endpoint Path: /odata/Jobs/UiPath.Server.Configuration.OData.GetJobsByRobotKey(robotKey='ABC123')
Query Parameters (JSON):
{
"$filter": "State eq 'Successful'",
"$top": 10,
"$select": "Id,StartTime,EndTime,State"
}
`
#### Example: Advanced OData Query with Custom Headers
`
Resource: Custom API Call
Operation: Make Custom API Request
HTTP Method: GET
Endpoint Path: /odata/Jobs
Query Parameters (JSON):
{
"$filter": "CreationTime ge 2025-01-01T00:00:00Z and State eq 'Successful'",
"$expand": "Robot($select=Name),Release($select=ProcessKey)",
"$select": "Id,State,StartTime,EndTime",
"$orderby": "StartTime desc",
"$top": 100
}
Headers (JSON):
{
"X-UIPATH-OrganizationUnitId": "12345"
}
`
#### Common Use Cases
- ๐ Access New API Endpoints: Use features before official node support
- ๐ Complex OData Queries: Build advanced filters with multiple conditions
- ๐ฏ Custom Integrations: Connect to organization-specific endpoints
- ๐งช API Testing: Test endpoints before building workflows
- ๐ง Undocumented Features: Access beta or internal APIs
#### Configuration Options
| Option | Description | Values |
|--------|-------------|--------|
| HTTP Method | Request method | GET, POST, PUT, PATCH, DELETE |
| Endpoint Path | API path (starts with /) | /odata/CustomEntity |
| Query Parameters | URL parameters | UI builder or JSON object |
| Request Body | JSON payload | JSON object (POST/PUT/PATCH) |
| Headers | Custom headers | UI builder or JSON object |
| Unwrap OData | Auto-extract .value | true (default) or false |
๐ Full Documentation:
- Quick Start: See CUSTOM_API_QUICKSTART.md
- Complete Guide: See CUSTOM_API_CALL.md
---
๐ก Usage Examples
$3
`
1. [Trigger] Cron: Every hour
2. [Node] UiPath Orchestrator: Get All Jobs (Take: 100)
3. [Node] Filter: Show only Failed jobs
4. [Node] Send Email: Notify admin of failures
`
$3
`
1. [Trigger] Webhook: Receive invoice data
2. [Node] UiPath Orchestrator: Add Queue Item
- Queue Name: InvoiceQueue
- Item Data: from webhook payload
3. [Node] UiPath Orchestrator: Start Jobs
- Release Key: InvoiceProcessor
- No. of Robots: 3
`
$3
`
1. [Trigger] HTTP Request: Search query
2. [Node] UiPath Orchestrator: Search Users and Groups
- Search Context: Users
- Prefix: from query param
3. [Node] Return results to caller
`
$3
`
1. [Trigger] Cron: Daily at 9 AM
2. [Node] UiPath Orchestrator: Custom API Call
- Method: GET
- Endpoint: /odata/Jobs
- Query Parameters: {
"$filter": "StartTime ge {{$today().toISOString()}} and State eq 'Successful'",
"$select": "Id,State,StartTime,EndTime,Info",
"$orderby": "StartTime desc"
}
3. [Node] Aggregate: Count and summarize jobs
4. [Node] Send Email: Daily success report
`
$3
`
1. [Trigger] Webhook: Receive batch data
2. [Node] Loop: For each item in batch
3. [Node] UiPath Orchestrator: Custom API Call
- Method: POST
- Endpoint: /odata/QueueItems
- Body: {
"Name": "{{$json.itemName}}",
"Priority": "Normal",
"SpecificContent": {{$json.data}}
}
4. [Node] Collect results and respond
`
---
๐ง Advanced Configuration
$3
For on-premise UiPath installations, configure custom endpoints:
Credentials:
- Tenant Name: uipath.mycompany.com
- OAuth Token URL: https://uipath.mycompany.com/api/oauth/token
- API Base URL: https://uipath.mycompany.com/account/tenant/orchestrator_
On-Premise (External App) - Simplified OAuth2
If you have an on-premise UiPath Orchestrator and use an external application for OAuth2 (no accountLogicalName required), choose Authentication Mode = On-Premise / External App and provide:
- Server URL (On-Premise): https://orchestrator.mycompany.com
- Client ID and Client Secret for your external app (Confidential App)
- Additional Scopes (space-separated, e.g., OR.Administration OR.Execution OR.Assets OR.Users OR.Folders) as required
The node will use the provided Server URL to request OAuth2 tokens using the client credentials flow:
- Token endpoint (auto-detected): https://
- Discovery URL (optional): https://
- Request format: grant_type=client_credentials&client_id={app_id}&client_secret={app_secret}&scope={scopes}
If you need a custom OAuth token URL, provide it in the OAuth Token URL (Optional) field.
$3
Restrict permissions by specifying custom scopes:
- Additional Scopes: OR.Folders.Read OR.Jobs.Read
- (Follows least-privilege principle)
$3
Limit operations to specific organizational units:
- Organization Unit ID: Set in credentials to scope all operations
---
๐ Performance Features
โ
Token Caching: Reuses OAuth tokens within 60s of expiry (90% fewer requests)
โ
Pagination: Built-in support for large result sets (take/skip)
โ
Error Handling: Graceful error messages and retry logic
โ
Type Safety: Full TypeScript definitions included
---
๐ ๏ธ Troubleshooting
$3
- Verify Client ID and Client Secret are correct
- Check Tenant Name format (should be domain, not full URL)
- Ensure credentials have API access permissions
- Check if 2FA is enabled on the account
$3
- Verify Tenant Name matches your instance
- For on-premise, ensure custom API URL is correct
- Check if Organization Unit ID (if set) is valid
$3
- Verify OAuth scopes include necessary permissions
- Check if user/robot has access to resources
- Review UiPath admin settings for API access
$3
- Check if token caching is working (should see ~1 OAuth request per 10 operations)
- Verify network latency to UiPath instance
- Reduce Take parameter to smaller batches if needed
---
๐ Resources
- UiPath Orchestrator API Documentation - Official API reference
- UiPath Cloud Portal - Manage credentials and settings
- n8n Documentation - n8n workflow automation guide
- n8n Community Forum - Get help from the community
---
๐ What's Included
โ
Full TypeScript source code
โ
OAuth2 authentication with token caching
โ
9 resources with 45+ operations (including Custom API Call)
โ
Comprehensive error handling
โ
Type definitions (.d.ts files)
โ
Support for cloud, on-premise, and custom domains
โ
Configurable scopes and endpoints
โ
Pagination support
โ
Custom API Call for unlimited flexibility
โ
Automatic query parameter handling via axios
---
๐ Recent Changes (v1.6.0)
$3
#### New Features
- โ
Dynamic Load Options (NEW!): Replaced manual text inputs with dynamic, searchable dropdowns for:
- Queues: Select Queue Name from list
- Processes: Select Release Key (Process) from list
- Jobs: Select Job ID from list (shows Release Name + State + Time)
- Assets: Select Asset Name/ID from list
- Buckets: Select Bucket Name/ID from list
- โ
Custom API Call Resource: Make custom API requests to any UiPath Orchestrator endpoint (Added in v1.5.0)
- Full HTTP method support (GET, POST, PUT, PATCH, DELETE)
- Flexible query parameters (UI builder or JSON format)
- Custom headers support
- Request body configuration for POST/PUT/PATCH
- Automatic OData response unwrapping
- See CUSTOM_API_CALL.md and CUSTOM_API_QUICKSTART.md
#### Critical Fixes
- โ
Query Parameter Handling: Fixed critical architectural issue across 35+ operations
- All operations now correctly pass query parameters to axios params instead of manual URL concatenation
- Fixed in: robotLogs.ts, sessions.ts, robots.ts, auditLogs.ts, processes.ts, queues.ts, buckets.ts, assets.ts
- Axios now handles URL encoding automatically
- ~30% code reduction per operation
- More reliable and maintainable
#### Previous Updates (v1.1.1)
- โ
JobTriggers support (API + OData): added JobTriggers operations to the Jobs resource
- โ
DirectoryService documentation: comprehensive docs for directory operations
- โ
Swagger docs: added operation references for implementers
$3
- Breaking Changes: None - all fixes are backward compatible
- Build: Run npm run build` to compile TypeScript after pulling changes