Update a survey
Changed onUpdates a survey through a strict top-level partial document. Omitted top-level fields are preserved. Provided top-level objects and arrays replace that whole subtree; this endpoint does not deep-merge nested objects and does not implement JSON Patch.
This write endpoint accepts the canonical multilingual authoring document only. Translatable fields must be locale-code maps, not strings. PATCH ?lang=... and ?version=... are not supported in Scope 1.
For MCP and AI-agent workflows, fetch the current survey first, modify only the intended top-level fields, call /api/v3/surveys/validate with operation: patch for preflight, then submit the same patch here. Missing ids in replaced arrays are treated as deletions. Variable name renames are allowed but may be destructive for downstream exports or integrations. Element id changes are rejected once the survey and element are no longer drafts.
Server-owned fields that GET returns (id, workspaceId, type, createdAt, archivedAt, defaultLanguage, languages[].alias) are accepted and verified, so the output of a GET can be sent straight back. Echoing the value you were given is a no-op; changing one is a 422 read_only_field.
A round-tripped updatedAt acts as an optimistic-concurrency precondition: the write is applied only if the survey has not changed since your read, and is otherwise rejected with 409. Omit it and overlapping writes remain last-write-wins. Header-based preconditions (ETag / If-Match) are still future work.
Request
- Base URLhttps://app.formbricks.com
- URLhttps://app.formbricks.com/api/v3/surveys/{surveyId}
- Auth
- API key in cookie next-auth.session-token
- or API key in header x-api-key
- or HTTP bearer
Path parameters
Survey identifier.
Request body
Response
Survey updated successfully
Changes
- warning
added the new
rowenum value to the///////////response property for the response status - warning
added the new
rowenum value to the///////////response property for the response status - info
added the new
rowenum value to the request property///////// - info
added the new
rowenum value to the request property/////////
- warning
- breaking
added
subschema #5: SurveyInteractionFilterto the/////////////response propertyoneOflist for the response status - info
added
subschema #5: SurveyInteractionFilterto the///////////request propertyoneOflist
- breaking