
Formbricks' 167 api endpoints
Formbricks exposes 167 API endpoints, with only six powering its survey widget. The majority handle versioning, auth, integrations, and infrastructure concerns [Dev.to].
Formbricks' API consists of 167 endpoints, with six core endpoints implementing the survey widget [Dev.to]. These endpoints are:
- GET /api/v1/client/:workspaceId/environment – fetch surveys
- POST /api/v1/client/:workspaceId/displays – record a display
- POST /api/v1/client/:workspaceId/responses – submit an answer
- PUT /api/v1/client/:workspaceId/responses/:id – update an answer
- POST /api/v1/client/:workspaceId/user – identify the respondent
- POST /api/v1/client/:workspaceId/storage – upload a file
CORS enforcement and versioning increase the endpoint count. The API has 27 endpoints without adding functionality due to CORS, and versioning adds another layer with both v1 and v2 of the client API coexisting [Formbricks GitHub]. The API also includes 29 endpoints for authentication, covering SAML, OpenID, OAuth discovery, and two gateway-specific auth dialects. Integration callbacks for Slack, Notion, Airtable, and Google Sheets add nine more routes, while four webhook endpoints enable external subscriptions. The remaining 32 endpoints cover organization management, billing, health checks, and legacy redirects.
The endpoint count was derived from static analysis of pinned commits using the Carrick cross-repo scanner [Formbricks GitHub].
Engineering estimates often ignore the complexity added by versioning, CORS preflight, and gateway auth, which can triple the endpoint count [Dev.to]. Integration cost also dominates real-world deployments, with the nine OAuth callback routes and multiple webhook endpoints consuming more code than the core feature. Backward-compatibility creates permanent bloat, as SDKs from 2024 still call v1 endpoints, requiring Formbricks to keep both v1 and v2 alive indefinitely.
Subscribe to the broadcast.
Daily digest of the day's most important tech news. No fluff. Engineering signal only.
// delivered via substack · double-opt-in confirmation


