Trial & Onboarding API
Two read-only endpoints that back the trial banner and the setup checklist in the UI. Both are
tenant-scoped and require the tenant:read permission.
Trial status
GET /api/v1/tenants/{tenantID}/trial
While a trial is running:
{
"active": true,
"ends_at": "2026-04-10T00:00:00Z",
"days_remaining": 14
}
days_remaining is rounded up, so a trial with 6 hours left reports 1, not 0.
When there is no active trial — never started, or already ended:
{
"active": false
}
active: false is not only "expired"The same response is returned for a tenant that never had a trial (for example one created under a
paid agreement) and for one whose trial has ended. The response carries no other fields in this
state — do not read ends_at or days_remaining without checking active first.
What happens when a trial ends
When the trial end date passes, the tenant is suspended. Subsequent API calls return:
{
"error": "tenant_suspended",
"reason": "trial_expired"
}
with HTTP 403. This is a hard stop, not a reduced-capability mode — there is no free tier to
fall back to. Subscribe before the end date to avoid an interruption; if you are already suspended,
contact your account contact or complete checkout to be reinstated.
Onboarding checklist
GET /api/v1/tenants/{tenantID}/onboarding
Returns four setup steps and overall progress:
{
"steps": [
{ "id": "add_credentials", "label": "Add cloud credentials", "completed": true },
{ "id": "run_discovery", "label": "Run first discovery job", "completed": true },
{ "id": "view_compliance", "label": "View compliance report", "completed": false },
{ "id": "invite_team", "label": "Invite a team member", "completed": false }
],
"percent_complete": 50
}
Each step is computed live from your tenant's actual data — nothing is stored as a flag you can set, and the steps cannot be dismissed through this API:
| Step | Marked complete when |
|---|---|
add_credentials | At least one credential exists for the tenant |
run_discovery | Any discovery job or agentless scan has reached completed |
view_compliance | The tenant has at least one finding |
invite_team | At least one invitation has been accepted (sending is not enough) |
percent_complete is the share of completed steps, rounded to the nearest integer — with four
steps it moves in increments of 25.
view_compliance follows from discoveryIt is satisfied by the existence of findings, which a completed discovery normally produces. If it is still incomplete after a successful discovery, the scan likely produced no findings — check the compliance packs enabled for the workspace.
Related
- API Overview — authentication and common conventions
- First Discovery — completes
run_discovery - First Audit — produces findings for
view_compliance