KeylessSSL developer documentation
KeylessSSL exposes an HTTP API athttps://api.keylessssl.dev. The portal uses the same API through a typed fetch adapter.
Integration sequence
- Sign in to the portal and create an API key with only the scopes your integration needs. Save the returned secret when it is displayed; creation and rotation are the only handlers that return it.
- Create a base domain with
POST /v1/domains. - Read
GET /v1/domains/{domainId}/delegation-recordand publish both its ownership TXT and delegation CNAME records. - Call
POST /v1/domains/{domainId}/verify-delegation. Verification is tenant-bound by the unique ownership TXT value and an atomic apex claim. - After verification, call
POST /v1/domains/{domainId}/certificates/issue. - Poll
POST /v1/certificates/{certificateId}/syncwhen the provider reports a pending certificate, or subscribe a webhook to current emitted events.
Quickstart
Orientation for integrators and contributors: architecture, API surface, and local setup.
Architecture overview
Review entry points, storage, auth, runtime configuration, and deployment.
API reference
See the implemented routes, authentication rules, scopes, and a curl request.
Authentication choices
The production portal uses an Auth0 Authorization Code flow with PKCE and a backend code exchange. The API returns a KeylessSSL session token, which the portal sends as a bearer token and also stores in an HTTP-only session cookie. Programmatic callers use a KeylessSSL API key in theAuthorization: Bearer ... header. API keys are organization-scoped and carry one or more of these implemented scopes:
domains:readdomains:writecerts:readcerts:issuewebhooks:writeaudit:read
Webhook integration
The backend currently emitsdomain.verified, cert.requested, and cert.issued. The test route sends webhook.test to one registered endpoint. Deliveries are JSON POST requests with event, timestamp, and HMAC signature headers; failed non-test deliveries are stored and retried by the API worker.