Skip to main content
The Crovant API is served from https://crovant.com/api. Every endpoint in the Endpoints section is generated directly from the handlers that serve it, so the reference cannot drift from the deployed behaviour.

Authentication

Send your API key as a bearer token:
Keys are generated per workspace under Configuration → API. Portal requests from a signed-in browser authenticate with a session cookie instead, so endpoints accept either.

Conventions

Most endpoints act on one workspace and require a workspaceId query parameter. Without it you get 400 Missing workspaceId.
Responses are JSON. Errors carry an error field, and authorisation failures add a reason naming the check that failed — see Troubleshooting.
/api/<name> is the current form. The legacy /.netlify/functions/<name> prefix resolves to the same handlers and still works, so existing integrations do not need changing.
Calls are metered against the workspace named in the request. See Billing and usage.

How this reference is generated

scripts/generate-openapi.mjs reads the handler sources and derives each endpoint’s methods, query parameters and body fields, writing an OpenAPI document consumed by this site. It runs as part of every build, so shipping a handler change updates the reference with it.
Because the spec is inferred from source rather than hand-written, parameters are typed as strings and descriptions are derived from handler names. It is an accurate map of what exists; it is not a substitute for the guides when you need to know what an endpoint means.
Administrative endpoints and the Stripe webhook are deliberately excluded — they are not part of the public surface.