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

# backoff_strategy

> Contract, placement, related fields and source examples for this Nika YAML field.

[Language reference](/reference/language/overview) / `backoff_strategy`

## Meaning and placement

### retry

Which curve the delay follows between attempts · `fixed` · `linear` · `exponential` · default `exponential`. Each attempt waits `backoff_ms` flat, `backoff_ms × attempt`, or `backoff_ms × 2^(attempt-1)` capped at `backoff_max_ms`.

| Property        | Declaration                                |
| --------------- | ------------------------------------------ |
| Requirement     | Optional in this object                    |
| Schema location | `/$defs/retry/properties/backoff_strategy` |
| type            | "string"                                   |
| enum            | \["fixed", "linear", "exponential"]        |

**In the same object:** [backoff\_max\_ms](/reference/language/words/backoff_max_ms) · [backoff\_ms](/reference/language/words/backoff_ms) · [jitter](/reference/language/words/jitter) · [max\_attempts](/reference/language/words/max_attempts) · [on\_codes](/reference/language/words/on_codes)

[Schema source (use the pointer above)](https://github.com/supernovae-st/nika-spec/blob/c5ebbb7b862b68bc6cf7235efba61173b844afc6/schemas/workflow.schema.json)

## In a source template

Excerpt from `templates/fanout.nika.yaml`, source lines 121–130. This is a fragment, not a runnable workflow.

```yaml illustration theme={"system"}
    timeout: "60s"                  # SLOT: per-iteration bound
    retry:
      max_attempts: 3
      backoff_strategy: exponential
      jitter: true
    on_error:
      recover: null                 # a failed item yields null at its index · the batch lives
    infer:                          # SLOT: the per-item job (any verb)
      max_tokens: 2000              # SLOT: the per-ITEM ceiling · think + answer · multiply by the fan width
      # The marker below is a VALUE, not a comment. The parser drops
```

### Templates containing this field

| Template                     | Source                                                                                                                               |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `templates/fanout.nika.yaml` | [Line 124](https://github.com/supernovae-st/nika-spec/blob/c5ebbb7b862b68bc6cf7235efba61173b844afc6/templates/fanout.nika.yaml#L124) |

These are literal key occurrences in the source files, not an execution or conformance claim. [How to instantiate a template](/guides/templates).

## Contract and implementation

This page projects the named specification revision. Check [released engine status](/reference/status) and [the validation workflow](/guides/agent-authoring) before running a file. An optional field is not evidence that every engine supports every value.

Canonical identity: `language:word:backoff_strategy`. Spec revision: [`c5ebbb7b862b`](https://github.com/supernovae-st/nika-spec/tree/c5ebbb7b862b68bc6cf7235efba61173b844afc6).

[How documentation stays connected](/reference/knowledge-system).
