NinjaOne Organization Management
Overview
Organizations in NinjaOne represent your MSP clients. Each organization contains devices, locations, and has policy mappings that determine how devices are monitored and managed.
Anti-triggers
- The client record of record — a NinjaOne organization is a
monitoring container, not the billing or contract entity. Contracts,
billing addresses, and contacts live in the PSA; use
autotask-crm,connectwise-psa-companies, orhalopsa-clients. - The same client in another RMM — use
atera-customers,ncentral-organizations,datto-rmm-sites, orsyncro-customers. All of them call this container something different (customer, site, org unit) and none of them share IDs with NinjaOne. - The documentation record for a client — use
hudu-companies. - A single endpoint's detail — use
ninjaone-devices; this skill covers the container and its locations and policy mappings.
API Endpoints
List Organizations
GET /api/v2/organizations
Authorization: Bearer {token}
Query parameters:
pageSize- Results per page (default: 50)after- Cursor for pagination
Response:
{
"organizations": [
{
"id": 1,
"name": "Acme Corporation",
"description": "Main client account",
"nodeApprovalMode": "AUTOMATIC",
"tags": ["premium", "24x7"],
"fields": {
"customField1": "value"
}
}
],
"pageInfo": {
"hasNextPage": true,
"endCursor": "abc123"
}
}
Create Organization
POST /api/v2/organizations
Content-Type: application/json
{
"name": "New Client Inc",
"description": "Description of the organization",
"nodeApprovalMode": "AUTOMATIC",
"tags": ["standard"],
"fields": {
"primaryContact": "John Smith",
"contractType": "Managed"
},
"locations": [
{
"name": "Headquarters",
"address": "123 Main St",
"description": "Main office location"
}
],
"policies": {
"nodeRoleId": 1,
"policyId": 100
}
}
Node Approval Modes
| Mode | Description |
|---|---|
AUTOMATIC |
New devices auto-approved |
MANUAL |
Devices require manual approval |
REJECT |
New devices rejected by default |
Locations
Locations represent physical sites within an organization.
Location Fields
| Field | Type | Description |
|---|---|---|
id |
integer | Location identifier |
name |
string | Location name |
address |
string | Physical address |
description |
string | Additional details |
Policy Mappings
Policies define monitoring and management behavior for devices.
Policy Mapping Structure
{
"policies": [
{
"nodeRoleId": 1,
"policyId": 100
},
{
"nodeRoleId": 2,
"policyId": 101
}
]
}
Node Role IDs
| ID | Role |
|---|---|
| 1 | Windows Workstation |
| 2 | Windows Server |
| 3 | Mac |
| 4 | Linux Workstation |
| 5 | Linux Server |
Custom Fields
Organizations can have custom fields for tracking business data:
{
"fields": {
"contractStart": "2024-01-01",
"contractEnd": "2024-12-31",
"primaryContact": "Jane Doe",
"billingCode": "ACME-001"
}
}
Tags
Tags help categorize and filter organizations:
{
"tags": ["premium", "healthcare", "24x7-support"]
}
Common tag patterns:
- Service tier:
premium,standard,basic - Industry:
healthcare,finance,education - Support level:
24x7,business-hours - Contract type:
managed,break-fix,project
Common Workflows
Onboard New Client
- Create organization with basic info
- Add locations for each site
- Configure policy mappings
- Set custom fields for contract info
- Deploy agents to devices
Organization Audit
- List all organizations
- Review custom field data
- Check policy mappings are current
- Verify location accuracy
Bulk Tag Update
- List organizations by filter
- Update tags programmatically
- Verify changes applied
Pagination
NinjaOne uses cursor-based pagination:
GET /api/v2/organizations?pageSize=50
GET /api/v2/organizations?pageSize=50&after=cursor123
Continue fetching while pageInfo.hasNextPage is true.
Error Handling
| Code | Description | Resolution |
|---|---|---|
| 400 | Invalid request | Check required fields |
| 409 | Name conflict | Organization name must be unique |
| 403 | Access denied | Check API permissions |
Related Skills
- Devices - Device management
- API Patterns - Authentication and pagination