SaaS App and Device Management APIs
APIs to monitor and manager integrations
Returns a list of repositories Nightfall has access to.
The maximum number of records to be returned in the response
100Cursor for getting the next page of results
Successful response
Invalid request parameters
Authentication failure
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
GET /apps/v1/github/repositories HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"repositories": [
{
"repositoryID": 1,
"repositoryName": "text",
"isRepoPrivate": true,
"repoLink": "text",
"scannedAt": 1,
"isMonitored": true,
"githubUsername": "text"
}
],
"nextPageToken": "text"
}Returns a list of endpoint devices where the Nightfall agent is installed across the organization.
The maximum number of agents to be returned in the response
500Cursor for getting the next page of results
Prefix search across device name, device ID, and user email
Filter agents by version status
Filter agents by stealth mode status
Filter agents by profile status
Comma-delimited list of BROWSER:VALUE pairs to filter by browser extension status. VALUE may be either:
- a boolean (
true/false) — true matches any installed/connected state, false matches not-installed; or - a pipe-delimited list of installation states (e.g.
EXTENSION_CONNECTED|EXTENSION_DISCONNECTED) to match agents whose extension is in any of the listed states. States may be passed in short form (EXTENSION_CONNECTED) or full form (BROWSER_EXTENSION_INSTALLATION_STATUS_EXTENSION_CONNECTED). Valid filter states: BROWSER_NOT_INSTALLED, BROWSER_INSTALLED, EXTENSION_INSTALLED, INSTALLATION_PENDING, EXTENSION_CONNECTED, EXTENSION_DISCONNECTED. Any other value (UNKNOWN, ERROR, or the unprefixed CONNECTED/DISCONNECTED forms) is silently dropped. Note: the responsestatusfield still echoes the bare proto enum names (e.g.BROWSER_EXTENSION_INSTALLATION_STATUS_CONNECTED) — only filter input uses the EXTENSION_ aliases. Supported browsers: BROWSER_CHROME, BROWSER_EDGE, BROWSER_FIREFOX, BROWSER_SAFARI, BROWSER_ARC, BROWSER_ATLAS, BROWSER_BRAVE, BROWSER_CHROME_BETA, BROWSER_COMET, BROWSER_VIVALDI.
BROWSER_CHROME:EXTENSION_CONNECTED|EXTENSION_DISCONNECTED,BROWSER_EDGE:trueSuccessful response
Invalid request parameters
Authentication failure
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
GET /apps/v1/endpoint/devices HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"agents": [
{
"os": "MAC_OS",
"deviceName": "text",
"deviceId": "text",
"macAddresses": [
"text"
],
"connectionStatus": "ONLINE",
"lastConnection": "2026-01-01T00:00:00.000Z",
"agentVersion": "text",
"osVersion": "text",
"userEmail": "text",
"stealthMode": "STEALTH_MODE_STATUS_UNKNOWN",
"profileStatus": "PROFILE_STATUS_UNKNOWN",
"missingPermissions": [
"AGENT_PERMISSION_FULL_DISK_ACCESS"
],
"errors": [
"AGENT_ERROR_CODE_USER_AGENT_NOT_CONNECTED"
],
"extensionInstallationStatuses": [
{
"browser": "BROWSER_CHROME",
"status": "BROWSER_EXTENSION_INSTALLATION_STATUS_UNKNOWN",
"extensionConnected": true,
"lastConnectionStatusUpdate": "2026-01-01T00:00:00.000Z"
}
]
}
],
"totalAgents": 1,
"nextPageToken": "text"
}Returns a paginated list of domain collections configured for the company.
The maximum number of collections to be returned in the response
50Cursor for getting the next page of results
Sort order for the collection name
ascPossible values: Successful response
Next page cursor, omitted if end of results reached
Invalid request parameters
Authentication failure
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
GET /apps/v1/endpoint/collections HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"collections": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"source": "MANUAL",
"domains": [
"text"
],
"totalDomains": 1
}
],
"totalCollections": 1,
"nextPageToken": "text"
}Creates a new manual domain collection. Collection names are case-insensitive unique per company and cannot be the reserved value CORPORATE DOMAINS.
Human-readable name for the collection. Case-insensitive unique per company. The value CORPORATE DOMAINS is reserved.
Collection created
Collection identifier
Collection name
How the collection was created. Only MANUAL collections are user-mutable.
Timestamp of the most recent update
Invalid request body
Authentication failure
A collection with the same name already exists
Collection name is reserved
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
POST /apps/v1/endpoint/collections HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 15
{
"name": "text"
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"source": "MANUAL",
"updatedAt": "2026-01-01T00:00:00.000Z"
}Renames an existing manual domain collection. System collections cannot be renamed.
UUID of the collection
Human-readable name for the collection. Case-insensitive unique per company. The value CORPORATE DOMAINS is reserved.
Collection updated
Collection identifier
Collection name
How the collection was created. Only MANUAL collections are user-mutable.
Timestamp of the most recent update
Invalid request
Authentication failure
Collection not found
A collection with the same name already exists
Collection cannot be changed, or name is reserved
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
PUT /apps/v1/endpoint/collections/{collectionUUID} HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 15
{
"name": "text"
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"source": "MANUAL",
"updatedAt": "2026-01-01T00:00:00.000Z"
}Soft-deletes a manual domain collection.
UUID of the collection
Collection deleted
No content
Invalid collection ID
Authentication failure
Collection not found
Collection cannot be changed
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
DELETE /apps/v1/endpoint/collections/{collectionUUID} HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Returns every active domain attached to the collection.
UUID of the parent collection
Successful response
Invalid collection ID
Authentication failure
Collection not found
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
GET /apps/v1/endpoint/collections/{collectionUUID}/domains HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"domains": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"source": "MANUAL",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
]
}Bulk-adds domains to a collection. Domains added via the workflow API are always recorded with source MANUAL. When the target collection is the reserved CORPORATE DOMAINS collection, personal-email domains are rejected and returned in failedDomains.
UUID of the parent collection
Domains processed (some may have been rejected as personal domains, see failedDomains)
Domain names rejected because they are personal-email providers and were targeted at the reserved corporate-domains collection. Omitted when empty.
Invalid request
Authentication failure
Collection not found
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
POST /apps/v1/endpoint/collections/{collectionUUID}/domains HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 29
{
"domains": [
{
"name": "text"
}
]
}{
"domains": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"source": "MANUAL",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
],
"failedDomains": [
"text"
]
}Soft-deletes a single domain from a collection.
UUID of the parent collection
UUID of the domain to remove
Domain deleted
No content
Invalid collection or domain ID
Authentication failure
Collection or domain not found
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
DELETE /apps/v1/endpoint/collections/{collectionUUID}/domains/{domainUUID} HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Returns a paginated list of MCP server collections configured for the company.
50Successful response
Invalid request parameters
Authentication failure
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
GET /apps/v1/endpoint/mcp-collections HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"collections": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"source": "MANUAL",
"totalItems": 1
}
],
"total": 1,
"nextPageToken": "text"
}Creates a new manual MCP server collection. Collection names are case-insensitive unique per company.
Collection created
Invalid request body
Authentication failure
A collection with the same name already exists
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
POST /apps/v1/endpoint/mcp-collections HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 15
{
"name": "text"
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"source": "MANUAL",
"itemCount": 1,
"updatedAt": "2026-01-01T00:00:00.000Z"
}Renames an existing manual MCP server collection. System collections cannot be renamed.
Collection updated
Invalid request
Authentication failure
Collection not found
A collection with the same name already exists
Collection cannot be changed
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
PUT /apps/v1/endpoint/mcp-collections/{collectionUUID} HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 15
{
"name": "text"
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"source": "MANUAL",
"itemCount": 1,
"updatedAt": "2026-01-01T00:00:00.000Z"
}Soft-deletes a manual MCP server collection.
Collection deleted
No content
Invalid collection ID
Authentication failure
Collection not found
Collection cannot be changed
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
DELETE /apps/v1/endpoint/mcp-collections/{collectionUUID} HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
50Successful response
Invalid request
Authentication failure
Collection not found
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
GET /apps/v1/endpoint/mcp-collections/{collectionUUID}/items HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"items": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"serverScope": {
"serverName": "text",
"toolNames": [
"text"
]
},
"updatedAt": "2026-01-01T00:00:00.000Z"
}
],
"total": 1,
"nextPageToken": "text"
}Bulk-adds MCP server scopes to a collection. Each scope identifies an MCP server by serverName and optionally restricts the inventoried tools to a list of toolNames. Omitting toolNames means "all tools on this server".
Items added
Invalid request body
Authentication failure
Collection not found
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
POST /apps/v1/endpoint/mcp-collections/{collectionUUID}/items HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 54
{
"items": [
{
"serverName": "text",
"toolNames": [
"text"
]
}
]
}{
"items": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"serverScope": {
"serverName": "text",
"toolNames": [
"text"
]
},
"updatedAt": "2026-01-01T00:00:00.000Z"
}
]
}Item deleted
No content
Invalid collection or item ID
Authentication failure
Collection or item not found
Rate Limit Exceeded or Daily Quota Exceeded
Internal Nightfall Error
DELETE /apps/v1/endpoint/mcp-collections/{collectionUUID}/items/{itemUUID} HTTP/1.1
Host: api.nightfall.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Last updated
Was this helpful?