Skip to Content
REST API

REST API reference

All endpoints are namespaced under /v1 (except the runtime API and health check). Authentication is per-route — most use a session cookie (better-auth), the runtime API uses an Authorization: Bearer shush_… API key. Each section links to the source file in the repo for body/response shapes.

Health

MethodPathNotes
GET/healthPostgres + Redis liveness probe.

Source: apps/api/src/routes/health.ts.

Me

The current user’s profile.

MethodPathNotes
GET/v1/meReturn current user.
PATCH/v1/meUpdate current user (name, avatar).

Source: me.ts.

Organizations

MethodPathNotes
GET/v1/orgs/meList orgs the current user belongs to.
POST/v1/orgsCreate a new org.
GET/v1/orgs/currentGet the active org.
POST/v1/orgs/currentSwitch active org.
PATCH/v1/orgs/currentUpdate active org metadata.
DELETE/v1/orgs/currentDelete the active org.
POST/v1/orgs/current/2fa/setupBegin TOTP enrollment for the org.
GET/v1/orgs/current/encryptionGet the org’s encryption state.
POST/v1/orgs/current/rotate-kekRotate the org’s DEK wrapping.

Source: orgs.ts.

Projects

MethodPathNotes
GET/v1/projectsList projects.
GET/v1/projects/:projectIdFetch a project.
POST/v1/projectsCreate a project.
DELETE/v1/projects/:projectIdDelete a project.

Source: projects.ts.

Environments

MethodPathNotes
GET/v1/projects/:projectId/environmentsList a project’s envs.
PATCH/v1/projects/:projectId/environmentsUpdate env config (parents).

Source: environments.ts.

Folders

MethodPathNotes
GET/v1/projects/:projectId/foldersList folders.
POST/v1/projects/:projectId/foldersCreate a folder.
PATCH/v1/projects/:projectId/folders/:idRename / move.
DELETE/v1/projects/:projectId/folders/:idDelete a folder.

Source: folders.ts.

Secrets

MethodPathNotes
GET/v1/projects/:projectId/secretsList secrets in a project.
GET/v1/projects/:projectId/secrets/:idFetch one secret (all envs).
POST/v1/projects/:projectId/secretsCreate a secret.
PATCH/v1/projects/:projectId/secrets/:idUpdate a secret value / metadata.
DELETE/v1/projects/:projectId/secrets/:idDelete a secret.
POST/v1/projects/:projectId/secrets/:id/rotateMark a secret as rotated.
GET/v1/projects/:projectId/secrets/:id/versionsList a secret’s version history.
GET/v1/projects/:projectId/secrets/exportExport an env to dotenv / shell / JSON.
POST/v1/projects/:projectId/secrets/importImport a dotenv file.
GET/v1/projects/:projectId/secrets/:id/rotation-policyRead rotation policy.
POST/v1/projects/:projectId/secrets/:id/rotation-policySet rotation policy.
DELETE/v1/projects/:projectId/secrets/:id/rotation-policyClear rotation policy.

Source: secrets.ts.

Shared secrets

Org-wide secret store, mounted under /v1/orgs/current.

MethodPathNotes
GET/v1/orgs/current/shared-foldersList org-wide folders.
GET/v1/orgs/current/shared-secretsList org-wide secrets.
GET/v1/orgs/current/shared-secrets/:idFetch one shared secret.
POST/v1/orgs/current/shared-secretsCreate a shared secret.
GET/v1/orgs/current/shared-secrets/:id/versionsShared secret version history.

Source: shared.ts.

API keys

MethodPathNotes
GET/v1/projects/:projectId/api-keysList API keys.
POST/v1/projects/:projectId/api-keysCreate a key (plaintext shown once).
POST/v1/projects/:projectId/api-keys/:id/rotateRotate a key.
POST/v1/projects/:projectId/api-keys/:id/revokeRevoke a key.
DELETE/v1/projects/:projectId/api-keys/:idHard-delete a key.

Source: api-keys.ts.

Webhooks

MethodPathNotes
GET/v1/projects/:projectId/webhooksList webhooks.
POST/v1/projects/:projectId/webhooksCreate a webhook.
PATCH/v1/projects/:projectId/webhooks/:idUpdate a webhook.
DELETE/v1/projects/:projectId/webhooks/:idDelete a webhook.
POST/v1/projects/:projectId/webhooks/:id/testFire a test delivery.
GET/v1/projects/:projectId/webhooks/:id/deliveriesList recent deliveries.

Source: webhooks.ts.

Integrations

MethodPathNotes
GET/v1/projects/:projectId/integrationsList integrations.
POST/v1/projects/:projectId/integrationsCreate an integration.
GET/v1/projects/:projectId/integrations/sync-statusPer-integration sync status.
DELETE/v1/projects/:projectId/integrations/:idDelete an integration.

Source: integrations.ts.

Audit

