DryRun API

Programmatic access to DryRun Security findings, scans, configurations, and insights via the Simple API.

DryRun Simple API #

The DryRun Simple API provides programmatic access to your organization's security data: findings, scans, deepscans, configurations, repositories, and insights.

Authentication #

For information on creating and managing API keys, see the API Access Keys page. All API requests require a valid API key sent in the Authorization header using the Bearer scheme.

Quick Start #

Most endpoints are scoped to an account. You will need:

  • account_id - provided by the DryRun Security platform (e.g., 12345678-1234-1234-1234-1234567890ab)
  • repository_id - a UUID for a repository

Typical workflow:

  1. List your accessible accounts.
  2. Pick an account, then list repositories in that account.
  3. Use repository IDs to fetch scans and findings.

Step 1: List accounts #

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts"

Example response:

{
  "data": [
    {
      "account_id": "22222222-2222-2222-2222-222222222222",
      "org_name": "SampleOrg",
      ...
    }
  ]
}

Step 2: Get repositories #

curl -X 'GET' \
  -H 'Authorization: Bearer $DRYRUN_API_KEY' \
  'https://simple-api.dryrun.security/v1/accounts/22222222-2222-2222-2222-222222222222/repositories'

Example response:

{
  "data": [
    {
      "id": "11111111-1111-1111-1111-111111111111",
      "name": "some-demo-repo-name",
      ...
    }
  ]
}

Step 3: Get findings for a repository #

curl -X 'GET' \
  -H 'Authorization: Bearer $DRYRUN_API_KEY' \
  'https://simple-api.dryrun.security/v1/accounts/22222222-2222-2222-2222-222222222222/repositories/11111111-1111-1111-1111-111111111111/findings'

Example response:

{
  "data": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "dashboard_url": "https://app.dryrun.security/risk-register/44444444-4444-4444-4444-444444444444",
      "severity": "error",
      "type": "Missing Authorization and IDOR in User Deletion",
      "description": "The new DELETE /users/{id} endpoint is registered without any authentication or authorization middleware...",
      "filename": "backend/main.go",
      "line_start": 516,
      "line_end": 553,
      "created_at": "2026-03-03T00:00:00Z"
    },
    ...
  ]
}

Endpoint Reference #

Accounts #

GET /v1/accounts List all accounts accessible by the API key.

Retrieve all accounts that the authenticated API key has access to, including organization information.

Responses

  • 200 - accounts listed

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts"

Repositories #

GET /v1/accounts/{account_id}/repositories List all repositories for an account.

Retrieve all repositories associated with the specified account.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID

Responses

  • 200 - repositories listed

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/repositories"

Scans #

GET /v1/accounts/{account_id}/repositories/{repository_id}/scans List PR scans for a repository.

List PR scans for a repository. Supports filtering by PR number, date range, severity, result, and the user who initiated the scan.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
repository_idpathyesstringRepository ID
pr_numberquerynointegerFilter by pull request number
date_fromquerynostring (ISO 8601)Return scans on or after this date
date_toquerynostring (ISO 8601)Return scans on or before this date
severityquerynostringFilter by highest severity finding: critical, high, medium, low, none
resultquerynostringFilter by scan result: pass or fail
initiated_byquerynostringFilter by the username or email of the user who triggered the scan

Response Fields

FieldTypeDescription
scan_idstringUnique identifier for the scan
dashboard_urlstringLink to the scan results in the DryRun Security dashboard
pr_numberintegerPull request number
pr_titlestringTitle of the pull request
pr_statusstringCurrent status of the pull request: open, closed, or merged
scan_datestring (ISO 8601)Date and time the scan was completed
initiated_bystringUsername or email of the user who triggered the scan
statusstringScan status: pass or fail
summarystringShort plain-text summary of scan results
vulnerability_summaryobjectCounts of findings by severity: critical, high, medium, low
risk_thresholdstringThe highest-severity finding that caused the scan to fail, if applicable

