> ## Documentation Index
> Fetch the complete documentation index at: https://developers.workchats.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Block types

> Field-level schema for every block and button

See [Blocks](/guides/blocks) for how these render and when. This page is
the field-level schema.

A message's `blocks` array holds at most 50 entries, 16 KB total. Any field
not listed for a block's `type` returns `400 invalid_blocks`.

## `header`

| Field | Type | Required |
| - | - | - |
| `type` | `"header"` | Yes |
| `text` | string, non-empty | Yes |

## `section`

| Field | Type | Required |
| - | - | - |
| `type` | `"section"` | Yes |
| `text` | string, non-empty. Markdown: `**bold**`, `_italic_`, `[label](url)`, line breaks | Yes |

## `fields`

| Field | Type | Required |
| - | - | - |
| `type` | `"fields"` | Yes |
| `fields` | array of `{label, value}`, 1 to 10 items | Yes |

Each field object:

| Field | Type | Required |
| - | - | - |
| `label` | string, non-empty | Yes |
| `value` | string | Yes |

## `actions`

| Field | Type | Required |
| - | - | - |
| `type` | `"actions"` | Yes |
| `elements` | array of buttons, 1 to 5 items | Yes |

### Button

| Field | Type | Required |
| - | - | - |
| `type` | `"button"` | Yes |
| `text` | string, non-empty | Yes |
| `url` | string, `http(s)` URL — makes this a **link** button | No |
| `action_id` | string, non-empty — makes this an **action** button | No |
| `value` | string, passed back in the `interaction` callback | No |
| `style` | `"primary"` \| `"danger"` | No |

A button is a link (`url`) or an action (`action_id`), never both. Action
buttons don't render as clickable until Phase 2 — see
[Callbacks & signature verification](/guides/callbacks-and-signature-verification).

## `context`

| Field | Type | Required |
| - | - | - |
| `type` | `"context"` | Yes |
| `text` | string, non-empty | Yes |

## `divider`

| Field | Type | Required |
| - | - | - |
| `type` | `"divider"` | Yes |

Takes no other fields.
