Skip to content

Results API

Maintained by: Aether365 Team Audience: Developers Scope: Results API endpoints - retrieving scan findings

Get Scan Results

Returns every individual check result for a scan in a single response, sorted by result, framework, then test ID.

GET /scans/{scanId}/results

No pagination or server-side filters

The data field is the complete result array - there is no meta object. Query parameters such as page, limit, result, severity, or framework are ignored by this endpoint. Filtering is done client-side for now (see the example below).

Example Request

bash
curl https://api.aether365.io/scans/0d9f6f9e-3b0c-4a9d-9c1e-2f6a8b7c5d4e/results \
  -H "Authorization: Bearer ak_live_..."

Example Response

json
{
  "success": true,
  "data": [
    {
      "id": "e4b1c2d3-a5f6-4789-b0c1-d2e3f4a5b6c7",
      "scanId": "0d9f6f9e-3b0c-4a9d-9c1e-2f6a8b7c5d4e",
      "testId": "CIS.M365.1.1.1",
      "title": "Ensure multifactor authentication is enabled for all users in administrative roles",
      "result": "Failed",
      "severity": "L2",
      "framework": "CIS",
      "helpUrl": "https://www.cisecurity.org/benchmark/microsoft_365",
      "remediationSteps": "1. Sign in to the Microsoft Entra admin center...",
      "description": "Checks that all users holding administrative roles are required to use multifactor authentication.",
      "sourceTool": "compliance"
    }
  ]
}

Field Reference

All field names are camelCase.

FieldTypeDescription
idstringResult ID (UUID)
scanIdstringParent scan ID
testIdstringUnique check identifier (e.g., CIS.M365.1.1.1)
titlestringHuman-readable check name
resultstringPassed, Failed, Skipped, NotRun, or Error
severitystring or nullL2 (high impact) or L1 (medium impact)
frameworkstring or nullCompliance scans: CIS, EIDSCA, CISA.
helpUrlstring or nullLink to remediation documentation or benchmark reference
remediationStepsstring or nullStep-by-step fix instructions
descriptionstring or nullOverview of what the check evaluates
sourceToolstringScan engine type (compliance)

Filtering Client-Side

Because the endpoint returns the full array, apply filters after fetching. For example, high-impact failures with jq:

bash
curl -s https://api.aether365.io/scans/{scanId}/results \
  -H "Authorization: Bearer ak_live_..." \
  | jq '[.data[] | select(.result == "Failed" and .severity == "L2")]'
Was this page helpful?