API reference
Every endpoint, every shape.
The Driftstack API is documented as an OpenAPI 3.1 spec generated from the same Zod schemas the server uses at runtime. There is no second source of truth — if a route exists, it's in the spec; if it's in the spec, the SDK has typed bindings for it.
Interactive reference uses Scalar — try requests against your API key directly in the browser.
Surface map
Routes, grouped.
Sessions
- POST /v1/sessions
- GET /v1/sessions
- GET /v1/sessions/:id
- POST /v1/sessions/:id/navigate
- POST /v1/sessions/:id/interact
- POST /v1/sessions/:id/wait
- GET /v1/sessions/:id/state
- POST /v1/sessions/:id/capture
- DELETE /v1/sessions/:id
Profiles
- POST /v1/profiles
- GET /v1/profiles
- GET /v1/profiles/:id
- PATCH /v1/profiles/:id
- DELETE /v1/profiles/:id
API keys
- POST /v1/api-keys
- GET /v1/api-keys
- POST /v1/api-keys/:id/rotate
- DELETE /v1/api-keys/:id
Webhooks
- POST /v1/webhooks
- GET /v1/webhooks
- GET /v1/webhooks/:id
- DELETE /v1/webhooks/:id
- GET /v1/webhooks/:id/deliveries
- POST /v1/webhook-deliveries/:id/replay
Account
- GET /v1/account/me
- GET /v1/account/audit-log
- GET /v1/account/audit-log/export
- GET /v1/account/email-preferences
- PUT /v1/account/email-preferences
- GET /v1/account/rate-limits
Team
- POST /v1/team/invites
- GET /v1/team/invites
- POST /v1/team/invites/accept
- GET /v1/team/members
- DELETE /v1/team/members/:id
Status
- GET /v1/status
- GET /v1/status/stream
- GET /v1/status/sla
- POST /v1/status/subscribe
- POST /v1/status/subscribe/confirm
- POST /v1/status/subscribe/unsubscribe
Auth flows
- POST /v1/auth/signup
- POST /v1/auth/login
- POST /v1/auth/logout
- POST /v1/auth/verify-email
- POST /v1/auth/magic-link
- POST /v1/auth/password-reset
- POST /v1/auth/refresh
Billing
- POST /v1/billing/checkout
- POST /v1/billing/portal
- POST /v1/billing/trial-pack
- GET /v1/billing
Spec posture
Stable contract. Versioned. Auto-generated.
- → Every endpoint has Zod schemas for request + response. The OpenAPI 3.1 spec is generated from the schemas — there is no second source of truth.
- → Every error case maps to an RFC 7807
application/problem+jsonresponse with a stabletypeURI. - → Breaking changes ship under a new path version.
/v1stays stable;/v2would be a new prefix, not a silent shape change.