---
title: "Edit a survey draft with Kai"
url: https://docs.gleap.ai/en/reference/rest-api/kai-edit
method: POST
path: "/engagement/surveys/{surveyId}/kai-edit"
api: "API Reference"
tag: "Engagement Survey"
operationId: "KaiEdit"
updatedAt: "2026-11-01T18:40:15.677Z"
language: en
---

# Edit a survey draft with Kai

`POST https://api.gleap.io/v3/engagement/surveys/{surveyId}/kai-edit`

Ask Kai to edit the draft. Body `{ instruction, definition?, selectedId?, lang? }`: `definition` is the editor's working copy (default: the stored draft), `selectedId` the step "this question" refers to, `lang` the language the teammate is viewing. Nothing is saved: returns `{ status: 'edited', summary, definition, changes: [{ kind, step, id, number?, type?, title, details }], warnings, languagesAdded, languagesNotInProject }` for review, or `{ status: 'unrelated' | 'unclear' | 'no_change' | 'failed', message }`. Existing questions keep their ids and answer keys. Uses AI credits (402 when out of AI usage); 429 when asked too often.

## Authorization

- `Authorization` (header, required): `Bearer <token>`

## Path parameters

- `surveyId` (string, required)

## Headers

- `project` (string, required)

## Request body (`application/json`, required)

## Example request

```bash
curl --request POST \
  --url 'https://api.gleap.io/v3/engagement/surveys/{surveyId}/kai-edit' \
  --header 'Authorization: Bearer <token>' \
  --header 'project: <project>' \
  --header 'Content-Type: application/json' \
  --data '{}'
```

## Responses

### 200 (`application/json`)

Ok
