> ## Documentation Index
> Fetch the complete documentation index at: https://botmesh.afaya.com.co/llms.txt
> Use this file to discover all available pages before exploring further.

# FormStepOptions

> Interface exported by @botmesh/core.

Defined in: [forms/types.ts:216](https://github.com/andresayac/botmesh/blob/main/packages/core/src/forms/types.ts#L216)

Options of `flow().form(definition, opts)`.

## Properties

### stateKey?

```ts theme={null}
stateKey?: string;
```

Defined in: [forms/types.ts:218](https://github.com/andresayac/botmesh/blob/main/packages/core/src/forms/types.ts#L218)

`c.state` key the answers object is stored under. Default: the form `id`.

***

### flatten?

```ts theme={null}
flatten?: boolean;
```

Defined in: [forms/types.ts:220](https://github.com/andresayac/botmesh/blob/main/packages/core/src/forms/types.ts#L220)

Also copy every answer to `c.state[field.name]`. Default `false`.

***

### mode?

```ts theme={null}
mode?: FormMode;
```

Defined in: [forms/types.ts:222](https://github.com/andresayac/botmesh/blob/main/packages/core/src/forms/types.ts#L222)

Force a rendering mode. Default `'auto'`.

***

### nativeId?

```ts theme={null}
nativeId?: string;
```

Defined in: [forms/types.ts:227](https://github.com/andresayac/botmesh/blob/main/packages/core/src/forms/types.ts#L227)

Provider-side id of the published native form (on the Cloud API: a WhatsApp
Flow id, or its name). Providers may also map `definition.id` to it in their config.

***

### timeout?

```ts theme={null}
timeout?: string | number;
```

Defined in: [forms/types.ts:229](https://github.com/andresayac/botmesh/blob/main/packages/core/src/forms/types.ts#L229)

Wait timeout per answer (degraded) / for the whole submission (native). Default: the flow's.

***

### maxAttempts?

```ts theme={null}
maxAttempts?: number;
```

Defined in: [forms/types.ts:231](https://github.com/andresayac/botmesh/blob/main/packages/core/src/forms/types.ts#L231)

Total answers accepted per field (degraded) or submissions (native), the first included. Default 3.

***

### retries?

```ts theme={null}
retries?: number;
```

Defined in: [forms/types.ts:233](https://github.com/andresayac/botmesh/blob/main/packages/core/src/forms/types.ts#L233)

Retries after the first answer (`retries: N` = `maxAttempts: N + 1`). Breaking in 2.0: it meant total attempts (without `maxAttempts`, the bot warns once).

***

### skipWord?

```ts theme={null}
skipWord?: string;
```

Defined in: [forms/types.ts:235](https://github.com/andresayac/botmesh/blob/main/packages/core/src/forms/types.ts#L235)

Degraded mode: word that skips an optional field. Default: the locale's `core.form.skipWord` (`'skip'` in English, `'omitir'` in Spanish).

***

### pendingMessage?

```ts theme={null}
pendingMessage?: string;
```

Defined in: [forms/types.ts:237](https://github.com/andresayac/botmesh/blob/main/packages/core/src/forms/types.ts#L237)

Native mode: reply sent when the user writes instead of submitting the form.


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