MethodPathNotes
GET/v1/auditPage through the audit log.
GET/v1/audit/exportExport the audit log as CSV / JSON.

Source: audit.ts.

Access (members + invitations)

MethodPathNotes
GET/v1/access/membersList org members.
PATCH/v1/access/members/:memberIdUpdate a member’s role.
DELETE/v1/access/members/:memberIdRemove a member.
GET/v1/access/invitationsList pending invitations.
POST/v1/access/invitationsSend an invitation.
POST/v1/access/invitations/:id/cancelCancel an invitation.
GET/v1/access/permissionsStatic permission catalog.
GET/v1/access/members/me/permissionsThe caller’s effective permissions.

Source: access.ts.

Counts

MethodPathNotes
GET/v1/projects/:projectId/countsCounts per resource type.
GET/v1/projects/:projectId/env-countsCounts per environment.

Source: counts.ts.

CLI auth (device-code flow)

Used by shush login.

MethodPathNotes
POST/v1/auth/cli/startBegin a device-code flow.
POST/v1/auth/cli/approveApprove a pending device code (dashboard).
POST/v1/auth/cli/enableMint the API key once approved.

Source: auth/cli.ts.

Runtime

Bearer-token API used by @shushsecrets/inject. Lives under /runtime/v1.

MethodPathNotes
GET/runtime/v1/Token introspection.
GET/runtime/v1/secretsFetch all secrets for the token’s env.
GET/runtime/v1/secrets/:keyFetch a single secret.

Source: runtime.ts.

Billing

Stripe-backed subscription management. Session-authenticated unless noted.

MethodPathNotes
GET/v1/billing/currentCurrent plan, status, period end, seat usage, seat limit.
POST/v1/billing/checkoutOwner only. Creates a Stripe Checkout session for a plan.
POST/v1/billing/portalOwner only. Creates a Stripe billing-portal session.
POST/v1/billing/webhookUnauthenticated. Stripe webhook receiver (HMAC verified).

Required env: STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRICE_TEAM, STRIPE_PRICE_ENTERPRISE.

Source: billing.ts.

BYOK (KMS)

Bring-your-own KEK via AWS KMS. Owner only.

MethodPathNotes
GET/v1/orgs/current/kmsCurrent BYOK config (no secrets).
POST/v1/orgs/current/kms/testValidate IAM creds + key existence via DescribeKey.
POST/v1/orgs/current/kms/enableAtomically re-wraps the org DEK with KMS and flips the provider.
DELETE/v1/orgs/current/kmsRe-wraps with MASTER_KEK_B64 and disables BYOK.

Provider selection is per-org: any org without an enabled kms_key row continues to use the server-wide MASTER_KEK_B64.

Source: kms.ts.

SSO (SAML)

SAML 2.0 via @boxyhq/saml-jackson. Per-org.

MethodPathNotes
GET/v1/sso/by-domain?domain=…Public. Resolve an email domain to an SSO-enabled orgId.
GET/v1/sso/saml/metadata?orgId=…Public. Service-provider metadata XML.
GET/v1/sso/saml/connectionsRead the org’s SAML connection (mirror).
POST/v1/sso/saml/connectionsOwner only. Wraps Jackson createSAMLConnection.
DELETE/v1/sso/saml/connections/:clientIDOwner only. Disables the org’s SSO.
GET/v1/sso/saml/authorizeInitiate SAML login. Redirects to the IdP.
POST/v1/sso/saml/acsPublic. SAML assertion consumer service.
GET/v1/sso/saml/oauth-callbackInternal: exchanges Jackson’s OAuth code for a shush session.
GET/v1/sso/scim/tokensAdmin. List SCIM bearer tokens.
POST/v1/sso/scim/tokensAdmin. Mint a SCIM token (plaintext returned once).
DELETE/v1/sso/scim/tokens/:idAdmin. Revoke a SCIM token.

Required env: JACKSON_SAML_AUDIENCE, JACKSON_EXTERNAL_URL (falls back to BETTER_AUTH_URL).

Source: sso.ts.

SCIM v2

User and group provisioning for IdPs (Okta, Azure AD, etc.) at /scim/v2. Bearer-token auth; tokens are minted from the SSO panel above.

MethodPathNotes
GET/scim/v2/ServiceProviderConfigRFC 7644 SP config document.
GET/scim/v2/UsersList members. Supports filter=userName eq "...", startIndex, count.
POST/scim/v2/UsersProvision a user into the org (role defaults to engineer).
GET/scim/v2/Users/:idSingle member.
PATCH/scim/v2/Users/:idSoft-delete via active=false (sets member.removedAt).
DELETE/scim/v2/Users/:idSame effect as PATCH active=false.
GET/scim/v2/GroupsOne group per role (owner / admin / engineer / viewer).
GET/scim/v2/Groups/:idMembers of that role group.

Source: scim.ts.

Last updated on