---
title: "Option object"
summary: "Defines a single item in a number of item selection elements."
url: "https://docs.slack.dev/reference/block-kit/composition-objects/option-object"
type: "reference"
subtype: "block-kit"
---

Source: https://docs.slack.dev/reference/block-kit/composition-objects/option-object

# Option object

**Defines a single item in a number of item selection elements.**

An object that represents a single selectable item in a [select menu](https://docs.slack.dev/reference/block-kit/block-elements/select-menu-element.md), [multi-select menu](https://docs.slack.dev/reference/block-kit/block-elements/multi-select-menu-element.md), [checkbox group](https://docs.slack.dev/reference/block-kit/block-elements/checkboxes-element.md), [radio button group](https://docs.slack.dev/reference/block-kit/block-elements/radio-button-group-element.md), or [overflow menu](https://docs.slack.dev/reference/block-kit/block-elements/overflow-menu-element.md).

#### Fields {#fields}

Field

Type

Description

Required?

`text`

Object

A [text object](#text) that defines the text shown in the option on the menu. Overflow, select, and multi-select menus can only use `plain_text` objects, while radio buttons and checkboxes can use `mrkdwn` text objects. Maximum length for the `text` in this field is 75 characters.

Required

`value`

String

A unique string value that will be passed to your app when this option is chosen. Maximum length for this field is 150 characters.

Required

`description`

Object

A [`plain_text`](#text) text object that defines a line of descriptive text shown below the `text` field beside a single selectable item in a [select menu](https://docs.slack.dev/reference/block-kit/block-elements/select-menu-element.md), [multi-select menu](https://docs.slack.dev/reference/block-kit/block-elements/multi-select-menu-element.md), [checkbox group](https://docs.slack.dev/reference/block-kit/block-elements/checkboxes-element.md), [radio button group](https://docs.slack.dev/reference/block-kit/block-elements/radio-button-group-element.md), or [overflow menu](https://docs.slack.dev/reference/block-kit/block-elements/overflow-menu-element.md). [Checkbox group](https://docs.slack.dev/reference/block-kit/block-elements/checkboxes-element.md) and [radio button group](https://docs.slack.dev/reference/block-kit/block-elements/radio-button-group-element.md) items can also use [`mrkdwn`](https://docs.slack.dev/messaging/formatting-message-text.md#basic-formatting) formatting. Maximum length for the `text` within this field is 75 characters.

Optional

`url`

String

A URL to load in the user's browser when the option is clicked. **The `url` attribute is only available in [overflow menus](https://docs.slack.dev/reference/block-kit/block-elements/overflow-menu-element.md)**. Maximum length for this field is 3000 characters. If you're using `url`, you'll still receive an [interaction payload](https://docs.slack.dev/interactivity/handling-user-interaction.md#payloads) and will need to [send an acknowledgement response](https://docs.slack.dev/interactivity/handling-user-interaction.md#acknowledgment_response).

Optional

#### Example {#example}

*   JSON
*   Python Slack SDK
*   Node Slack SDK
*   Java Slack SDK

```
{    "text": {        "type": "plain_text",        "emoji": true,        "text": "Save it"    },    "value": "value-2"}
```

```python
def example01() -> Option:
    """
    Defines a single item in a number of item selection elements.
    https://docs.slack.dev/reference/block-kit/composition-objects/option-object/

    A single option object.
    """
    option = Option(
        text=PlainTextObject(text="Save it", emoji=True),
        value="value-2",
    )
    return option
```

```javascript
export function example01() {
  /**
   * @type {import('@slack/types').Option}
   */
  const option = {
    text: {
      type: "plain_text",
      emoji: true,
      text: "Save it",
    },
    value: "value-2",
  };
  return option;
}
```

```java
public static OptionObject example01() {
    OptionObject option = OptionObject.builder()
            .text(BlockCompositions.plainText(pt -> pt.text("Save it").emoji(true)))
            .value("value-2")
            .build();
    return option;
}
```

The option object must be used with the [select menu](https://docs.slack.dev/reference/block-kit/block-elements/select-menu-element.md), [multi-select menu](https://docs.slack.dev/reference/block-kit/block-elements/multi-select-menu-element.md), [checkbox group](https://docs.slack.dev/reference/block-kit/block-elements/checkboxes-element.md), [radio button group](https://docs.slack.dev/reference/block-kit/block-elements/radio-button-group-element.md), or [overflow menu](https://docs.slack.dev/reference/block-kit/block-elements/overflow-menu-element.md).

This example shows a section block containing a static select menu element with several option objects.

*   JSON
*   Python Slack SDK
*   Node Slack SDK
*   Java Slack SDK

```
{    "blocks": [        {            "type": "section",            "text": {                "type": "mrkdwn",                "text": ":mag: Search results for *Cata*"            }        },        {            "type": "divider"        },        {            "type": "section",            "text": {                "type": "mrkdwn",                "text": "*<fakeLink.toYourApp.com|Use Case Catalogue>*\nUse Case Catalogue for the following departments/roles..."            },            "accessory": {                "type": "static_select",                "placeholder": {                    "type": "plain_text",                    "emoji": true,                    "text": "Manage"                },                "options": [                    {                        "text": {                            "type": "plain_text",                            "emoji": true,                            "text": "Edit it"                        },                        "value": "value-0"                    },                    {                        "text": {                            "type": "plain_text",                            "emoji": true,                            "text": "Read it"                        },                        "value": "value-1"                    },                    {                        "text": {                            "type": "plain_text",                            "emoji": true,                            "text": "Save it"                        },                        "value": "value-2"                    }                ]            }        }    ]}
```

[View in Block Kit Builder](https://api.slack.com/tools/block-kit-builder?mode=message&blocks=%5B%7B%22type%22%3A%22section%22%2C%22text%22%3A%7B%22type%22%3A%22mrkdwn%22%2C%22text%22%3A%22%3Amag%3A%20Search%20results%20for%20*Cata*%22%7D%7D%2C%7B%22type%22%3A%22divider%22%7D%2C%7B%22type%22%3A%22section%22%2C%22text%22%3A%7B%22type%22%3A%22mrkdwn%22%2C%22text%22%3A%22*%3CfakeLink.toYourApp.com%7CUse%20Case%20Catalogue%3E*%5CnUse%20Case%20Catalogue%20for%20the%20following%20departments%2Froles...%22%7D%2C%22accessory%22%3A%7B%22type%22%3A%22static_select%22%2C%22placeholder%22%3A%7B%22type%22%3A%22plain_text%22%2C%22emoji%22%3Atrue%2C%22text%22%3A%22Manage%22%7D%2C%22options%22%3A%5B%7B%22text%22%3A%7B%22type%22%3A%22plain_text%22%2C%22emoji%22%3Atrue%2C%22text%22%3A%22Edit%20it%22%7D%2C%22value%22%3A%22value-0%22%7D%2C%7B%22text%22%3A%7B%22type%22%3A%22plain_text%22%2C%22emoji%22%3Atrue%2C%22text%22%3A%22Read%20it%22%7D%2C%22value%22%3A%22value-1%22%7D%2C%7B%22text%22%3A%7B%22type%22%3A%22plain_text%22%2C%22emoji%22%3Atrue%2C%22text%22%3A%22Save%20it%22%7D%2C%22value%22%3A%22value-2%22%7D%5D%7D%7D%5D)

```python
def example02() -> list[Block]:
    """
    A static select menu element with several option objects.
    """
    blocks: list[Block] = [
        SectionBlock(
            text=MarkdownTextObject(text=":mag: Search results for *Cata*"),
        ),
        DividerBlock(),
        SectionBlock(
            text=MarkdownTextObject(
                text="*<fakeLink.toYourApp.com|Use Case Catalogue>*\nUse Case Catalogue for the following departments/roles..."
            ),
            accessory=StaticSelectElement(
                placeholder=PlainTextObject(text="Manage", emoji=True),
                options=[
                    Option(
                        text=PlainTextObject(text="Edit it", emoji=True),
                        value="value-0",
                    ),
                    Option(
                        text=PlainTextObject(text="Read it", emoji=True),
                        value="value-1",
                    ),
                    Option(
                        text=PlainTextObject(text="Save it", emoji=True),
                        value="value-2",
                    ),
                ],
            ),
        ),
    ]
    return blocks
```

```javascript
export function example02() {
  /**
   * @type {(import('@slack/types').SectionBlock | import('@slack/types').DividerBlock)[]}
   */
  const blocks = [
    {
      type: "section",
      text: {
        type: "mrkdwn",
        text: ":mag: Search results for *Cata*",
      },
    },
    {
      type: "divider",
    },
    {
      type: "section",
      text: {
        type: "mrkdwn",
        text: "*<fakeLink.toYourApp.com|Use Case Catalogue>*\nUse Case Catalogue for the following departments/roles...",
      },
      accessory: {
        type: "static_select",
        placeholder: {
          type: "plain_text",
          emoji: true,
          text: "Manage",
        },
        options: [
          {
            text: {
              type: "plain_text",
              emoji: true,
              text: "Edit it",
            },
            value: "value-0",
          },
          {
            text: {
              type: "plain_text",
              emoji: true,
              text: "Read it",
            },
            value: "value-1",
          },
          {
            text: {
              type: "plain_text",
              emoji: true,
              text: "Save it",
            },
            value: "value-2",
          },
        ],
      },
    },
  ];
  return blocks;
}
```

```java
public static List<LayoutBlock> example02() {
    List<LayoutBlock> blocks = List.of(
            Blocks.section(s -> s.text(BlockCompositions.markdownText(":mag: Search results for *Cata*"))),
            Blocks.divider(),
            Blocks.section(s -> s.text(
                            BlockCompositions.markdownText(
                                    "*<fakeLink.toYourApp.com|Use Case Catalogue>*\nUse Case Catalogue for the following departments/roles..."))
                    .accessory(BlockElements.staticSelect(m -> m.placeholder(BlockCompositions.plainText(
                                    pt -> pt.text("Manage").emoji(true)))
                            .options(List.of(
                                    OptionObject.builder()
                                            .text(BlockCompositions.plainText(
                                                    pt -> pt.text("Edit it").emoji(true)))
                                            .value("value-0")
                                            .build(),
                                    OptionObject.builder()
                                            .text(BlockCompositions.plainText(
                                                    pt -> pt.text("Read it").emoji(true)))
                                            .value("value-1")
                                            .build(),
                                    OptionObject.builder()
                                            .text(BlockCompositions.plainText(
                                                    pt -> pt.text("Save it").emoji(true)))
                                            .value("value-2")
                                            .build()))))));
    return blocks;
}
```

* * *
