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

# Note Template

This document outlines the main structures for creating **Note Template** objects.

## NoteTemplate

<ResponseField name="NoteTemplate" type="Object">
  <Expandable title="properties">
    <ResponseField name="global_prompt" type="string">
      A global prompt applying to the entire template.
    </ResponseField>

    <ResponseField name="id" type="string" required>
      A unique ID for the template.
    </ResponseField>

    <ResponseField name="sections" type="Array of Section objects" required>
      Ordered list of sections that make up the template.
    </ResponseField>

    <ResponseField name="title" type="string" required>
      Title of the template.
    </ResponseField>
  </Expandable>
</ResponseField>

<CodeGroup>
  ```json Example theme={null}
  {
    "id": "template-abc",
    "title": "Project Documentation Template",
    "global_prompt": "Overall style: straightforward",
    "sections": [
      {
        "id": "heading-1",
        "type": "heading",
        "properties": {
          "level": 1,
          "text": "Introduction"
        },
        "children": []
      },
      {
        "id": "text-1",
        "type": "text",
        "prompt": "Explain the project background",
        "properties": {
          "detail_level": "medium",
          "tone": "formal"
        }
      },
      {
        "id": "list-1",
        "type": "list",
        "prompt": "List key objectives",
        "properties": {
          "list_type": "bullet",
          "min_items": 1,
          "max_items": 3
        }
      }
    ]
  }
  ```
</CodeGroup>

***

## Section

<ResponseField name="Section" type="Discriminated Union">
  A discriminated union that represents any one of the major section types. The <code>type</code> field
  determines which schema applies.

  <Expandable title="possible types">
    <ResponseField name="HeadingSection" type="Object">
      When <code>type = "heading"</code>
    </ResponseField>

    <ResponseField name="ListSection" type="Object">
      When <code>type = "list"</code>
    </ResponseField>

    <ResponseField name="TextSection" type="Object">
      When <code>type = "text"</code>
    </ResponseField>
  </Expandable>
</ResponseField>

<CodeGroup>
  ```json Example theme={null}
  [
    {
      "id": "heading-1",
      "type": "heading",
      "properties": { "level": 1, "text": "Overview" },
      "children": []
    },
    {
      "id": "text-1",
      "type": "text",
      "prompt": "Brief overview text",
      "properties": { "tone": "technical" }
    },
    {
      "id": "list-1",
      "type": "list",
      "prompt": "Key tasks",
      "properties": { "list_type": "bullet" }
    }
  ]
  ```
</CodeGroup>

***

## HeadingSection

**Important Note on Nesting**:\
There is a maximum heading nesting depth of **2**.

<ResponseField name="HeadingSection" type="Object">
  <Expandable title="properties">
    <ResponseField name="children" type="Array of Section objects" required>
      Nested sections under this heading.
    </ResponseField>

    <ResponseField name="id" type="string" required>
      Unique identifier for this section.
    </ResponseField>

    <ResponseField name="properties" type="Object" required>
      <Expandable title="properties">
        <ResponseField name="bold" type="boolean">
          Whether the content is bold.
        </ResponseField>

        <ResponseField name="hideIfEmpty" type="boolean">
          Hide this heading if empty.
        </ResponseField>

        <ResponseField name="italic" type="boolean">
          Whether the content is italic.
        </ResponseField>

        <ResponseField name="level" type="number" required>
          Heading level (0 ≤ level ≤ 6).
        </ResponseField>

        <ResponseField name="text" type="string" required>
          The heading text.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="result" type="string">
      Resulting text if generated or stored.
    </ResponseField>

    <ResponseField name="type" type="string" required>
      Must be set to "heading".
    </ResponseField>
  </Expandable>
</ResponseField>

<CodeGroup>
  ```json Example theme={null}
  {
    "id": "heading-1",
    "type": "heading",
    "properties": {
      "bold": true,
      "italic": false,
      "hideIfEmpty": false,
      "level": 1,
      "text": "Project Introduction"
    },
    "children": []
  }
  ```
</CodeGroup>

***

## TextSection