Responses

  • 200 - scans listed

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/repositories/{repository_id}/scans?pr_number=42"
GET /v1/accounts/{account_id}/repositories/{repository_id}/scans/{id} Get detailed PR scan results including findings.

Get detailed results for a specific PR scan, including all findings.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
repository_idpathyesstringRepository ID
idpathyesstringScan ID

Responses

  • 200 - scan found

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/repositories/{repository_id}/scans/{id}"

Findings #

GET /v1/accounts/{account_id}/repositories/{repository_id}/findings List all PR findings for a repository.

List all PR findings for a repository. Each finding includes a dashboard_url linking to the finding in the DryRun Security dashboard.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
repository_idpathyesstringRepository ID

Responses

  • 200 - findings listed

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/repositories/{repository_id}/findings"
GET /v1/accounts/{account_id}/all_findings List all findings across PR scans, DeepScans, SCA, and code policies for an account.

List all findings across PR scans, DeepScans, SCA, and code policies for an account. By default, returns only findings from the latest scan. Results are sorted by newest first.

Each finding includes a state field indicating its current status: open (present in the latest scan and not triaged), dismissed (triaged with a category such as false positive or accepted risk), or resolved (no longer present in the latest scan). For triaged findings, the response also includes a triage object with the category (false_positive, wont_fix, accepted_risk, in_progress) and category_name.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
daysqueryyesintegerFilter to findings from the last N days (1-365)
finding_typequerynostringFilter by finding type. One of: deepscan, pullrequest, sca, code_policy, all. Defaults to 'all'
severityquerynostringFilter by severity (comma-separated: critical, high, medium, low)
repository_idquerynostringFilter by repository ID
branchquerynostringFilter SCA and DeepScan findings by branch name. When omitted, returns findings from the default branch. Does not affect PR or code policy findings.
all_resultsquerynobooleanWhen true, returns all findings including historical scans. Defaults to false (latest scan only).
pagequerynointegerPage number (default: 1)
per_pagequerynointegerResults per page (default: 50, max: 100)

Responses

  • 200 - findings listed

Example response

{
  "data": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "finding_type": "pullrequest",
      "dashboard_url": "https://app.dryrun.security/risk-register/44444444-4444-4444-4444-444444444444",
      "severity": "high",
      "type": "Missing Authorization and IDOR in User Deletion",
      "description": "The DELETE /users/{id} endpoint is registered without authentication or authorization middleware...",
      "filename": "backend/main.go",
      "line_start": 516,
      "line_end": 553,
      "repository_name": "some-demo-repo-name",
      "state": "open",
      "triage": null,
      "created_at": "2026-03-03T00:00:00Z"
    }
  ]
}

Response Fields

FieldTypeDescription
idstringFinding ID, used with the triage endpoints
finding_typestringSource of the finding: deepscan, pullrequest, sca, code_policy
dashboard_urlstringLink to the finding in the DryRun Security dashboard
severitystringFinding severity: critical, high, medium, low
typestringFinding type or title
labelstringClassifier label (e.g. auth_bypass, sqli, idor)
descriptionstringFinding description
filenamestringFile path where the finding was detected
line_startintegerStarting line number
line_endintegerEnding line number
repository_namestringRepository name
pr_numberintegerPull request number (for pullrequest findings only)
created_atstring (ISO 8601)When the finding was detected
statestringDerived finding state: open (from latest scan, not triaged), dismissed (triaged), resolved (not in latest scan)
triageobjectTriage details if triaged, otherwise null. Includes category (false_positive, wont_fix, accepted_risk, in_progress) and category_name.

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/all_findings?days=30"

Finding Triage #

POST /v1/accounts/{account_id}/findings/{finding_id}/triage Set a triage category for a finding.

Set a triage category for a finding to track its resolution status.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
finding_idpathyesstringFinding ID

Request Body

{
  "triage_category": "false_positive"
}

Valid values for triage_category: false_positive, wont_fix, accepted_risk, in_progress.

