---
updatedAt: 2026-08-13T17:56:44.000Z
agentTools:
  projectIndex: https://developers.fellow.ai/llms.txt
---

# Fellow Markdown

Fellow Markdown is the format the API uses for reading and writing note content. It is GitHub-Flavored Markdown plus Fellow extensions for the things Fellow notes have and plain markdown doesn't: action items with assignees and due dates, talking points, mentions, tags, and highlights.

The format round-trips: the `content_fellow_markdown` you read from a note is exactly what you can send back to `POST /note/{id}/agenda`. Block order in the markdown is the order in the note. Blocks are separated by a blank line; consecutive list items may sit on adjacent lines.

### Blocks

The marker at the start of a line sets the block type. Structural properties (heading level, checkbox state, indentation) live in the syntax itself, never in attribute braces.

| Block         | Syntax                                                                                |
| ------------- | ------------------------------------------------------------------------------------- |
| Heading       | `# H1` through `###### H6`. A subtitle on the same heading uses `# Title<br>Subtitle` |
| Paragraph     | Plain text on its own line                                                            |
| Bullet        | `- text`                                                                              |
| Numbered item | `1. text` (numbers are cosmetic; order is what counts)                                |
| Action item   | `- [ ]` open, `- [x]` done, `- [!]` won't do                                          |
| Talking point | `- ( )` open, `- (x)` done                                                            |
| Divider       | `---` on its own line                                                                 |

Action items are for assigned work and can have multiple assignees. Talking points are for discussion topics and accept at most one assignee.

Indent nested items with two spaces per level. Nesting is flat: a block carries an indent level rather than children.

Tables, blockquotes, and fenced code blocks are not supported and are rejected with a validation error. Present tabular data as bulleted lists under headings instead.

### Inline formatting

`**bold**`, `*italic*`, `~~strikethrough~~`, `<u>underline</u>`, `` `code` ``, `==highlight=={colour=hl-green}` *(has 7 different colours: hl-green, hl-red, hl-peach, hl-yellow, hl-green, hl-royal and hl-purple)*, `[coloured text]{colour=#hex}`, and `[label](https://url)` links. A line break inside a block is `<br>`. Escape a literal marker with a backslash: `\*`, `\#`, `\:`.

### Mentions, tags, and emoji

* Mention: `[Display Name](mention:user@example.com)` , using the person's primary email address in your workspace. An email that doesn't match anyone is rejected with a validation error.
* Tag: `#tagname`. It becomes a tag only if it already exists in your workspace; otherwise it stays plain text.
* Link pill: `[Display Text](link-pill:https://example.com)`.
* Custom emoji: `:shortcode:`. Renders only if the emoji exists in your workspace, otherwise stays text.

### Block attributes

Everything that isn't a structural marker goes in one optional trailing brace per block: `{key=value ...}`, space-separated. Only include non-default values — a plain paragraph has no brace at all.

* `assignees` is a comma-separated list of `email:status` pairs, with status one of `not_done`, `done`, `wont_do`. Example: `{assignees=jane@example.com:not_done}`. The status is required on every entry.
* `dueDate` is `YYYY-MM-DD`.
* `completeBy` (action items only) is `any` (default, omit it) or `all`: whether one or every assignee must finish. For assigned items the checkbox is derived from assignee statuses, so update the assignee entry rather than just flipping the checkbox.
* Quote values containing spaces: `{placeholder="Enter text"}`.
* Opaque tokens (`attachmentId`, `keyResultId`, `guidanceId`) pass through verbatim. Never invent them; only reuse tokens already present in content you read.
* Identity attributes (`blockId`, `entityId`) are internal. Never write them; they are never returned.

### Example

```markdown
## Talking Points

Quick context for the sync. See the [roadmap](https://fellow.app/roadmap) and #planning.

- ( ) Review Q1 goals {assignees=jane@x.com:not_done dueDate=2024-12-01}
- (x) Recap last week
- [ ] Send the summary {assignees=bob@x.com:not_done,jane@x.com:not_done completeBy=all}
```

<br />

<br />