<ResponseField name="TextSection" type="Object">
  <Expandable title="properties">
    <ResponseField name="id" type="string" required>
      Unique identifier for this section.
    </ResponseField>

    <ResponseField name="prompt" type="string" required>
      A prompt or instruction for generating/filling text.
    </ResponseField>

    <ResponseField name="properties" type="Object" required>
      <Expandable title="properties">
        <ResponseField name="bold" type="boolean">
          Whether the content is bold.
        </ResponseField>

        <ResponseField name="italic" type="boolean">
          Whether the content is italic.
        </ResponseField>

        <ResponseField name="hideIfEmpty" type="boolean">
          Hide this text if empty.
        </ResponseField>

        <ResponseField name="formatting_style" type="string" default="markdown">
          Content formatting style. One of: "markdown", "plain".
        </ResponseField>

        <ResponseField name="detail_level" type="string" default="standard">
          Detail depth of text. One of: "exhaustive", "detailed", "standard", "brief", "minimal".
        </ResponseField>

        <ResponseField name="tone" type="string" default="formal">
          Tone of the text. One of: "formal", "casual", "technical", "friendly", "instructional".
        </ResponseField>

        <ResponseField name="emptyPlaceholder" type="string">
          Placeholder if the content is empty.
        </ResponseField>

        <ResponseField name="label" type="string">
          A label or title for the text.
        </ResponseField>

        <ResponseField name="bold_label" type="boolean">
          Whether the label itself is bold.
        </ResponseField>

        <ResponseField name="italic_label" type="boolean">
          Whether the label itself is italic.
        </ResponseField>

        <ResponseField name="list_type" type="string">
          If this text is displayed as a list item. One of: "bullet", "numeric".
        </ResponseField>

        <ResponseField name="max_paragraphs" type="number">
          Maximum paragraphs (if auto-generating).
        </ResponseField>

        <ResponseField name="max_sentences" type="number">
          Maximum sentences (if auto-generating).
        </ResponseField>

        <ResponseField name="min_paragraphs" type="number">
          Minimum paragraphs (if auto-generating).
        </ResponseField>

        <ResponseField name="min_sentences" type="number">
          Minimum sentences (if auto-generating).
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="result" type="string">
      Final or generated text.
    </ResponseField>

    <ResponseField name="type" type="string" required>
      Must be set to "text".
    </ResponseField>
  </Expandable>
</ResponseField>

<CodeGroup>
  ```json Example theme={null}
  {
    "id": "text-1",
    "type": "text",
    "prompt": "Provide a concise summary of the project scope.",
    "properties": {
      "bold": false,
      "italic": false,
      "hideIfEmpty": true,
      "formatting_style": "markdown",
      "detail_level": "brief",
      "tone": "casual",
      "label": "Project Scope",
      "bold_label": false,
      "italic_label": false,
      "min_sentences": 2,
      "max_sentences": 3,
      "emptyPlaceholder": "No scope defined yet"
    }
  }
  ```
</CodeGroup>

***

## ListSection

<ResponseField name="ListSection" type="Object">
  <Expandable title="properties">
    <ResponseField name="id" type="string" required>
      Unique identifier for this section.
    </ResponseField>

    <ResponseField name="prompt" type="string" required>
      A prompt or instruction for generating/filling the list.
    </ResponseField>

    <ResponseField name="properties" type="Object" required>
      <Expandable title="properties">
        <ResponseField name="bold" type="boolean">
          Whether the content is bold.
        </ResponseField>

        <ResponseField name="italic" type="boolean">
          Whether the content is italic.
        </ResponseField>

        <ResponseField name="hideIfEmpty" type="boolean">
          Hide this list if empty.
        </ResponseField>

        <ResponseField name="formatting_style" type="string" default="markdown">
          Content formatting style. One of: "markdown", "plain".
        </ResponseField>

        <ResponseField name="detail_level" type="string" default="standard">
          Detail depth for list items. One of: "exhaustive", "detailed", "standard", "brief", "minimal".
        </ResponseField>

        <ResponseField name="tone" type="string" default="formal">
          Tone of the list content. One of: "formal", "casual", "technical", "friendly", "instructional".
        </ResponseField>

        <ResponseField name="emptyPlaceholder" type="string">
          Placeholder if the list is empty.
        </ResponseField>

        <ResponseField name="list_type" type="string" required>
          The format of the list. One of: "bullet", "numeric".
        </ResponseField>

        <ResponseField name="max_items" type="number">
          Maximum number of items.
        </ResponseField>

        <ResponseField name="min_items" type="number">
          Minimum number of items.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="result" type="Array of strings">
      The final or generated list items.
    </ResponseField>

    <ResponseField name="type" type="string" required>
      Must be set to "list".
    </ResponseField>
  </Expandable>
</ResponseField>

<CodeGroup>
  ```json Example theme={null}
  {
    "id": "list-1",
    "type": "list",
    "prompt": "List the main deliverables of the project.",
    "properties": {
      "bold": false,
      "italic": false,
      "hideIfEmpty": false,
      "formatting_style": "markdown",
      "detail_level": "minimal",
      "tone": "technical",
      "list_type": "bullet",
      "min_items": 1,
      "max_items": 5,
      "emptyPlaceholder": "No deliverables defined"
    }
  }
  ```
</CodeGroup>