Responses

  • 200 - triage category set

Example (curl)

curl -X POST \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"triage_category": "false_positive"}' \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/findings/{finding_id}/triage"
GET /v1/accounts/{account_id}/findings/{finding_id}/triage Get the triage status for a finding.

Retrieve the current triage status for a specific finding.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
finding_idpathyesstringFinding ID

Responses

  • 200 - triage status returned

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/findings/{finding_id}/triage"
DELETE /v1/accounts/{account_id}/findings/{finding_id}/triage Remove the triage category from a finding.

Remove the triage category from a finding, resetting its triage status.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
finding_idpathyesstringFinding ID

Responses

  • 200 - triage category removed

Example (curl)

curl -X DELETE \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/findings/{finding_id}/triage"

Deepscans #

GET /v1/accounts/{account_id}/deepscans List all deepscans for an account.

Retrieve all deepscans associated with the specified account.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID

Responses

  • 200 - deepscans listed

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/deepscans"
GET /v1/accounts/{account_id}/repositories/{repository_id}/deepscans List deepscans for a repository.

Retrieve all deepscans for a specific repository.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
repository_idpathyesstringRepository ID

Responses

  • 200 - deepscans listed

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/repositories/{repository_id}/deepscans"
POST /v1/accounts/{account_id}/repositories/{repository_id}/deepscans Trigger a new DeepScan on a repository.

Trigger a full-repository DeepScan programmatically. Useful for integrating DeepScan into CI/CD pipelines, scheduled automation, or external workflows. All request body fields are optional. Omitting branch and commit_sha scans the repository’s default branch at HEAD.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
repository_idpathyesstringRepository ID

Request body

FieldTypeRequiredDescription
branchstringnoBranch to scan. Defaults to the repository’s default branch.
commit_shastringnoSpecific commit SHA to scan.
full_scanbooleannoWhether to run a full scan. Defaults to true.

Responses

  • 202 - scan triggered
  • 404 - repository not found
  • 422 - API key has no associated user
  • 429 - scan quota exceeded
  • 502 - internal invocation error

Teams running DeepScan through automation should handle 429 quota exceeded errors gracefully, as accounts have a limit on concurrent scans.

Example response

{
  "data": {
    "id": "11111111-1111-1111-1111-111111111111",
    "repository_id": "22222222-2222-2222-2222-222222222222",
    "status": "queued"
  }
}

Example (curl)

curl -X POST \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"branch": "main"}' \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/repositories/{repository_id}/deepscans"
GET /v1/accounts/{account_id}/repositories/{repository_id}/deepscans/{deepscan_id}/results List findings for a specific deepscan.

Retrieve all findings from a specific deepscan run.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
repository_idpathyesstringRepository ID
deepscan_idpathyesstringDeepScan ID

Responses

  • 200 - deepscan results listed

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/repositories/{repository_id}/deepscans/{deepscan_id}/results"
GET /v1/accounts/{account_id}/repositories/{repository_id}/deepscans/{deepscan_id}/sca_results List SCA findings for a specific DeepScan run.

List SCA findings for a specific DeepScan run.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
repository_idpathyesstringRepository ID
deepscan_idpathyesstringDeepScan ID
severityquerynostringFilter by severity (comma-separated). Valid values: critical, high, medium, low

Response Fields

id, dashboard_url, title, description, severity, package_name, package_version, package_ecosystem, cve_id, cvss_score, fixed_version, remediation, locations, references, created_at

Responses

  • 200 - SCA results listed

Example (curl)

curl \
  -H "Authorization: Bearer <your-api-key>" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/repositories/{repository_id}/deepscans/{deepscan_id}/sca_results"

SBOM #

GET /v1/accounts/{account_id}/repositories/{repository_id}/deepscans/{deepscan_id}/sbom Get the CycloneDX SBOM for a specific DeepScan run.

