# Markdown block

Displays standard Markdown — headings, lists, tables, code, links — the way an AI model usually writes it.

| | |
|---|---|
| **Type** | `markdown` |
| **Available in** | Messages, Modals, Home tab |

## Usage

Use this block for text in standard Markdown (`**bold**`, `[link](url)`, `# Heading`, tables, task lists), such as a reply from an LLM, instead of converting it to `mrkdwn`.

## Fields

| Field | Type | Description | Required? |
|---|---|---|---|
| `type` | String | The type of block. For a markdown block, `type` is always `markdown`. | Required |
| `text` | String | The Markdown text. Maximum 12,000 characters. | Required |
| `block_id` | String | A unique identifier for the block. Maximum length is 255 characters. It must be unique within the message or view — a duplicate is replaced and reported as a warning. | Optional |

> **How Repzo Chat differs from Slack**
>
> - Slack shows markdown blocks in messages only. Repzo shows them in modals and the Home tab too.
> - The 12,000-character limit applies to each block (Slack counts all markdown blocks in a message together).
> - Images (`![alt](url)`) show as images, not links. Raw HTML shows as text, and only http(s) and `mailto:` links are kept.
> - `block_id` is kept (Slack drops it).

## Examples

### A deal summary written by an AI model

```json
{
  "blocks": [
    {
      "type": "markdown",
      "text": "## Northwind — POS rollout\n\n**Status:** negotiation, expected close **30 Oct**.\n\n| Item | Qty | Price (SAR) |\n| --- | ---: | ---: |\n| POS Terminal X2 | 40 | 98,000 |\n| Support plan | 1 | 12,000 |\n\nNext steps:\n- [x] Send revised quote\n- [ ] Book the site survey\n\nSee the [deal record](https://example.com/deals/1042)."
    }
  ]
}
```

## Related

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