Secrets & Data API
Query secrets, credential, and sensitive-data findings via the Nullify API
For PR and default-branch scanning, see scan coverage, start operations and completion checks.
Secret and sensitive-data findings are available under separate namespaces:
/secrets/credentials/*— detected secrets and credentials./secrets/findings/*is a deprecated legacy alias for this namespace and returns the same data./secrets/sensitivedata/*— sensitive data / PII.
Every namespace supports GET .../findings, GET and PATCH .../findings/{findingId}, GET .../findings/{findingId}/triage, GET .../findings/{findingId}/users, POST .../findings/{findingId}/allowlist, POST .../findings/{findingId}/unallowlist, POST and DELETE .../findings/{findingId}/ticket, and the bulk POST .../findings/allowlist/batch. Finding-event history is available for credentials and the legacy alias, not sensitive-data findings. Each operation below is embedded once per path.
Base URL
https://api.<TENANT>.nullify.ai
Conventions
Provider scope. Every call identifies the connected provider account with one scope query parameter:
githubOwnerIdfor GitHub, orazureOrganizationId,bitbucketWorkspaceId,gitlabGroupIdorinstallationIdfor the other providers. The examples usegithubOwnerId=1234.Repository scope. To narrow a list to specific repositories, add
githubRepositoryId(repeatable) orgithubTeamIdto the scope parameters. Thedetailedlists take a singlerepositoryIdinstead.Pagination. Finding lists accept
limitandnextToken(see Pagination).limitdefaults to 100 and a value above 100 returns 400.sortisascordesc(defaultdesc) andsortByispriority(default) ortime.Permissions. Reads need finding read access (lists need finding list access). Updates, allowlisting and tickets need finding write access.
Finding IDs. Take
findingIdfrom the matching list call. An ID that does not exist in your tenant returns 404.Secret values. Events and finding-event history carry a masked value, never the raw secret.
Events
List events
Stream events for new secrets, allowlisting and unallowlisting. Pass fromTime as a UTC timestamp such as 2025-01-31T00:00:00Z, and filter with eventType, findingId and fileOwnerName. A page holds at most 100 events: limit defaults to 100, and a numItems above 100 returns 400. Follow nextToken to read on. The branch parameter in the specification is not applied by the handler. When you filter by fileOwnerName and file-owner lookup is unavailable, the call fails instead of returning unfiltered events.
Returns events after a specified timestamp or event ID. All events are returned if no timestamp or event ID is provided
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Internal Server Error
GET /secrets/events HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"events": [
{
"data": null,
"id": "text",
"time": "text",
"timestampUnix": 1,
"type": "org_context_agent_started"
}
],
"nextToken": "text",
"numItems": 1,
"version": "text"
}Findings
List findings
Enumerate findings, one per unique secret hash per repository, filtered by branch, secretType (the detector rule), isResolved, isAllowlisted, isFalsePositive and fileOwnerName. The list returns previews, and duplicate and deleted credential findings are excluded. fileOwnerName is applied after a page is fetched, so a filtered page can be shorter than limit. The sensitive-data list applies branch, isResolved, isAllowlisted and isFalsePositive; it accepts secretType and fileOwnerName in the specification but does not apply them.
Credentials:
Returns a filtered set of Secrets credential findings based on query parameters. One unique secret hash per repository.
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Internal Server Error
GET /secrets/credentials/findings HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"findings": [
{
"aiDevTitle": "text",
"aiTitle": "text",
"allowlistReason": "text",
"allowlistType": "AI",
"author": "text",
"branch": "text",
"commit": "text",
"createdAt": "text",
"endLine": 1,
"entropy": 1,
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isFalsePositive": true,
"match": "text",
"owner": "text",
"ownerType": "text",
"priorityLabel": "URGENT",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"redactedSecret": "text",
"repository": "text",
"repositoryId": "text",
"repositoryName": "text",
"ruleId": "text",
"scopes": [
"text"
],
"secretHash": "text",
"secretType": "text",
"startLine": 1,
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timeStamp": "text",
"timestampUnix": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageStart": "2026-01-01T00:00:00.000Z",
"updatedAt": "text"
}
],
"nextToken": "text",
"numItems": 1,
"version": "text"
}Legacy alias (deprecated):
Returns a filtered set of Secrets credential findings based on query parameters. One unique secret hash per repository.
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Internal Server Error
GET /secrets/findings HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"findings": [
{
"aiDevTitle": "text",
"aiTitle": "text",
"allowlistReason": "text",
"allowlistType": "AI",
"author": "text",
"branch": "text",
"commit": "text",
"createdAt": "text",
"endLine": 1,
"entropy": 1,
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isFalsePositive": true,
"match": "text",
"owner": "text",
"ownerType": "text",
"priorityLabel": "URGENT",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"redactedSecret": "text",
"repository": "text",
"repositoryId": "text",
"repositoryName": "text",
"ruleId": "text",
"scopes": [
"text"
],
"secretHash": "text",
"secretType": "text",
"startLine": 1,
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timeStamp": "text",
"timestampUnix": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageStart": "2026-01-01T00:00:00.000Z",
"updatedAt": "text"
}
],
"nextToken": "text",
"numItems": 1,
"version": "text"
}Deprecated alias that returns the same list:
Returns a filtered set of Secrets credential findings based on query parameters. One unique secret hash per repository.
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Internal Server Error
GET /secrets/findings/preview HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"findings": [
{
"aiDevTitle": "text",
"aiTitle": "text",
"allowlistReason": "text",
"allowlistType": "AI",
"author": "text",
"branch": "text",
"commit": "text",
"createdAt": "text",
"endLine": 1,
"entropy": 1,
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isFalsePositive": true,
"match": "text",
"owner": "text",
"ownerType": "text",
"priorityLabel": "URGENT",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"redactedSecret": "text",
"repository": "text",
"repositoryId": "text",
"repositoryName": "text",
"ruleId": "text",
"scopes": [
"text"
],
"secretHash": "text",
"secretType": "text",
"startLine": 1,
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timeStamp": "text",
"timestampUnix": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageStart": "2026-01-01T00:00:00.000Z",
"updatedAt": "text"
}
],
"nextToken": "text",
"numItems": 1,
"version": "text"
}Sensitive data / PII:
Returns a filtered set of sensitive data findings based on query parameters.
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Internal Server Error
GET /secrets/sensitivedata/findings HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"findings": [
{
"author": "text",
"branch": "text",
"commit": "text",
"createdAt": "text",
"endLine": 1,
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isFalsePositive": true,
"isResolved": true,
"match": "text",
"owner": "text",
"ownerType": "text",
"priorityLabel": "URGENT",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"repository": "text",
"repositoryId": "text",
"repositoryName": "text",
"startLine": 1,
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timestampUnix": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageStart": "2026-01-01T00:00:00.000Z",
"updatedAt": "text"
}
],
"nextToken": "text",
"numItems": 1,
"version": "text"
}List credential findings with full detail
Returns complete credential finding records instead of previews, with a repositoryId filter alongside the list filters. The /secrets/findings/detailed path is deprecated; use the credentials path.
Current path:
Returns credential secrets summary. One unique secret hash per repository
if set, only findings for this repository are returned
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Internal Server Error
GET /secrets/credentials/findings/detailed HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"findings": [
{
"aiDevTitle": "text",
"aiTitle": "text",
"allowlistReason": "text",
"allowlistType": "AI",
"archivedAt": "2026-01-01T00:00:00.000Z",
"archivedTraceId": "text",
"author": "text",
"branch": "text",
"commit": "text",
"createdAt": "text",
"deletedAt": "2026-01-01T00:00:00.000Z",
"deletedTraceId": "text",
"description": "text",
"devDescription": "text",
"endColumn": 1,
"endLine": 1,
"entropy": 1,
"exploitabilityConfidence": "text",
"exploitabilityLabel": "text",
"failedTriage": true,
"falsePositiveReason": "text",
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"impactConfidence": "text",
"impactLabel": "CRITICAL",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isDeleted": true,
"isDuplicate": true,
"isFalsePositive": true,
"isResolved": true,
"match": "text",
"owner": "text",
"ownerType": "text",
"platform": "text",
"priorityLabel": "URGENT",
"priorityLabelReason": "text",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"redactedSecret": "text",
"repository": "text",
"repositoryId": "text",
"repositoryName": "text",
"resolvedAt": "2026-01-01T00:00:00.000Z",
"ruleId": "text",
"scannedCommitSha": "text",
"scanner": "text",
"scopes": [
"text"
],
"secretHash": "text",
"secretType": "text",
"secretValue": "text",
"severityConfidence": "text",
"severityLabel": "CRITICAL",
"severityOverride": "CRITICAL",
"severityScore": 1,
"startColumn": 1,
"startLine": 1,
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timeStamp": "text",
"timestampUnix": 1,
"triageAgentVersion": "text",
"triageDurationSeconds": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageLlmCostUsd": 1,
"triageMaxInputTokens": 1,
"triageStart": "2026-01-01T00:00:00.000Z",
"triageStopReason": "text",
"triageTokenCount": 1,
"triageTraceId": "text",
"updatedAt": "text",
"userId": "text",
"userNotes": "text",
"verified": true,
"verifiedAt": "text"
}
],
"nextToken": "text",
"numItems": 1,
"version": "text"
}Deprecated path:
Returns secrets summary. One unique secret hash per repository
if set, only findings for this repository are returned
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Internal Server Error
GET /secrets/findings/detailed HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"findings": [
{
"aiDevTitle": "text",
"aiTitle": "text",
"allowlistReason": "text",
"allowlistType": "AI",
"archivedAt": "2026-01-01T00:00:00.000Z",
"archivedTraceId": "text",
"author": "text",
"branch": "text",
"commit": "text",
"createdAt": "text",
"deletedAt": "2026-01-01T00:00:00.000Z",
"deletedTraceId": "text",
"description": "text",
"devDescription": "text",
"endColumn": 1,
"endLine": 1,
"entropy": 1,
"exploitabilityConfidence": "text",
"exploitabilityLabel": "text",
"failedTriage": true,
"falsePositiveReason": "text",
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"impactConfidence": "text",
"impactLabel": "CRITICAL",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isDeleted": true,
"isDuplicate": true,
"isFalsePositive": true,
"isResolved": true,
"match": "text",
"owner": "text",
"ownerType": "text",
"platform": "text",
"priorityLabel": "URGENT",
"priorityLabelReason": "text",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"redactedSecret": "text",
"repository": "text",
"repositoryId": "text",
"repositoryName": "text",
"resolvedAt": "2026-01-01T00:00:00.000Z",
"ruleId": "text",
"scannedCommitSha": "text",
"scanner": "text",
"scopes": [
"text"
],
"secretHash": "text",
"secretType": "text",
"secretValue": "text",
"severityConfidence": "text",
"severityLabel": "CRITICAL",
"severityOverride": "CRITICAL",
"severityScore": 1,
"startColumn": 1,
"startLine": 1,
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timeStamp": "text",
"timestampUnix": 1,
"triageAgentVersion": "text",
"triageDurationSeconds": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageLlmCostUsd": 1,
"triageMaxInputTokens": 1,
"triageStart": "2026-01-01T00:00:00.000Z",
"triageStopReason": "text",
"triageTokenCount": 1,
"triageTraceId": "text",
"updatedAt": "text",
"userId": "text",
"userNotes": "text",
"verified": true,
"verifiedAt": "text"
}
],
"nextToken": "text",
"numItems": 1,
"version": "text"
}Get a finding
Fetch full details for one finding. Credential responses also include a presignedUrl. Unknown or other-tenant IDs return 404.
Credentials:
Returns a given credential finding
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Internal Server Error
GET /secrets/credentials/findings/{findingId} HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"finding": {
"aiDevTitle": "text",
"aiTitle": "text",
"allowlistReason": "text",
"allowlistType": "AI",
"archivedAt": "2026-01-01T00:00:00.000Z",
"archivedTraceId": "text",
"author": "text",
"branch": "text",
"commit": "text",
"createdAt": "text",
"deletedAt": "2026-01-01T00:00:00.000Z",
"deletedTraceId": "text",
"description": "text",
"devDescription": "text",
"endColumn": 1,
"endLine": 1,
"entropy": 1,
"exploitabilityConfidence": "text",
"exploitabilityLabel": "text",
"failedTriage": true,
"falsePositiveReason": "text",
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"impactConfidence": "text",
"impactLabel": "CRITICAL",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isDeleted": true,
"isDuplicate": true,
"isFalsePositive": true,
"isResolved": true,
"match": "text",
"owner": "text",
"ownerType": "text",
"platform": "text",
"priorityLabel": "URGENT",
"priorityLabelReason": "text",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"redactedSecret": "text",
"repository": "text",
"repositoryId": "text",
"repositoryName": "text",
"resolvedAt": "2026-01-01T00:00:00.000Z",
"ruleId": "text",
"scannedCommitSha": "text",
"scanner": "text",
"scopes": [
"text"
],
"secretHash": "text",
"secretType": "text",
"secretValue": "text",
"severityConfidence": "text",
"severityLabel": "CRITICAL",
"severityOverride": "CRITICAL",
"severityScore": 1,
"startColumn": 1,
"startLine": 1,
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timeStamp": "text",
"timestampUnix": 1,
"triageAgentVersion": "text",
"triageDurationSeconds": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageLlmCostUsd": 1,
"triageMaxInputTokens": 1,
"triageStart": "2026-01-01T00:00:00.000Z",
"triageStopReason": "text",
"triageTokenCount": 1,
"triageTraceId": "text",
"updatedAt": "text",
"userId": "text",
"userNotes": "text",
"verified": true,
"verifiedAt": "text"
},
"presignedUrl": "text",
"version": "text"
}Legacy alias:
Returns a given credential finding
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Internal Server Error
GET /secrets/findings/{findingId} HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"finding": {
"aiDevTitle": "text",
"aiTitle": "text",
"allowlistReason": "text",
"allowlistType": "AI",
"archivedAt": "2026-01-01T00:00:00.000Z",
"archivedTraceId": "text",
"author": "text",
"branch": "text",
"commit": "text",
"createdAt": "text",
"deletedAt": "2026-01-01T00:00:00.000Z",
"deletedTraceId": "text",
"description": "text",
"devDescription": "text",
"endColumn": 1,
"endLine": 1,
"entropy": 1,
"exploitabilityConfidence": "text",
"exploitabilityLabel": "text",
"failedTriage": true,
"falsePositiveReason": "text",
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"impactConfidence": "text",
"impactLabel": "CRITICAL",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isDeleted": true,
"isDuplicate": true,
"isFalsePositive": true,
"isResolved": true,
"match": "text",
"owner": "text",
"ownerType": "text",
"platform": "text",
"priorityLabel": "URGENT",
"priorityLabelReason": "text",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"redactedSecret": "text",
"repository": "text",
"repositoryId": "text",
"repositoryName": "text",
"resolvedAt": "2026-01-01T00:00:00.000Z",
"ruleId": "text",
"scannedCommitSha": "text",
"scanner": "text",
"scopes": [
"text"
],
"secretHash": "text",
"secretType": "text",
"secretValue": "text",
"severityConfidence": "text",
"severityLabel": "CRITICAL",
"severityOverride": "CRITICAL",
"severityScore": 1,
"startColumn": 1,
"startLine": 1,
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timeStamp": "text",
"timestampUnix": 1,
"triageAgentVersion": "text",
"triageDurationSeconds": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageLlmCostUsd": 1,
"triageMaxInputTokens": 1,
"triageStart": "2026-01-01T00:00:00.000Z",
"triageStopReason": "text",
"triageTokenCount": 1,
"triageTraceId": "text",
"updatedAt": "text",
"userId": "text",
"userNotes": "text",
"verified": true,
"verifiedAt": "text"
},
"presignedUrl": "text",
"version": "text"
}Sensitive data:
Returns a specific sensitive data finding by ID
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Internal Server Error
GET /secrets/sensitivedata/findings/{findingId} HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"finding": {
"aiTitle": "text",
"archivedAt": "2026-01-01T00:00:00.000Z",
"archivedTraceId": "text",
"author": "text",
"branch": "text",
"budgetExhausted": true,
"commit": "text",
"createdAt": "text",
"deletedAt": "2026-01-01T00:00:00.000Z",
"deletedTraceId": "text",
"failedTriage": true,
"falsePositiveReason": "text",
"fields": [
{
"dataType": "text",
"endColumn": 1,
"endLine": 1,
"ruleId": "text",
"scanner": "text",
"startColumn": 1,
"startLine": 1
}
],
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isDeleted": true,
"isDuplicate": true,
"isFalsePositive": true,
"isResolved": true,
"isTriaged": true,
"owner": "text",
"ownerType": "text",
"platform": "text",
"priorityLabel": "URGENT",
"priorityLabelReason": "text",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"repositoryId": "text",
"repositoryName": "text",
"resolvedAt": "2026-01-01T00:00:00.000Z",
"scannedCommitSha": "text",
"secretValue": "text",
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timestampUnix": 1,
"triageAgentVersion": "text",
"triageDurationSeconds": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageLlmCostUsd": 1,
"triageStart": "2026-01-01T00:00:00.000Z",
"triageStopReason": "text",
"triageTokenCount": 1,
"updatedAt": "text",
"userId": "text",
"userNotes": "text"
},
"presignedUrl": "text",
"version": "text"
}Update a finding
Override priority or attach notes. Credential findings accept priorityOverride (URGENT, IMPORTANT, MEDIUM, INFORMATIONAL, LOW, NEGLIGIBLE, FALSE_POSITIVE, UNKNOWN), severityOverride (CRITICAL, HIGH, MEDIUM, LOW, NONE, INFORMATIONAL, UNKNOWN) and userNotes. Sensitive-data findings accept only priorityOverride and userNotes; they have no severity override. An invalid value returns 400. The response is the updated finding.
Credentials:
Update a given credential finding with the fields provided
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Internal Server Error
PATCH /secrets/credentials/findings/{findingId} HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 78
{
"priorityOverride": "URGENT",
"severityOverride": "CRITICAL",
"userNotes": "text"
}{
"finding": {
"aiDevTitle": "text",
"aiTitle": "text",
"allowlistReason": "text",
"allowlistType": "AI",
"archivedAt": "2026-01-01T00:00:00.000Z",
"archivedTraceId": "text",
"author": "text",
"branch": "text",
"commit": "text",
"createdAt": "text",
"deletedAt": "2026-01-01T00:00:00.000Z",
"deletedTraceId": "text",
"description": "text",
"devDescription": "text",
"endColumn": 1,
"endLine": 1,
"entropy": 1,
"exploitabilityConfidence": "text",
"exploitabilityLabel": "text",
"failedTriage": true,
"falsePositiveReason": "text",
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"impactConfidence": "text",
"impactLabel": "CRITICAL",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isDeleted": true,
"isDuplicate": true,
"isFalsePositive": true,
"isResolved": true,
"match": "text",
"owner": "text",
"ownerType": "text",
"platform": "text",
"priorityLabel": "URGENT",
"priorityLabelReason": "text",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"redactedSecret": "text",
"repository": "text",
"repositoryId": "text",
"repositoryName": "text",
"resolvedAt": "2026-01-01T00:00:00.000Z",
"ruleId": "text",
"scannedCommitSha": "text",
"scanner": "text",
"scopes": [
"text"
],
"secretHash": "text",
"secretType": "text",
"secretValue": "text",
"severityConfidence": "text",
"severityLabel": "CRITICAL",
"severityOverride": "CRITICAL",
"severityScore": 1,
"startColumn": 1,
"startLine": 1,
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timeStamp": "text",
"timestampUnix": 1,
"triageAgentVersion": "text",
"triageDurationSeconds": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageLlmCostUsd": 1,
"triageMaxInputTokens": 1,
"triageStart": "2026-01-01T00:00:00.000Z",
"triageStopReason": "text",
"triageTokenCount": 1,
"triageTraceId": "text",
"updatedAt": "text",
"userId": "text",
"userNotes": "text",
"verified": true,
"verifiedAt": "text"
},
"version": "text"
}Legacy alias:
Update a given credential finding with the fields provided
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Internal Server Error
PATCH /secrets/findings/{findingId} HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 78
{
"priorityOverride": "URGENT",
"severityOverride": "CRITICAL",
"userNotes": "text"
}{
"finding": {
"aiDevTitle": "text",
"aiTitle": "text",
"allowlistReason": "text",
"allowlistType": "AI",
"archivedAt": "2026-01-01T00:00:00.000Z",
"archivedTraceId": "text",
"author": "text",
"branch": "text",
"commit": "text",
"createdAt": "text",
"deletedAt": "2026-01-01T00:00:00.000Z",
"deletedTraceId": "text",
"description": "text",
"devDescription": "text",
"endColumn": 1,
"endLine": 1,
"entropy": 1,
"exploitabilityConfidence": "text",
"exploitabilityLabel": "text",
"failedTriage": true,
"falsePositiveReason": "text",
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"impactConfidence": "text",
"impactLabel": "CRITICAL",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isDeleted": true,
"isDuplicate": true,
"isFalsePositive": true,
"isResolved": true,
"match": "text",
"owner": "text",
"ownerType": "text",
"platform": "text",
"priorityLabel": "URGENT",
"priorityLabelReason": "text",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"redactedSecret": "text",
"repository": "text",
"repositoryId": "text",
"repositoryName": "text",
"resolvedAt": "2026-01-01T00:00:00.000Z",
"ruleId": "text",
"scannedCommitSha": "text",
"scanner": "text",
"scopes": [
"text"
],
"secretHash": "text",
"secretType": "text",
"secretValue": "text",
"severityConfidence": "text",
"severityLabel": "CRITICAL",
"severityOverride": "CRITICAL",
"severityScore": 1,
"startColumn": 1,
"startLine": 1,
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timeStamp": "text",
"timestampUnix": 1,
"triageAgentVersion": "text",
"triageDurationSeconds": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageLlmCostUsd": 1,
"triageMaxInputTokens": 1,
"triageStart": "2026-01-01T00:00:00.000Z",
"triageStopReason": "text",
"triageTokenCount": 1,
"triageTraceId": "text",
"updatedAt": "text",
"userId": "text",
"userNotes": "text",
"verified": true,
"verifiedAt": "text"
},
"version": "text"
}Sensitive data:
Update a given sensitive data finding with the fields provided
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Internal Server Error
PATCH /secrets/sensitivedata/findings/{findingId} HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 48
{
"priorityOverride": "URGENT",
"userNotes": "text"
}{
"finding": {
"aiTitle": "text",
"archivedAt": "2026-01-01T00:00:00.000Z",
"archivedTraceId": "text",
"author": "text",
"branch": "text",
"budgetExhausted": true,
"commit": "text",
"createdAt": "text",
"deletedAt": "2026-01-01T00:00:00.000Z",
"deletedTraceId": "text",
"failedTriage": true,
"falsePositiveReason": "text",
"fields": [
{
"dataType": "text",
"endColumn": 1,
"endLine": 1,
"ruleId": "text",
"scanner": "text",
"startColumn": 1,
"startLine": 1
}
],
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isDeleted": true,
"isDuplicate": true,
"isFalsePositive": true,
"isResolved": true,
"isTriaged": true,
"owner": "text",
"ownerType": "text",
"platform": "text",
"priorityLabel": "URGENT",
"priorityLabelReason": "text",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"repositoryId": "text",
"repositoryName": "text",
"resolvedAt": "2026-01-01T00:00:00.000Z",
"scannedCommitSha": "text",
"secretValue": "text",
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timestampUnix": 1,
"triageAgentVersion": "text",
"triageDurationSeconds": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageLlmCostUsd": 1,
"triageStart": "2026-01-01T00:00:00.000Z",
"triageStopReason": "text",
"triageTokenCount": 1,
"updatedAt": "text",
"userId": "text",
"userNotes": "text"
},
"version": "text"
}Get triage details
Fetch how Nullify triaged a finding: its severity, priority and reasoning. Triage is not instant: for a finding that exists but has no triage yet the call returns 404 (triage not yet available), so retry later rather than treating it as a missing finding. Credential findings fall back to a validation-only result when the credential was checked against its provider but no full report is readable.
Credentials:
Returns the triage data for a specific credential finding
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Internal Server Error
GET /secrets/credentials/findings/{findingId}/triage HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"finding": {
"agentVersion": "text",
"assessmentFactors": [
{
"description": "text",
"title": "text"
}
],
"codeContext": {
"codeBlocks": [
{
"codeText": "text",
"endLine": 1,
"filePath": "text",
"startLine": 1
}
],
"dataFlow": "text",
"error": "text",
"exitReason": "text",
"summary": "text",
"thoughts": "text"
},
"falsePositiveReason": "text",
"finding": {
"aiDevTitle": "text",
"aiTitle": "text",
"allowlistReason": "text",
"allowlistType": "AI",
"archivedAt": "2026-01-01T00:00:00.000Z",
"archivedTraceId": "text",
"author": "text",
"branch": "text",
"commit": "text",
"createdAt": "text",
"deletedAt": "2026-01-01T00:00:00.000Z",
"deletedTraceId": "text",
"description": "text",
"devDescription": "text",
"endColumn": 1,
"endLine": 1,
"entropy": 1,
"exploitabilityConfidence": "text",
"exploitabilityLabel": "text",
"failedTriage": true,
"falsePositiveReason": "text",
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"impactConfidence": "text",
"impactLabel": "CRITICAL",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isDeleted": true,
"isDuplicate": true,
"isFalsePositive": true,
"isResolved": true,
"match": "text",
"owner": "text",
"ownerType": "text",
"platform": "text",
"priorityLabel": "URGENT",
"priorityLabelReason": "text",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"redactedSecret": "text",
"repository": "text",
"repositoryId": "text",
"repositoryName": "text",
"resolvedAt": "2026-01-01T00:00:00.000Z",
"ruleId": "text",
"scannedCommitSha": "text",
"scanner": "text",
"scopes": [
"text"
],
"secretHash": "text",
"secretType": "text",
"secretValue": "text",
"severityConfidence": "text",
"severityLabel": "CRITICAL",
"severityOverride": "CRITICAL",
"severityScore": 1,
"startColumn": 1,
"startLine": 1,
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timeStamp": "text",
"timestampUnix": 1,
"triageAgentVersion": "text",
"triageDurationSeconds": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageLlmCostUsd": 1,
"triageMaxInputTokens": 1,
"triageStart": "2026-01-01T00:00:00.000Z",
"triageStopReason": "text",
"triageTokenCount": 1,
"triageTraceId": "text",
"updatedAt": "text",
"userId": "text",
"userNotes": "text",
"verified": true,
"verifiedAt": "text"
},
"fixStoryPointEstimate": 1,
"investigationSteps": [
{
"details": [
"text"
],
"title": "text"
}
],
"isFalsePositive": true,
"orgContextVersion": "text",
"priority": {
"description": "text",
"exploitability": {
"description": "text",
"label": "HIGH"
},
"impact": {
"description": "text",
"label": "HIGH"
},
"label": "IMPORTANT",
"score": 1
},
"repoContextVersion": "text",
"triage": {
"budgetExhausted": true,
"campaignMetadata": {
"id": "text",
"name": "text"
},
"cloudContext": {
"confidence": 1,
"mode": "MODEA",
"ownershipBasis": "declared",
"repos": [
"text"
],
"thoughts": "text"
},
"complianceImpact": {
"citations": [
{
"documentId": "text",
"endLine": 1,
"fileName": "text",
"nodeId": "text",
"page": 1,
"quote": "text",
"score": 1,
"startLine": 1,
"title": "text"
}
],
"confidence": "HIGH",
"frameworks": [
{
"clause": "text",
"framework": "CCPA",
"obligation": "text"
}
],
"rationale": "text"
},
"customerQuestions": {
"customMessage": "text",
"generatedMemoryIds": [
"text"
],
"id": "text",
"questions": [
{
"answer": null,
"answerMemoryId": "text",
"answeredAt": "2026-01-01T00:00:00.000Z",
"customMessage": "text",
"findingIds": [
"text"
],
"id": "text",
"options": [
{
"id": "text",
"label": "text",
"value": "text"
}
],
"questionText": "text",
"questionType": "FREE_TEXT",
"relatedMemoryIds": [
"text"
],
"scope": "CLOUD",
"scopeResourceId": "text",
"unknownIds": [
"text"
]
}
]
},
"description": "text",
"descriptionSummary": "text",
"devDescription": "text",
"devTitle": "text",
"evidence": {
"edges": [
{
"confidence": 1,
"explanation": "text",
"properties": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"sourceId": "text",
"targetId": "text",
"type": "ABOUT"
}
],
"nodes": []
},
"exploitHypothesis": {
"edges": [
{
"confidence": 1,
"explanation": "text",
"properties": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"sourceId": "text",
"targetId": "text",
"type": "ABOUT"
}
],
"nodes": []
},
"exploitability": {
"attackComplexity": {
"description": "text",
"exploitChainRequired": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"label": "HIGH",
"payloadDifficulty": {
"description": "text",
"label": "EASY"
}
},
"attackRequirements": {
"description": "text",
"environmentState": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"label": "HIGH",
"mitm": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"raceCondition": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"timeWindow": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"title": "text"
},
"attackVector": {
"description": "text",
"label": "ADJACENT",
"subVectors": [
{
"description": "text",
"otherVector": "text",
"vector": "ADJACENT_ARP_SPOOFING"
}
]
},
"confidence": "HIGH",
"description": "text",
"label": "LIKELY",
"privilegesRequired": {
"description": "text",
"label": "HIGH",
"title": "text",
"types": [
"PRIVILEGED_USER"
]
},
"title": "text",
"unknowns": [
"text"
],
"userInteraction": {
"description": "text",
"label": "ACTIVE",
"otherTypes": [
"text"
],
"title": "text",
"types": [
"BROWSING"
]
}
},
"failedTriage": true,
"fixEffort": {
"confidence": "HIGH",
"description": "text",
"label": "EASY",
"title": "text",
"unknowns": [
"text"
]
},
"id": "text",
"impact": {
"availability": {
"cause": [
"BUFFER_OVERFLOW"
],
"description": "text",
"label": "HIGH",
"title": "text",
"type": [
"COMPLETE_SERVICE_OUTAGE"
]
},
"businessCriticality": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"confidence": "HIGH",
"confidentiality": {
"dataLeaked": [
"ACCESS_TOKEN"
],
"label": "HIGH"
},
"description": "text",
"integrity": {
"description": "text",
"label": "HIGH",
"title": "text",
"type": [
"DATABASE_ALTERED"
]
},
"label": "CRITICAL",
"title": "text",
"unknowns": [
"text"
]
},
"investigationConfidence": "HIGH",
"investigationId": "text",
"investigationUnknowns": [
"text"
],
"lastTriagedAt": "2026-01-01T00:00:00.000Z",
"memoriesGenerated": [
"text"
],
"memoriesUsed": [
"text"
],
"parentTriageId": "text",
"pentest": {
"attemptedCVEs": [
"text"
],
"browserEvidence": {
"citation": "text",
"family": "text",
"reason": "text",
"screenshotRefs": [
"text"
],
"verdict": "text"
},
"confidence": 1,
"cost": 1,
"duration": 1,
"exploitedCVE": "text",
"logs": [
{
"logs": [],
"summary": "text"
}
],
"mutationDisclosure": {
"writes": [
{
"method": "text",
"outcome": "text",
"statusCode": 1,
"url": "text"
}
],
"writesAttempted": true
},
"outcome": "CANNOT_DETERMINE",
"report": "text",
"reproductionScript": "text",
"sourceAvailability": {
"apiSchema": true,
"checkout": true,
"codeSnippets": true
},
"testedEndpoints": [
{
"method": "text",
"path": "text"
}
],
"validatedBy": {
"engine": "FINDING_EXPLOIT_VALIDATION",
"recordedAt": "2026-01-01T00:00:00.000Z",
"runId": "text"
}
},
"priority": "FALSE_POSITIVE",
"references": [
{
"documentId": "text",
"endLine": 1,
"fileName": "text",
"nodeId": "text",
"page": 1,
"quote": "text",
"score": 1,
"startLine": 1,
"title": "text"
}
],
"retriageComparison": {
"narrative": "text",
"newInformation": {
"cloudContextUpdated": true,
"memoryChanges": [
{
"description": "text",
"kind": "ADDED"
}
],
"pentestResultAdded": true,
"userComments": [
{
"commentId": "text",
"influence": "changed_verdict",
"keyClaim": "text"
}
]
},
"qualityAssessment": {
"remainingUncertainties": [
"text"
],
"sufficientEvidence": true
},
"verdictChanges": [
{
"current": "text",
"field": "text",
"previous": "text",
"reason": "text"
}
]
},
"retriageMetadata": {
"memoryChanges": [
{
"memoryChangeType": "MEMORY_ADDED",
"memoryId": "text"
}
],
"triggeredAt": "2026-01-01T00:00:00.000Z"
},
"retriageStatus": "NOT_RETRIAGED",
"severity": {
"confidence": "HIGH",
"label": "CRITICAL",
"score": 1,
"unknowns": [
"text"
]
},
"stopReason": "cost_cap",
"thoughts": "text",
"title": "text",
"version": 1
},
"triagedCommitSha": "text",
"validationResult": {
"evidence": "text",
"permissions": "text",
"result": "INVALID"
}
},
"version": "text",
"vulnManagementFrameworks": {
"results": [
{
"controls": [
{
"confidence": "exact",
"id": "text",
"level": "text",
"relationship": "text",
"title": "text",
"url": "text"
}
],
"framework": "cvss-3.1",
"mappingConfidence": "exact",
"notes": [
"text"
],
"rank": "text",
"score": {
"baseScore": 1,
"nomenclature": "text",
"qualitative": "text",
"synthesized": true,
"vector": "text"
},
"version": "text"
}
]
}
}Legacy alias:
Returns the triage data for a specific credential finding
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Internal Server Error
GET /secrets/findings/{findingId}/triage HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"finding": {
"agentVersion": "text",
"assessmentFactors": [
{
"description": "text",
"title": "text"
}
],
"codeContext": {
"codeBlocks": [
{
"codeText": "text",
"endLine": 1,
"filePath": "text",
"startLine": 1
}
],
"dataFlow": "text",
"error": "text",
"exitReason": "text",
"summary": "text",
"thoughts": "text"
},
"falsePositiveReason": "text",
"finding": {
"aiDevTitle": "text",
"aiTitle": "text",
"allowlistReason": "text",
"allowlistType": "AI",
"archivedAt": "2026-01-01T00:00:00.000Z",
"archivedTraceId": "text",
"author": "text",
"branch": "text",
"commit": "text",
"createdAt": "text",
"deletedAt": "2026-01-01T00:00:00.000Z",
"deletedTraceId": "text",
"description": "text",
"devDescription": "text",
"endColumn": 1,
"endLine": 1,
"entropy": 1,
"exploitabilityConfidence": "text",
"exploitabilityLabel": "text",
"failedTriage": true,
"falsePositiveReason": "text",
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"impactConfidence": "text",
"impactLabel": "CRITICAL",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isDeleted": true,
"isDuplicate": true,
"isFalsePositive": true,
"isResolved": true,
"match": "text",
"owner": "text",
"ownerType": "text",
"platform": "text",
"priorityLabel": "URGENT",
"priorityLabelReason": "text",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"redactedSecret": "text",
"repository": "text",
"repositoryId": "text",
"repositoryName": "text",
"resolvedAt": "2026-01-01T00:00:00.000Z",
"ruleId": "text",
"scannedCommitSha": "text",
"scanner": "text",
"scopes": [
"text"
],
"secretHash": "text",
"secretType": "text",
"secretValue": "text",
"severityConfidence": "text",
"severityLabel": "CRITICAL",
"severityOverride": "CRITICAL",
"severityScore": 1,
"startColumn": 1,
"startLine": 1,
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timeStamp": "text",
"timestampUnix": 1,
"triageAgentVersion": "text",
"triageDurationSeconds": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageLlmCostUsd": 1,
"triageMaxInputTokens": 1,
"triageStart": "2026-01-01T00:00:00.000Z",
"triageStopReason": "text",
"triageTokenCount": 1,
"triageTraceId": "text",
"updatedAt": "text",
"userId": "text",
"userNotes": "text",
"verified": true,
"verifiedAt": "text"
},
"fixStoryPointEstimate": 1,
"investigationSteps": [
{
"details": [
"text"
],
"title": "text"
}
],
"isFalsePositive": true,
"orgContextVersion": "text",
"priority": {
"description": "text",
"exploitability": {
"description": "text",
"label": "HIGH"
},
"impact": {
"description": "text",
"label": "HIGH"
},
"label": "IMPORTANT",
"score": 1
},
"repoContextVersion": "text",
"triage": {
"budgetExhausted": true,
"campaignMetadata": {
"id": "text",
"name": "text"
},
"cloudContext": {
"confidence": 1,
"mode": "MODEA",
"ownershipBasis": "declared",
"repos": [
"text"
],
"thoughts": "text"
},
"complianceImpact": {
"citations": [
{
"documentId": "text",
"endLine": 1,
"fileName": "text",
"nodeId": "text",
"page": 1,
"quote": "text",
"score": 1,
"startLine": 1,
"title": "text"
}
],
"confidence": "HIGH",
"frameworks": [
{
"clause": "text",
"framework": "CCPA",
"obligation": "text"
}
],
"rationale": "text"
},
"customerQuestions": {
"customMessage": "text",
"generatedMemoryIds": [
"text"
],
"id": "text",
"questions": [
{
"answer": null,
"answerMemoryId": "text",
"answeredAt": "2026-01-01T00:00:00.000Z",
"customMessage": "text",
"findingIds": [
"text"
],
"id": "text",
"options": [
{
"id": "text",
"label": "text",
"value": "text"
}
],
"questionText": "text",
"questionType": "FREE_TEXT",
"relatedMemoryIds": [
"text"
],
"scope": "CLOUD",
"scopeResourceId": "text",
"unknownIds": [
"text"
]
}
]
},
"description": "text",
"descriptionSummary": "text",
"devDescription": "text",
"devTitle": "text",
"evidence": {
"edges": [
{
"confidence": 1,
"explanation": "text",
"properties": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"sourceId": "text",
"targetId": "text",
"type": "ABOUT"
}
],
"nodes": []
},
"exploitHypothesis": {
"edges": [
{
"confidence": 1,
"explanation": "text",
"properties": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"sourceId": "text",
"targetId": "text",
"type": "ABOUT"
}
],
"nodes": []
},
"exploitability": {
"attackComplexity": {
"description": "text",
"exploitChainRequired": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"label": "HIGH",
"payloadDifficulty": {
"description": "text",
"label": "EASY"
}
},
"attackRequirements": {
"description": "text",
"environmentState": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"label": "HIGH",
"mitm": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"raceCondition": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"timeWindow": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"title": "text"
},
"attackVector": {
"description": "text",
"label": "ADJACENT",
"subVectors": [
{
"description": "text",
"otherVector": "text",
"vector": "ADJACENT_ARP_SPOOFING"
}
]
},
"confidence": "HIGH",
"description": "text",
"label": "LIKELY",
"privilegesRequired": {
"description": "text",
"label": "HIGH",
"title": "text",
"types": [
"PRIVILEGED_USER"
]
},
"title": "text",
"unknowns": [
"text"
],
"userInteraction": {
"description": "text",
"label": "ACTIVE",
"otherTypes": [
"text"
],
"title": "text",
"types": [
"BROWSING"
]
}
},
"failedTriage": true,
"fixEffort": {
"confidence": "HIGH",
"description": "text",
"label": "EASY",
"title": "text",
"unknowns": [
"text"
]
},
"id": "text",
"impact": {
"availability": {
"cause": [
"BUFFER_OVERFLOW"
],
"description": "text",
"label": "HIGH",
"title": "text",
"type": [
"COMPLETE_SERVICE_OUTAGE"
]
},
"businessCriticality": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"confidence": "HIGH",
"confidentiality": {
"dataLeaked": [
"ACCESS_TOKEN"
],
"label": "HIGH"
},
"description": "text",
"integrity": {
"description": "text",
"label": "HIGH",
"title": "text",
"type": [
"DATABASE_ALTERED"
]
},
"label": "CRITICAL",
"title": "text",
"unknowns": [
"text"
]
},
"investigationConfidence": "HIGH",
"investigationId": "text",
"investigationUnknowns": [
"text"
],
"lastTriagedAt": "2026-01-01T00:00:00.000Z",
"memoriesGenerated": [
"text"
],
"memoriesUsed": [
"text"
],
"parentTriageId": "text",
"pentest": {
"attemptedCVEs": [
"text"
],
"browserEvidence": {
"citation": "text",
"family": "text",
"reason": "text",
"screenshotRefs": [
"text"
],
"verdict": "text"
},
"confidence": 1,
"cost": 1,
"duration": 1,
"exploitedCVE": "text",
"logs": [
{
"logs": [],
"summary": "text"
}
],
"mutationDisclosure": {
"writes": [
{
"method": "text",
"outcome": "text",
"statusCode": 1,
"url": "text"
}
],
"writesAttempted": true
},
"outcome": "CANNOT_DETERMINE",
"report": "text",
"reproductionScript": "text",
"sourceAvailability": {
"apiSchema": true,
"checkout": true,
"codeSnippets": true
},
"testedEndpoints": [
{
"method": "text",
"path": "text"
}
],
"validatedBy": {
"engine": "FINDING_EXPLOIT_VALIDATION",
"recordedAt": "2026-01-01T00:00:00.000Z",
"runId": "text"
}
},
"priority": "FALSE_POSITIVE",
"references": [
{
"documentId": "text",
"endLine": 1,
"fileName": "text",
"nodeId": "text",
"page": 1,
"quote": "text",
"score": 1,
"startLine": 1,
"title": "text"
}
],
"retriageComparison": {
"narrative": "text",
"newInformation": {
"cloudContextUpdated": true,
"memoryChanges": [
{
"description": "text",
"kind": "ADDED"
}
],
"pentestResultAdded": true,
"userComments": [
{
"commentId": "text",
"influence": "changed_verdict",
"keyClaim": "text"
}
]
},
"qualityAssessment": {
"remainingUncertainties": [
"text"
],
"sufficientEvidence": true
},
"verdictChanges": [
{
"current": "text",
"field": "text",
"previous": "text",
"reason": "text"
}
]
},
"retriageMetadata": {
"memoryChanges": [
{
"memoryChangeType": "MEMORY_ADDED",
"memoryId": "text"
}
],
"triggeredAt": "2026-01-01T00:00:00.000Z"
},
"retriageStatus": "NOT_RETRIAGED",
"severity": {
"confidence": "HIGH",
"label": "CRITICAL",
"score": 1,
"unknowns": [
"text"
]
},
"stopReason": "cost_cap",
"thoughts": "text",
"title": "text",
"version": 1
},
"triagedCommitSha": "text",
"validationResult": {
"evidence": "text",
"permissions": "text",
"result": "INVALID"
}
},
"version": "text",
"vulnManagementFrameworks": {
"results": [
{
"controls": [
{
"confidence": "exact",
"id": "text",
"level": "text",
"relationship": "text",
"title": "text",
"url": "text"
}
],
"framework": "cvss-3.1",
"mappingConfidence": "exact",
"notes": [
"text"
],
"rank": "text",
"score": {
"baseScore": 1,
"nomenclature": "text",
"qualitative": "text",
"synthesized": true,
"vector": "text"
},
"version": "text"
}
]
}
}Sensitive data:
Returns the triage data for a specific sensitive data finding
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Internal Server Error
GET /secrets/sensitivedata/findings/{findingId}/triage HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"finding": {
"agentVersion": "text",
"assessmentFactors": [
{
"description": "text",
"title": "text"
}
],
"codeContext": {
"codeBlocks": [
{
"codeText": "text",
"endLine": 1,
"filePath": "text",
"startLine": 1
}
],
"dataFlow": "text",
"error": "text",
"exitReason": "text",
"summary": "text",
"thoughts": "text"
},
"falsePositiveReason": "text",
"finding": {
"aiTitle": "text",
"archivedAt": "2026-01-01T00:00:00.000Z",
"archivedTraceId": "text",
"author": "text",
"branch": "text",
"budgetExhausted": true,
"commit": "text",
"createdAt": "text",
"deletedAt": "2026-01-01T00:00:00.000Z",
"deletedTraceId": "text",
"failedTriage": true,
"falsePositiveReason": "text",
"fields": [
{
"dataType": "text",
"endColumn": 1,
"endLine": 1,
"ruleId": "text",
"scanner": "text",
"startColumn": 1,
"startLine": 1
}
],
"fileOwners": [
{
"name": "text",
"type": "email"
}
],
"filePath": "text",
"id": "text",
"installationId": "text",
"isAllowlisted": true,
"isArchived": true,
"isDefaultBranch": true,
"isDeleted": true,
"isDuplicate": true,
"isFalsePositive": true,
"isResolved": true,
"isTriaged": true,
"owner": "text",
"ownerType": "text",
"platform": "text",
"priorityLabel": "URGENT",
"priorityLabelReason": "text",
"priorityOverride": "URGENT",
"priorityScore": 1,
"projectId": "text",
"projectName": "text",
"repositoryId": "text",
"repositoryName": "text",
"resolvedAt": "2026-01-01T00:00:00.000Z",
"scannedCommitSha": "text",
"secretValue": "text",
"tenantId": "text",
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"timestampUnix": 1,
"triageAgentVersion": "text",
"triageDurationSeconds": 1,
"triageEnd": "2026-01-01T00:00:00.000Z",
"triageLlmCostUsd": 1,
"triageStart": "2026-01-01T00:00:00.000Z",
"triageStopReason": "text",
"triageTokenCount": 1,
"updatedAt": "text",
"userId": "text",
"userNotes": "text"
},
"fixStoryPointEstimate": 1,
"investigationSteps": [
{
"details": [
"text"
],
"title": "text"
}
],
"isFalsePositive": true,
"orgContextVersion": "text",
"priority": {
"description": "text",
"exploitability": {
"description": "text",
"label": "HIGH"
},
"impact": {
"description": "text",
"label": "HIGH"
},
"label": "IMPORTANT",
"score": 1
},
"repoContextVersion": "text",
"triage": {
"budgetExhausted": true,
"campaignMetadata": {
"id": "text",
"name": "text"
},
"cloudContext": {
"confidence": 1,
"mode": "MODEA",
"ownershipBasis": "declared",
"repos": [
"text"
],
"thoughts": "text"
},
"complianceImpact": {
"citations": [
{
"documentId": "text",
"endLine": 1,
"fileName": "text",
"nodeId": "text",
"page": 1,
"quote": "text",
"score": 1,
"startLine": 1,
"title": "text"
}
],
"confidence": "HIGH",
"frameworks": [
{
"clause": "text",
"framework": "CCPA",
"obligation": "text"
}
],
"rationale": "text"
},
"customerQuestions": {
"customMessage": "text",
"generatedMemoryIds": [
"text"
],
"id": "text",
"questions": [
{
"answer": null,
"answerMemoryId": "text",
"answeredAt": "2026-01-01T00:00:00.000Z",
"customMessage": "text",
"findingIds": [
"text"
],
"id": "text",
"options": [
{
"id": "text",
"label": "text",
"value": "text"
}
],
"questionText": "text",
"questionType": "FREE_TEXT",
"relatedMemoryIds": [
"text"
],
"scope": "CLOUD",
"scopeResourceId": "text",
"unknownIds": [
"text"
]
}
]
},
"description": "text",
"descriptionSummary": "text",
"devDescription": "text",
"devTitle": "text",
"evidence": {
"edges": [
{
"confidence": 1,
"explanation": "text",
"properties": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"sourceId": "text",
"targetId": "text",
"type": "ABOUT"
}
],
"nodes": []
},
"exploitHypothesis": {
"edges": [
{
"confidence": 1,
"explanation": "text",
"properties": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"sourceId": "text",
"targetId": "text",
"type": "ABOUT"
}
],
"nodes": []
},
"exploitability": {
"attackComplexity": {
"description": "text",
"exploitChainRequired": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"label": "HIGH",
"payloadDifficulty": {
"description": "text",
"label": "EASY"
}
},
"attackRequirements": {
"description": "text",
"environmentState": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"label": "HIGH",
"mitm": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"raceCondition": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"timeWindow": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"title": "text"
},
"attackVector": {
"description": "text",
"label": "ADJACENT",
"subVectors": [
{
"description": "text",
"otherVector": "text",
"vector": "ADJACENT_ARP_SPOOFING"
}
]
},
"confidence": "HIGH",
"description": "text",
"label": "LIKELY",
"privilegesRequired": {
"description": "text",
"label": "HIGH",
"title": "text",
"types": [
"PRIVILEGED_USER"
]
},
"title": "text",
"unknowns": [
"text"
],
"userInteraction": {
"description": "text",
"label": "ACTIVE",
"otherTypes": [
"text"
],
"title": "text",
"types": [
"BROWSING"
]
}
},
"failedTriage": true,
"fixEffort": {
"confidence": "HIGH",
"description": "text",
"label": "EASY",
"title": "text",
"unknowns": [
"text"
]
},
"id": "text",
"impact": {
"availability": {
"cause": [
"BUFFER_OVERFLOW"
],
"description": "text",
"label": "HIGH",
"title": "text",
"type": [
"COMPLETE_SERVICE_OUTAGE"
]
},
"businessCriticality": {
"description": "text",
"label": "HIGH",
"title": "text"
},
"confidence": "HIGH",
"confidentiality": {
"dataLeaked": [
"ACCESS_TOKEN"
],
"label": "HIGH"
},
"description": "text",
"integrity": {
"description": "text",
"label": "HIGH",
"title": "text",
"type": [
"DATABASE_ALTERED"
]
},
"label": "CRITICAL",
"title": "text",
"unknowns": [
"text"
]
},
"investigationConfidence": "HIGH",
"investigationId": "text",
"investigationUnknowns": [
"text"
],
"lastTriagedAt": "2026-01-01T00:00:00.000Z",
"memoriesGenerated": [
"text"
],
"memoriesUsed": [
"text"
],
"parentTriageId": "text",
"pentest": {
"attemptedCVEs": [
"text"
],
"browserEvidence": {
"citation": "text",
"family": "text",
"reason": "text",
"screenshotRefs": [
"text"
],
"verdict": "text"
},
"confidence": 1,
"cost": 1,
"duration": 1,
"exploitedCVE": "text",
"logs": [
{
"logs": [],
"summary": "text"
}
],
"mutationDisclosure": {
"writes": [
{
"method": "text",
"outcome": "text",
"statusCode": 1,
"url": "text"
}
],
"writesAttempted": true
},
"outcome": "CANNOT_DETERMINE",
"report": "text",
"reproductionScript": "text",
"sourceAvailability": {
"apiSchema": true,
"checkout": true,
"codeSnippets": true
},
"testedEndpoints": [
{
"method": "text",
"path": "text"
}
],
"validatedBy": {
"engine": "FINDING_EXPLOIT_VALIDATION",
"recordedAt": "2026-01-01T00:00:00.000Z",
"runId": "text"
}
},
"priority": "FALSE_POSITIVE",
"references": [
{
"documentId": "text",
"endLine": 1,
"fileName": "text",
"nodeId": "text",
"page": 1,
"quote": "text",
"score": 1,
"startLine": 1,
"title": "text"
}
],
"retriageComparison": {
"narrative": "text",
"newInformation": {
"cloudContextUpdated": true,
"memoryChanges": [
{
"description": "text",
"kind": "ADDED"
}
],
"pentestResultAdded": true,
"userComments": [
{
"commentId": "text",
"influence": "changed_verdict",
"keyClaim": "text"
}
]
},
"qualityAssessment": {
"remainingUncertainties": [
"text"
],
"sufficientEvidence": true
},
"verdictChanges": [
{
"current": "text",
"field": "text",
"previous": "text",
"reason": "text"
}
]
},
"retriageMetadata": {
"memoryChanges": [
{
"memoryChangeType": "MEMORY_ADDED",
"memoryId": "text"
}
],
"triggeredAt": "2026-01-01T00:00:00.000Z"
},
"retriageStatus": "NOT_RETRIAGED",
"severity": {
"confidence": "HIGH",
"label": "CRITICAL",
"score": 1,
"unknowns": [
"text"
]
},
"stopReason": "cost_cap",
"thoughts": "text",
"title": "text",
"version": 1
},
"triagedCommitSha": "text"
},
"version": "text",
"vulnManagementFrameworks": {
"results": [
{
"controls": [
{
"confidence": "exact",
"id": "text",
"level": "text",
"relationship": "text",
"title": "text",
"url": "text"
}
],
"framework": "cvss-3.1",
"mappingConfidence": "exact",
"notes": [
"text"
],
"rank": "text",
"score": {
"baseScore": 1,
"nomenclature": "text",
"qualitative": "text",
"synthesized": true,
"vector": "text"
},
"version": "text"
}
]
}
}List users related to a finding
Returns up to three candidate people for routing the finding, based on git blame for the finding location and repository contributions, each with a reason.
Credentials:
Get users related to a credential finding based on git blame and repository contributions.
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Internal Server Error
GET /secrets/credentials/findings/{findingId}/users HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"users": [
{
"reason": "text",
"user": {
"asana": {
"id": "text"
},
"azure": {
"id": "text"
},
"azureEntra": {
"id": "text"
},
"bitbucket": {
"id": "text"
},
"createdAt": "text",
"createdBy": "text",
"deleted": true,
"displayName": "text",
"email": "text",
"github": {
"id": 1,
"nodeId": "text"
},
"gitlab": {
"id": 1
},
"googleWorkspace": {
"id": "text"
},
"id": "text",
"isBot": true,
"isRestricted": true,
"jira": {
"id": "text",
"name": "text"
},
"lastUpdatedBy": "text",
"linear": {
"id": "text"
},
"name": "text",
"okta": {
"id": "text"
},
"provider": {
"asana": {
"id": "text"
},
"azure": {
"id": "text"
},
"azureEntra": {
"id": "text"
},
"bitBucket": {
"id": "text"
},
"gitHub": {
"id": 1,
"nodeId": "text"
},
"gitlab": {
"id": 1
},
"googleWorkspace": {
"id": "text"
},
"id": "DX",
"jira": {
"id": "text",
"name": "text"
},
"linear": {
"id": "text"
},
"okta": {
"id": "text"
},
"slack": {
"id": "text",
"name": "text"
},
"teams": {
"id": "text",
"teamIDs": [
"text"
]
}
},
"realName": "text",
"slack": {
"id": "text",
"name": "text"
},
"slug": "text",
"teams": {
"id": "text",
"teamIDs": [
"text"
]
},
"updatedAt": "text",
"username": "text"
}
}
],
"version": "text"
}Legacy alias:
Get users related to a credential finding based on git blame and repository contributions.
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Internal Server Error
GET /secrets/findings/{findingId}/users HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"users": [
{
"reason": "text",
"user": {
"asana": {
"id": "text"
},
"azure": {
"id": "text"
},
"azureEntra": {
"id": "text"
},
"bitbucket": {
"id": "text"
},
"createdAt": "text",
"createdBy": "text",
"deleted": true,
"displayName": "text",
"email": "text",
"github": {
"id": 1,
"nodeId": "text"
},
"gitlab": {
"id": 1
},
"googleWorkspace": {
"id": "text"
},
"id": "text",
"isBot": true,
"isRestricted": true,
"jira": {
"id": "text",
"name": "text"
},
"lastUpdatedBy": "text",
"linear": {
"id": "text"
},
"name": "text",
"okta": {
"id": "text"
},
"provider": {
"asana": {
"id": "text"
},
"azure": {
"id": "text"
},
"azureEntra": {
"id": "text"
},
"bitBucket": {
"id": "text"
},
"gitHub": {
"id": 1,
"nodeId": "text"
},
"gitlab": {
"id": 1
},
"googleWorkspace": {
"id": "text"
},
"id": "DX",
"jira": {
"id": "text",
"name": "text"
},
"linear": {
"id": "text"
},
"okta": {
"id": "text"
},
"slack": {
"id": "text",
"name": "text"
},
"teams": {
"id": "text",
"teamIDs": [
"text"
]
}
},
"realName": "text",
"slack": {
"id": "text",
"name": "text"
},
"slug": "text",
"teams": {
"id": "text",
"teamIDs": [
"text"
]
},
"updatedAt": "text",
"username": "text"
}
}
],
"version": "text"
}Sensitive data:
Get users related to a sensitive data (PII) finding based on git blame and repository contributions.
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Internal Server Error
GET /secrets/sensitivedata/findings/{findingId}/users HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"users": [
{
"reason": "text",
"user": {
"asana": {
"id": "text"
},
"azure": {
"id": "text"
},
"azureEntra": {
"id": "text"
},
"bitbucket": {
"id": "text"
},
"createdAt": "text",
"createdBy": "text",
"deleted": true,
"displayName": "text",
"email": "text",
"github": {
"id": 1,
"nodeId": "text"
},
"gitlab": {
"id": 1
},
"googleWorkspace": {
"id": "text"
},
"id": "text",
"isBot": true,
"isRestricted": true,
"jira": {
"id": "text",
"name": "text"
},
"lastUpdatedBy": "text",
"linear": {
"id": "text"
},
"name": "text",
"okta": {
"id": "text"
},
"provider": {
"asana": {
"id": "text"
},
"azure": {
"id": "text"
},
"azureEntra": {
"id": "text"
},
"bitBucket": {
"id": "text"
},
"gitHub": {
"id": 1,
"nodeId": "text"
},
"gitlab": {
"id": 1
},
"googleWorkspace": {
"id": "text"
},
"id": "DX",
"jira": {
"id": "text",
"name": "text"
},
"linear": {
"id": "text"
},
"okta": {
"id": "text"
},
"slack": {
"id": "text",
"name": "text"
},
"teams": {
"id": "text",
"teamIDs": [
"text"
]
}
},
"realName": "text",
"slack": {
"id": "text",
"name": "text"
},
"slug": "text",
"teams": {
"id": "text",
"teamIDs": [
"text"
]
},
"updatedAt": "text",
"username": "text"
}
}
],
"version": "text"
}List finding events
Retrieve the decision history for a credential finding. Use the credentials path; the legacy path remains as an alias. Sensitive-data findings do not expose this resource. The response is not paginated.
Credentials:
Returns a list of events for a given finding.
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Internal Server Error
GET /secrets/credentials/findings/{findingId}/events HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"events": [
{
"data": null,
"id": "text",
"time": "text",
"timestampUnix": 1,
"type": "org_context_agent_started"
}
],
"nextToken": "text",
"numItems": 1,
"version": "text"
}Legacy alias:
Returns a list of events for a given finding.
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Internal Server Error
GET /secrets/findings/{findingId}/events HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"events": [
{
"data": null,
"id": "text",
"time": "text",
"timestampUnix": 1,
"type": "org_context_agent_started"
}
],
"nextToken": "text",
"numItems": 1,
"version": "text"
}Allowlisting
Allowlist a finding
Suppress an individual finding with an audit trail. Supply an allowlistReason and an allowlistType (AI, UserFixed, UserAssumeRisk, UserFalsePositive, or UserOther). The finding is marked resolved, an allowlist event is recorded, and an open ticket is closed on a best-effort basis; a ticket-close failure does not fail the call. Success returns 204.
Credentials:
Allowlist a credential secret
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
The reason for allowlisting the finding
No Content
No content
Bad Request
Forbidden
Not Found
Internal Server Error
POST /secrets/credentials/findings/{findingId}/allowlist HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 47
{
"allowlistReason": "text",
"allowlistType": "AI"
}No content
Legacy alias:
Allowlist a credential secret
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
The reason for allowlisting the finding
No Content
No content
Bad Request
Forbidden
Not Found
Internal Server Error
POST /secrets/findings/{findingId}/allowlist HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 47
{
"allowlistReason": "text",
"allowlistType": "AI"
}No content
Sensitive data:
Allowlist a sensitive data (PII) finding
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
The reason for allowlisting the finding
No Content
No content
Bad Request
Forbidden
Not Found
Internal Server Error
POST /secrets/sensitivedata/findings/{findingId}/allowlist HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 47
{
"allowlistReason": "text",
"allowlistType": "AI"
}No content
Allowlist findings in bulk
Allowlist multiple findings in a single call. The body adds a findingIds array alongside allowlistReason and allowlistType; an empty array returns 400. Findings are processed concurrently and the call is not atomic: an unknown ID returns 404 but findings already processed stay allowlisted. For credentials, the bulk call records the allowlist type but does not store allowlistReason on the finding, so use the single-finding call when you need the reason kept. Success returns 204.
Credentials:
Allowlist a list of credential findings, by findingsID
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
The reason for allowing the finding
The ID of the finding to allowlist
No Content
No content
Bad Request
Forbidden
Not Found
Internal Server Error
POST /secrets/credentials/findings/allowlist/batch HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 69
{
"allowlistReason": "text",
"allowlistType": "AI",
"findingIds": [
"text"
]
}No content
Legacy alias:
Allowlist a list of credential findings, by findingsID
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
The reason for allowing the finding
The ID of the finding to allowlist
No Content
No content
Bad Request
Forbidden
Not Found
Internal Server Error
POST /secrets/findings/allowlist/batch HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 69
{
"allowlistReason": "text",
"allowlistType": "AI",
"findingIds": [
"text"
]
}No content
Sensitive data:
Allowlist a list of sensitive data findings, by findingsID
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
The reason for allowlisting the findings
The IDs of the findings to allowlist
No Content
No content
Bad Request
Forbidden
Not Found
Internal Server Error
POST /secrets/sensitivedata/findings/allowlist/batch HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 69
{
"allowlistReason": "text",
"allowlistType": "AI",
"findingIds": [
"text"
]
}No content
Remove a finding from the allowlist
Reverse an allowlist decision and return the finding to the active backlog. Supply unallowlistReason and unallowlistType. A ticket closed by the allowlist is reopened unless the finding is also archived, a false positive or a duplicate. If the old ticket cannot be reopened a new linked ticket is created. Success returns 204.
Credentials:
Unallowlist a credential secret
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
The reason for unallowlisting the finding
No Content
No content
Bad Request
Forbidden
Not Found
Internal Server Error
POST /secrets/credentials/findings/{findingId}/unallowlist HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 51
{
"unallowlistReason": "text",
"unallowlistType": "AI"
}No content
Legacy alias:
Unallowlist a credential secret
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
The reason for unallowlisting the finding
No Content
No content
Bad Request
Forbidden
Not Found
Internal Server Error
POST /secrets/findings/{findingId}/unallowlist HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 51
{
"unallowlistReason": "text",
"unallowlistType": "AI"
}No content
Sensitive data:
Unallowlist a sensitive data (PII) finding
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
The reason for unallowlisting the finding
No Content
No content
Bad Request
Forbidden
Not Found
Internal Server Error
POST /secrets/sensitivedata/findings/{findingId}/unallowlist HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 51
{
"unallowlistReason": "text",
"unallowlistType": "AI"
}No content
Tickets
Create a ticket
Create a ticket for the finding on the tenant's configured ticket integration. The body is optional and accepts message, assignees, project, campaignId and campaignTitle. A finding that already has a ticket on that provider returns 400. Errors to expect: 501 when no ticket integration is configured, 412 when the integration is disabled, needs reconnecting, or requires an assignee you did not supply, and 503 or 504 when the ticket provider is temporarily unavailable. The response is the created ticket.
Credentials:
Creates a ticket for a given credential finding on the tenant's configured ticket integration
The ID of the finding to create a Jira ticket for
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Precondition Failed
Internal Server Error
Not Implemented
Service Unavailable
Gateway Timeout
POST /secrets/credentials/findings/{findingId}/ticket HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 1031
{
"assignees": [
{
"asana": {
"id": "text"
},
"azure": {
"id": "text"
},
"azureEntra": {
"id": "text"
},
"bitbucket": {
"id": "text"
},
"createdAt": "text",
"createdBy": "text",
"deleted": true,
"displayName": "text",
"email": "text",
"github": {
"id": 1,
"nodeId": "text"
},
"gitlab": {
"id": 1
},
"googleWorkspace": {
"id": "text"
},
"id": "text",
"isBot": true,
"isRestricted": true,
"jira": {
"id": "text",
"name": "text"
},
"lastUpdatedBy": "text",
"linear": {
"id": "text"
},
"name": "text",
"okta": {
"id": "text"
},
"provider": {
"asana": {
"id": "text"
},
"azure": {
"id": "text"
},
"azureEntra": {
"id": "text"
},
"bitBucket": {
"id": "text"
},
"gitHub": {
"id": 1,
"nodeId": "text"
},
"gitlab": {
"id": 1
},
"googleWorkspace": {
"id": "text"
},
"id": "DX",
"jira": {
"id": "text",
"name": "text"
},
"linear": {
"id": "text"
},
"okta": {
"id": "text"
},
"slack": {
"id": "text",
"name": "text"
},
"teams": {
"id": "text",
"teamIDs": [
"text"
]
}
},
"realName": "text",
"slack": {
"id": "text",
"name": "text"
},
"slug": "text",
"teams": {
"id": "text",
"teamIDs": [
"text"
]
},
"updatedAt": "text",
"username": "text"
}
],
"campaignId": "text",
"campaignTitle": "text",
"message": "text",
"project": "text"
}{
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"version": "text"
}Legacy alias:
Creates a ticket for a given credential finding on the tenant's configured ticket integration
The ID of the finding to create a Jira ticket for
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Precondition Failed
Internal Server Error
Not Implemented
Service Unavailable
Gateway Timeout
POST /secrets/findings/{findingId}/ticket HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 1031
{
"assignees": [
{
"asana": {
"id": "text"
},
"azure": {
"id": "text"
},
"azureEntra": {
"id": "text"
},
"bitbucket": {
"id": "text"
},
"createdAt": "text",
"createdBy": "text",
"deleted": true,
"displayName": "text",
"email": "text",
"github": {
"id": 1,
"nodeId": "text"
},
"gitlab": {
"id": 1
},
"googleWorkspace": {
"id": "text"
},
"id": "text",
"isBot": true,
"isRestricted": true,
"jira": {
"id": "text",
"name": "text"
},
"lastUpdatedBy": "text",
"linear": {
"id": "text"
},
"name": "text",
"okta": {
"id": "text"
},
"provider": {
"asana": {
"id": "text"
},
"azure": {
"id": "text"
},
"azureEntra": {
"id": "text"
},
"bitBucket": {
"id": "text"
},
"gitHub": {
"id": 1,
"nodeId": "text"
},
"gitlab": {
"id": 1
},
"googleWorkspace": {
"id": "text"
},
"id": "DX",
"jira": {
"id": "text",
"name": "text"
},
"linear": {
"id": "text"
},
"okta": {
"id": "text"
},
"slack": {
"id": "text",
"name": "text"
},
"teams": {
"id": "text",
"teamIDs": [
"text"
]
}
},
"realName": "text",
"slack": {
"id": "text",
"name": "text"
},
"slug": "text",
"teams": {
"id": "text",
"teamIDs": [
"text"
]
},
"updatedAt": "text",
"username": "text"
}
],
"campaignId": "text",
"campaignTitle": "text",
"message": "text",
"project": "text"
}{
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"version": "text"
}Sensitive data:
Creates a ticket for a given sensitive data finding on the tenant's configured ticket integration
The ID of the finding to create a ticket for
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Precondition Failed
Internal Server Error
Not Implemented
Service Unavailable
Gateway Timeout
POST /secrets/sensitivedata/findings/{findingId}/ticket HTTP/1.1
Host: api.<TENANT>.nullify.ai
Content-Type: application/json
Accept: */*
Content-Length: 1031
{
"assignees": [
{
"asana": {
"id": "text"
},
"azure": {
"id": "text"
},
"azureEntra": {
"id": "text"
},
"bitbucket": {
"id": "text"
},
"createdAt": "text",
"createdBy": "text",
"deleted": true,
"displayName": "text",
"email": "text",
"github": {
"id": 1,
"nodeId": "text"
},
"gitlab": {
"id": 1
},
"googleWorkspace": {
"id": "text"
},
"id": "text",
"isBot": true,
"isRestricted": true,
"jira": {
"id": "text",
"name": "text"
},
"lastUpdatedBy": "text",
"linear": {
"id": "text"
},
"name": "text",
"okta": {
"id": "text"
},
"provider": {
"asana": {
"id": "text"
},
"azure": {
"id": "text"
},
"azureEntra": {
"id": "text"
},
"bitBucket": {
"id": "text"
},
"gitHub": {
"id": 1,
"nodeId": "text"
},
"gitlab": {
"id": 1
},
"googleWorkspace": {
"id": "text"
},
"id": "DX",
"jira": {
"id": "text",
"name": "text"
},
"linear": {
"id": "text"
},
"okta": {
"id": "text"
},
"slack": {
"id": "text",
"name": "text"
},
"teams": {
"id": "text",
"teamIDs": [
"text"
]
}
},
"realName": "text",
"slack": {
"id": "text",
"name": "text"
},
"slug": "text",
"teams": {
"id": "text",
"teamIDs": [
"text"
]
},
"updatedAt": "text",
"username": "text"
}
],
"campaignId": "text",
"campaignTitle": "text",
"message": "text",
"project": "text"
}{
"ticket": {
"asana": {
"projectGid": "text",
"taskGid": "text",
"url": "text"
},
"azure": {
"url": "text",
"workItemId": 1
},
"github": {
"issueId": 1,
"nodeId": "text",
"number": 1,
"repositoryName": "text",
"url": "text"
},
"gitlab": {},
"jira": {
"issueId": "text",
"issueKey": "text",
"url": "text"
},
"linear": {
"issueId": "text",
"teamId": "text",
"url": "text"
},
"providerId": "DX"
},
"version": "text"
}Delete a ticket
Close the finding's ticket on the ticket integration and clear Nullify's link to it. The call is idempotent: a finding with no ticket returns 200 and does nothing. It returns 501 when no ticket integration is configured.
Credentials:
Removes the ticket associated with a credential finding: closes it on the configured integration and clears Nullify's tracking. Idempotent.
The ID of the credential finding whose ticket should be removed
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Precondition Failed
Internal Server Error
Not Implemented
DELETE /secrets/credentials/findings/{findingId}/ticket HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"version": "text"
}Legacy alias:
Removes the ticket associated with a credential finding: closes it on the configured integration and clears Nullify's tracking. Idempotent.
The ID of the credential finding whose ticket should be removed
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Precondition Failed
Internal Server Error
Not Implemented
DELETE /secrets/findings/{findingId}/ticket HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"version": "text"
}Sensitive data:
Removes the ticket associated with a sensitive-data finding: closes it on the configured integration and clears Nullify's tracking. Idempotent.
The ID of the sensitive-data finding whose ticket should be removed
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Not Found
Precondition Failed
Internal Server Error
Not Implemented
DELETE /secrets/sensitivedata/findings/{findingId}/ticket HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"version": "text"
}Scan runs
List scan runs
Lists secrets scan runs for one repository, with status, trigger, branch, commit, live, new and allowlisted finding counts and severity totals. repositoryId is required. This list uses offset paging: limit defaults to 10 and is capped at 50, offset skips rows, sort is newest (default) or oldest, and from and to are RFC 3339 bounds on the start time. The response includes totalCount. Fixed and reintroduced counts are always 0 for secrets scans.
Repository ID to list scan runs for
Max scan runs per page (default 10, max 50)
Pagination offset (default 0)
Sort order by start time (default newest)
Only include scan runs started at or after this RFC3339 timestamp
Only include scan runs started at or before this RFC3339 timestamp
The Azure organization ID
The Bitbucket workspace ID
The Github owner ID
The GitLab group ID
The Nullify installation ID
Filter by Azure repository IDs
Filter by GitHub repository IDs
Filter by GitHub team ID
Filter by Bitbucket repository IDs
OK
Bad Request
Forbidden
Internal Server Error
GET /secrets/scan-runs?repositoryId=text HTTP/1.1
Host: api.<TENANT>.nullify.ai
Accept: */*
{
"scanRuns": [
{
"allowlistedFindingsCount": 1,
"branch": "text",
"commitHash": "text",
"completedAt": "text",
"errorMessage": "text",
"fixedFindingsCount": 1,
"isDefaultBranch": true,
"liveFindingsCount": 1,
"newFindingsCount": 1,
"reintroducedFindingsCount": 1,
"scaOutcome": {
"coverageGaps": [
{
"ecosystems": [
"text"
],
"packageAuth": [
{
"credential": "rejected",
"dir": "text",
"ecosystem": "text",
"evidence": "text",
"registry": "text",
"tool": "text",
"version": 1
}
],
"reason": "text",
"scope": "text",
"side": "source",
"source": "sbom",
"status": "text",
"suspect": {
"firstSeen": "2026-01-01T00:00:00.000Z",
"loss": "text",
"sha256": "text",
"version": 1
},
"touchedByChange": true
}
],
"degraded": true,
"failureStage": "clone",
"keptLiveCoverage": 1,
"keptLiveNotSeenInSbom": 1,
"keptLivePackageGate": 1,
"keptLiveUnchangedManifests": 1,
"sbomAuthoritative": true,
"sbomFailureClass": "oom",
"sbomIncomplete": true,
"sbomSource": "text",
"ticketsReopenSkipped": 1
},
"scanCompletedAt": "text",
"scanRunId": "text",
"severityCritical": 1,
"severityHigh": 1,
"severityLow": 1,
"severityMedium": 1,
"startedAt": "text",
"status": "text",
"triggerType": "text"
}
],
"totalCount": 1
}Published operation index
This index comes from the published specification. Check its request and response schemas before calling an operation; deployment versions and feature availability can differ.
GET
/secrets/credentials/findings
Get Secrets Credential Findings
POST
/secrets/credentials/findings/allowlist/batch
Allowlist Batch of Credential Findings
GET
/secrets/credentials/findings/detailed
Get Secrets Credential Findings Detailed
GET
/secrets/credentials/findings/{findingId}
Get Credential Finding
PATCH
/secrets/credentials/findings/{findingId}
Update Credential Finding
POST
/secrets/credentials/findings/{findingId}/allowlist
Allowlist Credential Finding
GET
/secrets/credentials/findings/{findingId}/events
Get Finding Events
DELETE
/secrets/credentials/findings/{findingId}/ticket
Delete Ticket for Credential Finding
POST
/secrets/credentials/findings/{findingId}/ticket
Create Ticket for Credential Finding
GET
/secrets/credentials/findings/{findingId}/triage
Get Triaged Credential Finding
POST
/secrets/credentials/findings/{findingId}/unallowlist
Unallowlist Credential Finding
GET
/secrets/credentials/findings/{findingId}/users
Get Credential Finding Related Users
GET
/secrets/events
Get Secret Events
GET
/secrets/findings
Get Secrets Credential Findings
POST
/secrets/findings/allowlist/batch
Allowlist Batch of Credential Findings
GET
/secrets/findings/detailed
Get Secrets Credential Findings Detailed - [DEPRECATED - TO BE REMOVED BY 2025]
GET
/secrets/findings/preview
Get Secrets Credential Findings
GET
/secrets/findings/{findingId}
Get Credential Finding
PATCH
/secrets/findings/{findingId}
Update Credential Finding
POST
/secrets/findings/{findingId}/allowlist
Allowlist Credential Finding
GET
/secrets/findings/{findingId}/events
Get Finding Events
DELETE
/secrets/findings/{findingId}/ticket
Delete Ticket for Credential Finding
POST
/secrets/findings/{findingId}/ticket
Create Ticket for Credential Finding
GET
/secrets/findings/{findingId}/triage
Get Triaged Credential Finding
POST
/secrets/findings/{findingId}/unallowlist
Unallowlist Credential Finding
GET
/secrets/findings/{findingId}/users
Get Credential Finding Related Users
GET
/secrets/scan-runs
List Scan Runs
GET
/secrets/sensitivedata/findings
Get Sensitive Data Findings
POST
/secrets/sensitivedata/findings/allowlist/batch
Allowlist Batch of Sensitive Data Findings
GET
/secrets/sensitivedata/findings/{findingId}
Get Sensitive Data Finding
PATCH
/secrets/sensitivedata/findings/{findingId}
Update Sensitive Data Finding
POST
/secrets/sensitivedata/findings/{findingId}/allowlist
Allowlist Sensitive Data Finding
DELETE
/secrets/sensitivedata/findings/{findingId}/ticket
Delete Ticket for Sensitive Data Finding
POST
/secrets/sensitivedata/findings/{findingId}/ticket
Create Ticket for Sensitive Data Finding
GET
/secrets/sensitivedata/findings/{findingId}/triage
Get Triaged Sensitive Data Finding
POST
/secrets/sensitivedata/findings/{findingId}/unallowlist
Unallowlist Sensitive Data Finding
GET
/secrets/sensitivedata/findings/{findingId}/users
Get Sensitive Data Finding Related Users
Last updated