Retrieve SBOM metadata and a time-limited download URL for the CycloneDX SBOM generated during a DeepScan. The download_url is valid until download_url_expires_at and points directly to the SBOM file.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
repository_idpathyesstringRepository ID
deepscan_idpathyesstringDeepScan ID

Responses

  • 200 - SBOM metadata and download URL
  • 404 - DeepScan not found

Response fields

FieldTypeDescription
deepscan_idstring (uuid)ID of the DeepScan that produced this SBOM
repository_idstring (uuid)Repository ID
branchstringBranch scanned (nullable)
commit_shastringCommit SHA at time of scan (nullable)
formatstringSBOM format, e.g. cyclonedx
component_countintegerTotal number of components in the SBOM
generated_atstring (date-time)When the SBOM was generated (nullable)
vulnerability_summaryobjectCounts of vulnerable components by severity: critical, high, medium, low, total
download_urlstring (uri)Time-limited URL to download the SBOM file
download_url_expires_atstring (date-time)Expiry time for the download URL

Example response

{
  "data": {
    "deepscan_id": "11111111-1111-1111-1111-111111111111",
    "repository_id": "22222222-2222-2222-2222-222222222222",
    "branch": "main",
    "commit_sha": "abc123def456",
    "format": "cyclonedx",
    "component_count": 142,
    "generated_at": "2026-06-01T00:00:00Z",
    "vulnerability_summary": {
      "critical": 1,
      "high": 3,
      "medium": 7,
      "low": 4,
      "total": 15
    },
    "download_url": "https://...",
    "download_url_expires_at": "2026-06-01T01:00:00Z"
  }
}

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/repositories/{repository_id}/deepscans/{deepscan_id}/sbom"

Configurations #

GET /v1/accounts/{account_id}/configurations List configurations for an account.

Retrieve all configurations associated with the specified account.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID

Responses

  • 200 - configurations listed

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/configurations"
POST /v1/accounts/{account_id}/configurations Create a new configuration.

Create a new configuration for the specified account.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID

Request Body

{
  "configuration": {
    "name": "string",
    "configuration": {
      "comment": "disabled",
      "show_scan_confirmation": false,
      "risk_threshold": 0,
      "analyzers": {},
      "code_policies": [
        {
          "id": null,
          "enabled": null,
          "silent": null,
          "blocking": null
        }
      ],
      "notifications": {
        "enabled": false,
        "deduplicate": false,
        "integrationNames": [null]
      }
    }
  },
  "repositories": [
    "00000000-0000-0000-0000-000000000000"
  ]
}

Responses

  • 201 - configuration created

Example (curl)

curl -X POST \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"configuration": {"name": "My Config", "configuration": {"comment": "disabled", "risk_threshold": 0, "analyzers": {}}}, "repositories": []}' \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/configurations"
POST /v1/accounts/{account_id}/configurations/assign_repositories Assign a configuration to multiple repositories.

Assign a configuration to one or more repositories by ID, name, or pattern.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID

Request Body

{
  "configuration_id": "00000000-0000-0000-0000-000000000000",
  "repository_ids": [
    "00000000-0000-0000-0000-000000000000"
  ],
  "repository_names": [
    "string"
  ],
  "repository_pattern": "string"
}

Responses

  • 200 - repositories assigned

Example (curl)

curl -X POST \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"configuration_id": "CONFIG_ID", "repository_ids": ["REPO_ID"]}' \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/configurations/assign_repositories"
POST /v1/accounts/{account_id}/configurations/bulk_update Bulk update multiple configurations.

Apply the same updates to multiple configurations at once.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID

Request Body

{
  "configuration_ids": [
    "00000000-0000-0000-0000-000000000000"
  ],
  "updates": {
    "comment": "disabled",
    "show_scan_confirmation": false,
    "risk_threshold": 0,
    "analyzers": {},
    "code_policies": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "enabled": false,
        "silent": false,
        "blocking": false
      }
    ],
    "notifications": {
      "enabled": false,
      "deduplicate": false,
      "integrationNames": ["string"]
    }
  }
}

