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

# Trigger Nodes

Trigger nodes are special nodes that start flow execution. Every flow must have at least one trigger. A flow can have multiple triggers if you want to reuse the same integration logic in different scenarios.

<br />

## API Trigger

**Type:** `api-trigger`

The API Trigger allows you to launch a Flow Instance with optional input using your application's API or SDK.

```yaml theme={null}
trigger:
  type: api-trigger
  name: Manual Sync Trigger
  config:
    inputSchema:
      type: object
      properties:
        recordId:
          type: string
        syncAll:
          type: boolean
```

**Configuration options:**

* **`inputSchema`** – Optional schema that will be validated when the flow is triggered

**Output:**

The output contains the input provided when triggering the flow:

```javascript theme={null}
{
  recordId: '12345',
  syncAll: false
}
```

<br />

## Schedule Trigger

**Type:** `schedule-trigger`

The Schedule Trigger runs a flow at regular intervals as long as the Flow Instance is enabled.

```yaml theme={null}
trigger:
  type: schedule-trigger
  name: Hourly Sync
  config:
    intervalMinutes: 60
```

**Configuration options:**

* **`intervalMinutes`** – How often the flow should run (5 = every 5 minutes, 60 = hourly, 1440 = daily)

**Output:**

The output contains timing information:

```javascript theme={null}
{
  triggeredAt: '2024-01-15T10:30:00Z'
}
```

<br />

## Internal Event Trigger

**Type:** `app-event-trigger`

The Internal Event Trigger runs a flow when a specific event occurs in your application. Before using this trigger, you need to create an [Internal Event](/docs/managing-membrane/monitoring-troubleshooting/logs/internal-events).

```yaml theme={null}
trigger:
  type: app-event-trigger
  name: Order Created Event
  config:
    appEventKey: order-created
    filter:
      $eval:
        $var: $.payload.amount
      $gt: 1000
```

**Configuration options:**

* **`appEventKey`** – Key of the internal event to listen to
* **`filter`** – Optional filter to conditionally trigger the flow based on event data

**Output:**

The output contains the event payload:

```javascript theme={null}
{
  payload: {
    orderId: '12345',
    amount: 1500,
    customer: 'customer-id'
  }
}
```
