---
title: "Save a survey draft"
method: PUT
path: "/engagement/surveys/{surveyId}/draft"
tags: ["Engagement Survey"]
---

# Save a survey draft

`PUT /engagement/surveys/{surveyId}/draft`

## Request

- Base URL: `https://api.gleap.io/v3`
- URL: `https://api.gleap.io/v3/engagement/surveys/{surveyId}/draft`
- Auth: HTTP bearer

Save the Surveys 2.0 draft. Body `{ definition, baseRevision?, allowEmpty? }`. Invalid logic is saved
and returned as `warnings`; a malformed definition answers 422 `{ errors }`. Live surveys keep serving
the published version. Returns `{ definition, draftRevision, warnings }`.

Every save bumps the draft's `draftRevision`. With `baseRevision` (the revision you loaded) a save over
a newer draft answers 409 `{ code: 'draft_changed', draftRevision }`. A save that would remove every
question of a draft that has some answers 409 `{ code: 'draft_would_remove_all_questions' }` unless
`allowEmpty: true`.

## Path parameters

- `surveyId` string, required

## Headers

- `project` string, required

## Request body

- unknown

## Response `200`

Ok

- unknown

## Changes

- **2026-10-08** `fd83cd1963c4`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/gleap/apis/gleap-server/changes/engagement/surveys/:surveyId/draft/put.md)

---

[API](https://skmtc.dev/gleap/apis/gleap-server.md) - [All operations](https://skmtc.dev/gleap/apis/gleap-server/llms.txt) - [OpenAPI document](https://skmtc.dev/gleap/apis/gleap-server/revisions/3b025e883cef?raw)
