Circuit Breaker
Protect your workflows from cascading failures — automatic connector fault isolation with configurable thresholds, state machine, and recovery testing.
The circuit breaker pattern prevents your workflows from repeatedly calling a connector that is known to be failing. When a connector exceeds its error threshold, its circuit opens — further calls are rejected immediately without making the actual request. The circuit periodically attempts recovery. Manage circuit states at Integrations → Circuit Breaker.
Circuit States
| State | Description | What Happens to Calls |
|---|---|---|
| Closed | Normal operation. Errors are tracked but calls proceed. | Forwarded to the connector. Errors counted. |
| Open | Error threshold exceeded. Circuit is tripped. | Rejected immediately with CircuitOpenError. No connector call made. |
| Half-Open | Recovery test phase. A small number of probe calls are allowed through. | A configurable number of calls forwarded. If they succeed, circuit closes. If they fail, circuit re-opens. |
Configuration
Each connector has its own circuit breaker config. Set it in Integrations → [connector] → Circuit Breaker:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| enabled | boolean | optional | true | Enable/disable circuit breaker for this connector. |
| failure_threshold | number | optional | 50 | Error rate (%) at which the circuit opens. Measured over the sampling_window. |
| failure_count_min | number | optional | 5 | Minimum number of calls in the window before the threshold is evaluated. |
| sampling_window_sec | number | optional | 60 | Rolling window in seconds for error rate calculation. |
| open_duration_sec | number | optional | 30 | How long the circuit stays Open before transitioning to Half-Open. |
| half_open_probes | number | optional | 3 | Number of probe calls allowed in Half-Open state. |
| slow_call_threshold_ms | number | optional | 0 | Calls slower than this (ms) count as failures. 0 = disabled. |
| slow_call_rate | number | optional | 50 | % of calls that must be slow to trip the circuit on latency. |
| notify_on_open | object | optional | — | { channel, to, template } — alert when circuit opens. |
| notify_on_close | object | optional | — | { channel, to, template } — alert when circuit recovers. |
Circuit Breaker Dashboard
The dashboard at Integrations → Circuit Breaker shows all connectors with their current state:
- •State badges — Closed (green), Half-Open (amber), Open (red) for each connector.
- •Error rate sparkline — rolling 1-hour trend.
- •Last trip time — when the circuit last opened.
- •Trip count (24h) — how many times the circuit opened today.
- •Current p95 latency — compared to baseline.
Manual Control
# Force open a circuit (stop all calls to a connector)
POST /api/v1/integrations/connectors/:id/circuit-breaker/open
Body: { "reason": "Planned maintenance window — Jira down until 14:00" }
# Force close (restore normal operation)
POST /api/v1/integrations/connectors/:id/circuit-breaker/close
# Get current state and metrics
GET /api/v1/integrations/connectors/:id/circuit-breakerWorkflow Behavior When Circuit is Open
When a workflow node calls a connector with an open circuit, the node fails immediately with a CircuitOpenError. The workflow's error handling determines what happens next:
- •Retry after delay — configure the node to retry after 60s. By that point the circuit may be in Half-Open and allow probe calls.
- •Fallback branch — use a Condition node to check for CircuitOpenError and route to an alternative path (e.g., queue the request for later).
- •Fail fast — accept the failure and notify via a different channel that doesn't depend on the failing connector.
ctx.http.connector(connectorId) calls from SDK artifacts. If the circuit is open, the call throws CircuitOpenError immediately, keeping artifact execution time fast even when an upstream service is down.