Skip to content

API Reference

Maintained by: Aether365 Team Audience: Developers and DevOps engineers Scope: Aether365 REST API overview, base URL, and response format

The Aether365 API allows you to programmatically access scan data, trigger scans, manage tenants, and drive AI Pilot - generating, reviewing and applying automated remediation, reading identity-risk signals, and hardening policies.

Endpoint groups

AreaWhat it covers
ScansTrigger and list compliance scans
ResultsRead individual scan findings
Attack SurfaceRead EAS results, manage targets, verify domains
AI PilotGenerate, review and apply automated remediation plans
Threat AlertsIdentity-risk signals and one-click user containment
PoliciesRead policy posture and harden allow-listed policies
TenantsRead and update tenant profile
ConnectionsManage connected Microsoft 365 tenants
Scheduled ScansAutomate recurring scans

Base URL

https://api.aether365.io

All endpoints are relative to this base URL.

Authentication

The unified API at api.aether365.io uses API key authentication. Include your API key in the Authorization header of every request:

Authorization: Bearer ak_live_...

API keys are created in the Aether365 dashboard under Settings > API Keys and require a plan that includes API access. JWT session tokens issued for the web application are not accepted on this host. See Authentication for details.

Response Format

All API responses use a consistent JSON structure.

Success Response

json
{
  "success": true,
  "data": {}
}

For paginated list endpoints:

json
{
  "success": true,
  "data": [],
  "meta": {
    "total": 142,
    "page": 1,
    "limit": 20
  }
}

Some list endpoints - for example scan results - return the complete array in data without a meta object.

For action endpoints (trigger, delete):

json
{
  "success": true,
  "data": null
}

Error Response

json
{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable description",
    "details": {}
  }
}

HTTP Status Codes

CodeMeaning
200Success
201Resource created
400Invalid request - missing or malformed parameters
401Authentication required or token invalid
403Access denied - tenant isolation violation
404Resource not found
409Conflict - for example, a scan is already running
429Daily or plan quota exceeded, or throttled
500Internal server error

Error Codes

CodeDescription
AUTH_MISSING_TOKENAuthorization header not present
AUTH_INVALID_TOKENAPI key could not be verified
AUTH_INVALID_METHODWrong credential type for this host
AUTH_INSUFFICIENT_SCOPEPlan does not include API access
TENANT_NOT_FOUNDTenant does not exist
TENANT_NOT_CONNECTEDMicrosoft consent not completed
NOT_FOUNDResource (route, connection, key, ...) does not exist
CONFLICTDuplicate resource - e.g. inviting an existing member
SCAN_NOT_FOUNDScan ID does not exist
SCAN_ALREADY_RUNNINGA scan is already in progress for this tenant
SCAN_PLAN_LIMIT_REACHEDPlan scan window reached (the scan window for your plan) or the plan's scheduled-scan limit hit; the response message names the specific limit
PLAN_LIMIT_REACHEDA plan quota (for example team members) is reached
VALIDATION_ERRORRequest body or query parameters are invalid
INTERNAL_ERRORUnexpected server error

Rate Limits

Requests are throttled at the API gateway (on the order of 100 requests per second, with burst capacity of 500). Exceeding the throttle returns 429 Too Many Requests with an empty body and no Retry-After header - retry with exponential backoff. Separately, some actions are quota-limited per plan (for example the daily scan cap); those return 429 with the standard error envelope and an explanatory error code.

Was this page helpful?