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

# Nodes

> The building blocks of every workflow: what each node does, what it returns, and what it costs.

A [workflow](/concepts/workflows) is a graph of **nodes**. Each node does one job on the document: read it, pull fields out of it, sort it, split it, check it, fill it in, or tell someone about it. You connect nodes on the [Studio](/concepts/studio) canvas, or send the same graph to the API as `nodes` and `edges`.

Most workflows are two nodes: **Parse** then **Extract**. The rest exist for documents that are more complicated, or for when you want something other than data back.

<div className="af-flow" role="img" aria-label="Parse feeds Extract">
  <div className="af-flow-row">
    <a className="af-node" href="/guides/nodes/parse">Parse</a>

    <span className="af-link" />

    <a className="af-node" href="/guides/nodes/extract">Extract</a>
  </div>
</div>

## The palette

The Studio palette groups nodes the same way this table does.

| Section | Node | What it does | Returns | Credits |
| - | - | - | - | - |
| Intelligence | [Parse](/guides/nodes/parse) | Reads the document into text, tables and layout. Always first. | `parse` | 7 to 100 / page by tier |
| Intelligence | [Extract](/guides/nodes/extract) | Pulls out the fields you define, with confidence and evidence. | `extractions[]` | 17 to 150 / page by tier |
| Intelligence | [Classify](/guides/nodes/classify) | Labels the document as one of your categories and routes it. | `classifications[]` | 10 / page |
| Intelligence | [Split](/guides/nodes/split) | Breaks one file that holds several documents into pieces. | `splits[]` | 25 / page |
| Intelligence | [Knowledge](/guides/nodes/knowledge) <sup>Beta</sup> | Indexes every parsed document into a searchable, askable corpus. | knowledge base | 2 / page indexed |
| Intelligence | [Edit](/guides/nodes/edit) <sup>Beta</sup> | Fills the blank form it was given and returns the completed PDF. | `edits[]` | 35 / page |
| Logic | [Validate](/guides/nodes/validate) | Checks extracted values against rules and flags failures. | validation results | 5 / AI rule |
| Logic | [If/Else](/guides/nodes/if-else) <sup>Beta</sup> | Routes the document down a True or a False branch on its data. | branch | free |
| Alerts | [Slack alert](/guides/nodes/slack-alert) <sup>Beta</sup> | Posts a message to a Slack channel when a document reaches it. | message | free |
| Alerts | [Email alert](/guides/nodes/email-alert) <sup>Soon</sup> | Will send an email when a document reaches it. Shown in the palette, not yet enabled. | message | free |

Knowledge appears in the palette once the feature is enabled for your organization.

## Three shapes you will build

**Read only.** Parse alone. You get the document as markup, for search, your own model, or an archive.

<div className="af-flow" role="img" aria-label="Parse alone">
  <div className="af-flow-row">
    <a className="af-node af-node-on" href="/guides/nodes/parse">Parse</a>
  </div>
</div>

**Read, then pull out.** The default: "read this document and give me these fields".

<div className="af-flow" role="img" aria-label="Parse feeds Extract">
  <div className="af-flow-row">
    <a className="af-node" href="/guides/nodes/parse">Parse</a>

    <span className="af-link" />

    <a className="af-node" href="/guides/nodes/extract">Extract</a>
  </div>
</div>

**Sort first, then pull out.** Classify decides the kind of document, then sends it to an Extract tailored to that kind. Split works the same way for files that hold several documents.

<div className="af-flow" role="img" aria-label="Parse feeds Classify, which routes to one Extract node per category">
  <div className="af-flow-fork">
    <div className="af-fork-in">
      <a className="af-node" href="/guides/nodes/parse">Parse</a>

      <span className="af-link" />

      <a className="af-node af-node-on" href="/guides/nodes/classify">Classify</a>
    </div>

    <div className="af-fork-elbow" />

    <div className="af-fork-out">
      <a className="af-node" href="/guides/nodes/extract">Extract <span>invoice</span></a>
      <a className="af-node" href="/guides/nodes/extract">Extract <span>receipt</span></a>
    </div>
  </div>

  <div className="af-flow-note">Each edge leaving Classify names one category id.</div>
</div>

Add [Validate](/guides/nodes/validate) after an Extract to check the values, [If/Else](/guides/nodes/if-else) to branch on them, and an [alert](/guides/nodes/slack-alert) at the end of a branch to tell someone.

## Every node page reads the same way

1. What the node does and where it sits in the palette.
2. The node as code: API JSON, then the Python and TypeScript SDK call.
3. The Studio panel.
4. Every option, its type, default and what it does.
5. What can feed it and what it can feed.
6. What it costs.
7. Examples that use it.

Start with [Parse](/guides/nodes/parse).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.