# Save a completed native survey step (/es/api-reference/survey-channels/saveNativeMobileSurveyProgress)

`POST /public/retention/mobile-survey/progress`

Base URL: `https://api.bitelio.com`

Explicit user continuation only. Uses the same invitation draft as the browser and WhatsApp. Submit all answers in the completed visible prefix and the current revision. Optional skipped steps may omit their answer. Hidden/unknown options and missing required preceding answers are rejected. A successful save is progress, not a completed survey. On 409 reload and let the customer reconcile their changes. Never silently overwrite a newer device.

## Header parameters

- `X-Bitelio-Device`: string (required)

## Request body

- `revision`: integer (required)
- `throughQuestionId`: string (required)
- `answers`: array<object> (required)
  items:
    - `questionId`: string (required)
    - `value`: string | number | array<string> (required)

Example:

```json
{
  "revision": 0,
  "throughQuestionId": "string",
  "answers": [
    {
      "questionId": "string",
      "value": "string"
    }
  ]
}
```

## Responses

### `200` — Saved draft with new revision

- `revision`: integer
- `throughQuestionId`: string
- `answers`: array<object>
  items:
    - `questionId`: string (required)
    - `value`: string | number | array<string> (required)

```json
{
  "revision": 0,
  "throughQuestionId": "string",
  "answers": [
    {
      "questionId": "string",
      "value": "string"
    }
  ]
}
```

### `400` — Invalid input or unavailable survey

### `404` — Session, permission or survey unavailable

### `409` — SURVEY_DRAFT_CONFLICT: reload before continuing

### `429` — Rate limit exceeded; Retry-After gives seconds

### `503` — Rate limiter temporarily unavailable

## Example request

```bash
curl -X POST 'https://api.bitelio.com/public/retention/mobile-survey/progress' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"revision":0,"throughQuestionId":"string","answers":[{"questionId":"string","value":"string"}]}'
```
