Docs / API

API reference

Base URL: https://www.getcertus.cloud

Authentication

The API supports two authentication methods. All authenticated requests are scoped to a single organization.

Session (Auth0)Dashboard and browser-based API calls

Secure HTTP-only cookie set after Auth0 login. Automatically included by the browser. SameSite=Lax for callback compatibility.

API Key (Bearer)CLI, CI/CD, and programmatic access

Pass via Authorization: Bearer <key> header. Keys are org-scoped, SHA-256 hashed at rest, and compared using timing-safe equality.

# Example: CLI scan submission

curl -X POST https://www.getcertus.cloud/api/scans \

-H "Authorization: Bearer ck_live_..." \

-H "Content-Type: application/json" \

-d @evidence-pack.json

POST/api/scansAPI key

Submit CLI scan results to the platform. Creates repository, PR record, and evidence pack if they do not exist.

Request body
repo_slugstringRepository identifier (e.g. "org/repo-name")
commit_hashstringFull commit SHA
branchstringBranch name
findingsFinding[]Array of scanner findings
control_resultsControlMapping[]Framework control mappings
gradestringComposite letter grade (A-F)
scorenumberNumeric score (0-100)
evidence_pack_idstringUnique evidence pack identifier
signed_hashstringSHA-256 HMAC signature
Response
{ scan_id: string, stored_timestamp: string }
GET/api/evidenceSession or API key

Retrieve evidence packs for the authenticated organization. Supports filtering by repository, date range, and framework.

Response
{ evidence_packs: EvidencePack[] }
GET/api/statusNone

Health check endpoint. Returns platform status and version.

Response
{ status: "ok", version: string }
POST/api/webhooks/githubGitHub webhook signature

Receives GitHub App webhook events (push, pull_request, check_suite). Triggers scan pipeline for configured repositories.

Response
{ received: true }

Rate limits

Free
Scans: 100/month
API: 1,000 requests/day
Pro
Scans: 1,000/month
API: 10,000 requests/day
Enterprise
Scans: Unlimited
API: Custom