# Text object

Defines text for blocks and elements, either as plain text or formatted with `mrkdwn`.

| | |
|---|---|
| **Used in** | [Alert block](https://workstation.repzo.com/docs/developers/block-kit/blocks/alert-block), [Card block](https://workstation.repzo.com/docs/developers/block-kit/blocks/card-block), [Container block](https://workstation.repzo.com/docs/developers/block-kit/blocks/container-block), [Context block](https://workstation.repzo.com/docs/developers/block-kit/blocks/context-block), [Header block](https://workstation.repzo.com/docs/developers/block-kit/blocks/header-block), [Image block](https://workstation.repzo.com/docs/developers/block-kit/blocks/image-block), [Input block](https://workstation.repzo.com/docs/developers/block-kit/blocks/input-block), [Section block](https://workstation.repzo.com/docs/developers/block-kit/blocks/section-block), [Video block](https://workstation.repzo.com/docs/developers/block-kit/blocks/video-block), [Button element](https://workstation.repzo.com/docs/developers/block-kit/elements/button-element), [Checkboxes element](https://workstation.repzo.com/docs/developers/block-kit/elements/checkboxes-element), [Date picker element](https://workstation.repzo.com/docs/developers/block-kit/elements/date-picker-element), [Datetime picker element](https://workstation.repzo.com/docs/developers/block-kit/elements/datetime-picker-element), [Email input element](https://workstation.repzo.com/docs/developers/block-kit/elements/email-input-element), [Feedback buttons element](https://workstation.repzo.com/docs/developers/block-kit/elements/feedback-buttons-element), [Icon button element](https://workstation.repzo.com/docs/developers/block-kit/elements/icon-button-element), [Multi-select menu element](https://workstation.repzo.com/docs/developers/block-kit/elements/multi-select-menu-element), [Number input element](https://workstation.repzo.com/docs/developers/block-kit/elements/number-input-element), [Overflow menu element](https://workstation.repzo.com/docs/developers/block-kit/elements/overflow-menu-element), [Plain-text input element](https://workstation.repzo.com/docs/developers/block-kit/elements/plain-text-input-element), [Radio button group element](https://workstation.repzo.com/docs/developers/block-kit/elements/radio-button-group-element), [Rich text input element](https://workstation.repzo.com/docs/developers/block-kit/elements/rich-text-input-element), [Select menu element](https://workstation.repzo.com/docs/developers/block-kit/elements/select-menu-element), [Time picker element](https://workstation.repzo.com/docs/developers/block-kit/elements/time-picker-element), [URL input element](https://workstation.repzo.com/docs/developers/block-kit/elements/url-input-element), [Workflow button element](https://workstation.repzo.com/docs/developers/block-kit/elements/workflow-button-element) |

## Usage

Each block or element sets its own length limit and says whether it accepts `mrkdwn` (a header, for example, only takes `plain_text`).

`mrkdwn` supports:

- `*bold*`, `_italic_`, `~strike~`, `` `inline code` `` and ```` ```code blocks``` ````
- `>` at the start of a line for a block quote, and `\n` for a line break
- links: `<https://example.com|label>` and `<mailto:sales@example.com|Email sales>`
- mentions: `<@USER_ID>`, `<#CHANNEL_ID>`, `<!subteam^DEPARTMENT_ID>`, and `<!here>`, `<!channel>`, `<!everyone>`
- dates: `<!date^1791813600^{date_short} at {time}|Oct 12, 2026 2:00 PM UTC>`, shown in the reader's language and timezone
- emoji shortcodes such as `:white_check_mark:`

Write a literal `&`, `<` or `>` as `&amp;`, `&lt;` and `&gt;`.

Date tokens: `{date_num}` (2026-10-12), `{date}` (October 12, 2026), `{date_short}` (Oct 12, 2026), `{date_long}` (Monday, October 12, 2026), `{date_pretty}`, `{date_short_pretty}` and `{date_long_pretty}` (the same, or today / yesterday / tomorrow), `{day_divider_pretty}`, `{time}`, `{time_secs}` and `{ago}` (3 minutes ago).

## Fields

| Field | Type | Description | Required? |
|---|---|---|---|
| `type` | String | The formatting to use for this text object. Can be one of `plain_text` or `mrkdwn`. | Required |
| `text` | String | The text. Accepts `mrkdwn` formatting when `type` is `mrkdwn`. The minimum length is 1 and the maximum length is 3000 characters; the block or element holding it may set a lower limit. | Required |
| `emoji` | Boolean | Whether emoji shortcodes such as `:tada:` are shown as emoji. Defaults to `true`. Only usable when `type` is `plain_text`. | Optional |
| `verbatim` | Boolean | When `false` (the default on Slack), URLs, conversation names and certain mentions are parsed automatically. When `true`, only explicit `mrkdwn` syntax is processed. Only usable when `type` is `mrkdwn`. | Optional |

> **How Repzo Chat differs from Slack**
>
> - Repzo never parses plain text automatically — bare URLs, `#channel` names and `@names` stay as typed, as if `verbatim` were always `true`. Write `<https://…|label>`, `<#CHANNEL_ID>` and `<@USER_ID>` to link them. `verbatim` is accepted and changes nothing.
> - User, channel and department ids are Repzo ids. Names are looked up when the message is posted. A private channel shows as `#channel`, so its name never reaches readers outside it; an id Repzo doesn't know shows the label after `|`, or `user` / `channel` / `team`.
> - `<!subteam^ID>` (Slack's user groups) mentions a Repzo **department** and shows its name.
> - Dates always include the year, day numbers have no ordinal suffix (`October 12, 2026`), and the optional link part of `<!date^…>` is ignored. `{date_slash}` and `{date_long_full}` aren't supported and stay as written, like any unknown token.
> - Newer blocks (`card`, `alert`, `container`, `video`, …) also accept a plain string where a text object goes.

## Examples

### Plain text and mrkdwn

```json
{
  "blocks": [
    {
      "type": "header",
      "text": {
        "type": "plain_text",
        "text": "Deal won :tada:",
        "emoji": true
      }
    },
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*Cedar Retail Group* signed the 3-year CRM contract.\nOwner: <@3f6c2a1e-8b4d-4c7a-9e21-5d0b7f9a1c34|Account owner> · <https://example.com/deals/cedar|Open the deal>\nSigned <!date^1791813600^{date_short_pretty} at {time}|Oct 12, 2026 2:00 PM UTC>"
      }
    }
  ]
}
```

### Quotes, code and mentions

```json
{
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "<!subteam^c2b8e5f1-4a6d-4e9b-8f73-1d5a0c6e9b28|@Customer Success> please review the escalation in <#a7d41c90-2e5b-4f83-b6c1-0e9f2d84a517|support-escalations>.\n>The customer reports error `E-401` when syncing invoices.\n~Waiting on engineering~ Fix deployed _this morning_."
      }
    }
  ]
}
```

## Related

- [Composition objects](https://workstation.repzo.com/docs/developers/block-kit/objects)
- [Block Kit overview](https://workstation.repzo.com/docs/developers/block-kit)
