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

# Conditional Nodes

> Branching logic in Agent Composer workflows

## Description

Conditional nodes execute one of multiple subgraphs based on a runtime condition. This enables workflows that adapt their behavior based on intermediate results.

## Syntax

```yaml theme={null}
conditional_node:
  type: ConditionalStep
  config:
    inputs:
      quality_score: float
      documents: List[str]
    outputs:
      result: str
    variable: quality_score
    branches:
      - condition: ">= 0.8"
        executable: HighQualityProcessor
        input_mapping:
          documents: __inputs__#documents
        output_mapping:
          __outputs__#result: processed_documents
      - condition: "< 0.8"
        executable: LowQualityProcessor
        input_mapping:
          documents: __inputs__#documents
        output_mapping:
          __outputs__#result: processed_documents
  input_mapping:
    quality_score: quality_checker#score
    documents: retriever#documents
```

## Config Fields

| Field      | Description                                       |
| ---------- | ------------------------------------------------- |
| `inputs`   | Input types for the conditional node              |
| `outputs`  | Output types for the conditional node             |
| `variable` | The input variable to evaluate conditions against |
| `branches` | List of condition/executable pairs                |

## Condition Operators

| Operator | Description           |
| -------- | --------------------- |
| `==`     | Equality              |
| `!=`     | Inequality            |
| `>=`     | Greater than or equal |
| `<=`     | Less than or equal    |
| `>`      | Greater than          |
| `<`      | Less than             |

## Branch Fields

| Field            | Description                                                |
| ---------------- | ---------------------------------------------------------- |
| `condition`      | Boolean predicate (right-hand side only, e.g., `">= 0.8"`) |
| `executable`     | Subgraph name or node type to execute                      |
| `input_mapping`  | Maps conditional node inputs to branch inputs              |
| `output_mapping` | Maps branch outputs to conditional node outputs            |

## Example: Route by Query Type

```yaml theme={null}
# Subgraphs for different query types
factual_handler:
  inputs:
    query: str
  outputs:
    response: str
  nodes:
    search:
      type: SearchUnstructuredDataStep
      config:
        temperature: 0.1
      input_mapping:
        query: __inputs__#query
    # ... generate response

creative_handler:
  inputs:
    query: str
  outputs:
    response: str
  nodes:
    generate:
      type: GenerationStep
      config:
        temperature: 0.8
      input_mapping:
        query: __inputs__#query
    # ... generate response

# Main workflow
inputs:
  query: str

nodes:
  classify:
    type: LanguageModelStep
    config:
      prompt_template: |
        Classify this query as 'factual' or 'creative'.
        Query: {query}
        Return only: factual or creative
      model_id: "vertex_ai/gemini-2.0-flash"
    input_mapping:
      query: __inputs__#query

  route:
    type: ConditionalStep
    config:
      inputs:
        query: str
        query_type: str
      outputs:
        response: str
      variable: query_type
      branches:
        - condition: "== factual"
          executable: factual_handler
          input_mapping:
            query: __inputs__#query
          output_mapping:
            __outputs__#response: response
        - condition: "== creative"
          executable: creative_handler
          input_mapping:
            query: __inputs__#query
          output_mapping:
            __outputs__#response: response
    input_mapping:
      query: __inputs__#query
      query_type: classify#response
```

## Related

* [Subgraphs](/reference/ac-subgraphs)
* [YAML Format](/reference/ac-yaml-format)