Responses

  • 200 - configurations updated

Example (curl)

curl -X POST \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"configuration_ids": ["CONFIG_ID_1", "CONFIG_ID_2"], "updates": {"risk_threshold": 5}}' \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/configurations/bulk_update"
GET /v1/accounts/{account_id}/configurations/{id} Get a single configuration.

Retrieve details for a specific configuration.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
idpathyesstringConfiguration ID

Responses

  • 200 - configuration found

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/configurations/{id}"
PUT /v1/accounts/{account_id}/configurations/{id} Update a configuration.

Update an existing configuration.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
idpathyesstringConfiguration ID

Request Body

{
  "configuration": {
    "name": "string",
    "configuration": {
      "comment": "disabled",
      "show_scan_confirmation": false,
      "risk_threshold": 0,
      "analyzers": {},
      "code_policies": [
        {
          "id": null,
          "enabled": null,
          "silent": null,
          "blocking": null
        }
      ],
      "notifications": {
        "enabled": false,
        "deduplicate": false,
        "integrationNames": [null]
      }
    }
  }
}

Responses

  • 200 - configuration updated

Example (curl)

curl -X PUT \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"configuration": {"name": "Updated Config", "configuration": {"risk_threshold": 5}}}' \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/configurations/{id}"
PATCH /v1/accounts/{account_id}/configurations/{id} Partially update a configuration.

Apply a partial update to an existing configuration. Only the fields provided in the request body are updated.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
idpathyesstringConfiguration ID

Request Body

{
  "configuration": {
    "name": "string",
    "configuration": {
      "comment": "disabled",
      "show_scan_confirmation": false,
      "risk_threshold": 0,
      "analyzers": {},
      "code_policies": [
        {
          "id": null,
          "enabled": null,
          "silent": null,
          "blocking": null
        }
      ],
      "notifications": {
        "enabled": false,
        "deduplicate": false,
        "integrationNames": [null]
      }
    }
  }
}

Responses

  • 200 - configuration updated

Example (curl)

curl -X PATCH \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"configuration": {"configuration": {"risk_threshold": 5}}}' \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/configurations/{id}"
DELETE /v1/accounts/{account_id}/configurations/{id} Delete a configuration.

Permanently delete a configuration. This action cannot be undone.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
idpathyesstringConfiguration ID

Responses

  • 200 - configuration deleted

Example (curl)

curl -X DELETE \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/configurations/{id}"

Analyzers #

GET /v1/accounts/{account_id}/analyzers List available analyzers.

Retrieve all enabled and visible analyzers. Use the slug field as the key in configuration analyzer settings.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID

Responses

  • 200 - analyzers listed

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/analyzers"

Custom Policies #

GET /v1/accounts/{account_id}/custom_policies List all Custom Code Policies for an account.

Retrieve all Custom Code Policies associated with the specified account.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID

Responses

  • 200 - custom policies listed

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/custom_policies"

Insights #

GET /v1/accounts/{account_id}/insights Retrieve the daily insights digest.

Retrieve the daily insights digest for an account. Supports an optional date query parameter in YYYY-MM-DD format.

Parameters

NameInRequiredTypeDescription
account_idpathyesstringAccount ID
datequerynostringDate in YYYY-MM-DD format

Responses

  • 200 - insights returned

Example (curl)

curl \
  -H "Authorization: Bearer $DRYRUN_API_KEY" \
  "https://simple-api.dryrun.security/v1/accounts/{account_id}/insights?date=2026-01-15"

Conventions #

  • IDs and scoping: account_id is required for most endpoints. repository_id is required for repository-scoped endpoints.
  • Response shape: Most list endpoints return a top-level data array.
  • Errors: If an item is not found, endpoints return 404 with {"error": "not found"}.

Support #

If you have questions about authentication, account access, or expected responses, contact DryRun Security support and include the endpoint URL you called, the HTTP status code, and the request_id header (if present).