> For the complete documentation index, see [llms.txt](https://docs.api.intratool.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.api.intratool.de/api-reference/surveys/survey-answer-options.md).

# SurveyAnswerOptions

## Introduction

`SurveyAnswerOptions` are selectable choices belonging to a [Survey](/api-reference/surveys/surveys.md).

## Model Definition

**Alias**

`surveyAnswerOption`

**Capabilities**

* [Translations](/introduction/resource-capabilities/translations.md) - Localizes `title`; examples use `en-US`.

**Relations**

| Key      | Relation                                    | Type       | Relation Field(s) |
| -------- | ------------------------------------------- | ---------- | ----------------- |
| `user`   | [User](/api-reference/users.md)             | Belongs to | `user_id`         |
| `survey` | [Survey](/api-reference/surveys/surveys.md) | Belongs to | `survey_id`       |

## List by Survey

List visible `SurveyAnswerOptions` for one `Survey`.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/surveys/{survey}/answer-options`

**Route Parameters**

| Parameter | Type      | Description |
| --------- | --------- | ----------- |
| `survey`  | `integer` | Survey ID.  |

**Request Keys**

| Key         | Type      | Default           | Description                          |
| ----------- | --------- | ----------------- | ------------------------------------ |
| `selects`   | `string`  | All fields        | Comma-separated fields to return.    |
| `relations` | `string`  | Default relations | Pipe-separated relations to include. |
| `limit`     | `integer` | No limit          | Maximum number of answer options.    |

**Example Request**

{% tabs %}
{% tab title="PHP" %}

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('GET', '/api/surveys/31/answer-options', [
    'headers' => ['Authorization' => "Bearer {accessToken}"]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
[
  {
    "id": 81,
    "user_id": 7,
    "survey_id": 31,
    "lang_id": "en-US",
    "title": "Very satisfied",
    "sort_number": 1
  },
  {
    "id": 82,
    "user_id": 8,
    "survey_id": 31,
    "lang_id": "en-US",
    "title": "Needs improvement",
    "sort_number": 2
  }
]
```

## Show

Show one visible `SurveyAnswerOption`.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/surveys/{survey}/answer-options/{surveyAnswerOption}`

**Route Parameters**

| Parameter            | Type      | Description                               |
| -------------------- | --------- | ----------------------------------------- |
| `survey`             | `integer` | Survey ID.                                |
| `surveyAnswerOption` | `integer` | Answer option ID belonging to the survey. |

**Request Keys**

| Key         | Type     | Default           | Description                          |
| ----------- | -------- | ----------------- | ------------------------------------ |
| `selects`   | `string` | All fields        | Comma-separated fields to return.    |
| `relations` | `string` | Default relations | Pipe-separated relations to include. |

**Example Request**

{% tabs %}
{% tab title="PHP" %}

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('GET', '/api/surveys/31/answer-options/81', [
    'headers' => ['Authorization' => "Bearer {accessToken}"]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "id": 81,
  "user_id": 7,
  "survey_id": 31,
  "lang_id": "en-US",
  "title": "Very satisfied",
  "sort_number": 1
}
```

## Admin: List by Survey

List all `SurveyAnswerOptions` for one `Survey` in administration scope.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/administration/surveys/{survey}/answer-options`

**Route Parameters**

| Parameter | Type      | Description |
| --------- | --------- | ----------- |
| `survey`  | `integer` | Survey ID.  |

**Request Keys**

| Key         | Type      | Default           | Description                          |
| ----------- | --------- | ----------------- | ------------------------------------ |
| `selects`   | `string`  | All fields        | Comma-separated fields to return.    |
| `relations` | `string`  | Default relations | Pipe-separated relations to include. |
| `limit`     | `integer` | No limit          | Maximum number of answer options.    |

**Behavior**

Administration results can include soft-deleted answer options.

**Example Request**

{% tabs %}
{% tab title="PHP" %}

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('GET', '/api/administration/surveys/31/answer-options', [
    'headers' => ['Authorization' => "Bearer {accessToken}"]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
[
  {
    "id": 81,
    "user_id": 7,
    "survey_id": 31,
    "lang_id": "en-US",
    "title": "Very satisfied",
    "sort_number": 1
  },
  {
    "id": 82,
    "user_id": 8,
    "survey_id": 31,
    "lang_id": "en-US",
    "title": "Needs improvement",
    "sort_number": 2,
    "deleted_at": "2026-08-03 10:00:00"
  }
]
```

## Admin: Show

Show one `SurveyAnswerOption` in administration scope.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/administration/surveys/{survey}/answer-options/{surveyAnswerOption}`

**Route Parameters**

| Parameter            | Type      | Description                               |
| -------------------- | --------- | ----------------------------------------- |
| `survey`             | `integer` | Survey ID.                                |
| `surveyAnswerOption` | `integer` | Answer option ID belonging to the survey. |

**Request Keys**

| Key         | Type     | Default           | Description                          |
| ----------- | -------- | ----------------- | ------------------------------------ |
| `selects`   | `string` | All fields        | Comma-separated fields to return.    |
| `relations` | `string` | Default relations | Pipe-separated relations to include. |

**Example Request**

{% tabs %}
{% tab title="PHP" %}

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('GET', '/api/administration/surveys/31/answer-options/82', [
    'headers' => ['Authorization' => "Bearer {accessToken}"]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "id": 82,
  "user_id": 8,
  "survey_id": 31,
  "lang_id": "en-US",
  "title": "Needs improvement",
  "sort_number": 2
}
```

## Admin: Create

Create a new `SurveyAnswerOption`.

**Definition**

<mark style="color:yellow;">`POST`</mark> `/api/administration/surveys/{survey}/answer-options`

**Route Parameters**

| Parameter | Type      | Description |
| --------- | --------- | ----------- |
| `survey`  | `integer` | Survey ID.  |

**Request Keys**

| Key           | Type      | Default         | Description                                 |
| ------------- | --------- | --------------- | ------------------------------------------- |
| `lang_id`     | `string`  | System language | Language key. Use `en-US` for this example. |
| `title`\*     | `string`  | -               | Answer option label.                        |
| `sort_number` | `integer` | Auto            | Order within the survey.                    |

Keys with `*` are required.

**Behavior**

Answer options cannot be added after the survey has received a vote.

**Example Request**

{% tabs %}
{% tab title="PHP" %}

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/administration/surveys/31/answer-options', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        'lang_id' => 'en-US',
        'title' => 'Needs improvement',
        'sort_number' => 2
    ]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "status": "success",
  "data": {
    "id": 82,
    "user_id": 8,
    "survey_id": 31,
    "lang_id": "en-US",
    "title": "Needs improvement",
    "sort_number": 2
  }
}
```

## Admin: Update

Update an existing `SurveyAnswerOption`.

**Definition**

<mark style="color:blue;">`PUT`</mark> `/api/administration/surveys/{survey}/answer-options/{surveyAnswerOption}`

**Route Parameters**

| Parameter            | Type      | Description       |
| -------------------- | --------- | ----------------- |
| `survey`             | `integer` | Survey ID.        |
| `surveyAnswerOption` | `integer` | Answer option ID. |

**Request Keys**

| Key           | Type      | Default       | Description              |
| ------------- | --------- | ------------- | ------------------------ |
| `lang_id`     | `string`  | Current value | Language key.            |
| `title`       | `string`  | Current value | Answer option label.     |
| `sort_number` | `integer` | Current value | Order within the survey. |

**Behavior**

The title cannot be changed after the survey has received a vote; sorting remains independently validated.

**Example Request**

{% tabs %}
{% tab title="PHP" %}

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('PUT', '/api/administration/surveys/31/answer-options/82', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        'lang_id' => 'en-US',
        'title' => 'Could be improved',
        'sort_number' => 2
    ]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "status": "success",
  "data": {
    "id": 82,
    "user_id": 8,
    "survey_id": 31,
    "lang_id": "en-US",
    "title": "Could be improved",
    "sort_number": 2
  }
}
```

## Admin: Delete

Delete an existing `SurveyAnswerOption`.

**Definition**

<mark style="color:red;">`DELETE`</mark> `/api/administration/surveys/{survey}/answer-options/{surveyAnswerOption}`

**Route Parameters**

| Parameter            | Type      | Description       |
| -------------------- | --------- | ----------------- |
| `survey`             | `integer` | Survey ID.        |
| `surveyAnswerOption` | `integer` | Answer option ID. |

**Behavior**

An answer option cannot be deleted after the survey has received a vote.

**Example Request**

{% tabs %}
{% tab title="PHP" %}

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('DELETE', '/api/administration/surveys/31/answer-options/82', [
    'headers' => ['Authorization' => "Bearer {accessToken}"]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "status": "success",
  "data": null
}
```
