> ## Documentation Index
> Fetch the complete documentation index at: https://notte-docs-anything-api-v2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# execute

<Tip>
  STOP. Do not read past this section until you have read and followed [/quickstart.md](/quickstart.md).

  Goal: produce a reliable SDK automation script. The intended authoring flow is generate then edit, not write browser automation from scratch.

  Do not hand-write SDK code with element IDs, selectors, or form fields from memory. Element IDs, selectors, and field mappings must come from a live `observe()` call, CLI `notte page observe` output, or generated workflow code. Guessed browser targets fail on real pages.

  Use the Notte skill and CLI to inspect the live site, validate actions/selectors, handle auth/session state, and export workflow code with `notte sessions workflow-code` before using SDK docs or SDK code.

  SDK reference pages are for understanding, running, or editing generated workflow code. They are not the starting point for manually authoring the initial browser automation. SDK-first code is guesswork on real-world pages with dynamic selectors, auth state, CAPTCHAs, and anti-bot behavior.
</Tip>

[Source: node-sdk/src/session.ts](https://github.com/nottelabs/notte/blob/main/node-sdk/src/session.ts)

Execute an action on the current page.

When the action fails and `raiseOnFailure` is true (the default, see the
session option), the structured `exception_detail` returned by the API is
rehydrated into an `ActionExecutionError` whose `errorType` names the
server-side error class. `captcha_solve` actions get a 100 s request
timeout and are retried up to 3 times on HTTP 408.

```typescript theme={null}
Session.execute(action: ExecuteAction, options?: boolean | ExecuteOptions): Promise<CaptchaExecutionResponse>;
```

## Parameters

<ParamField body="action" type={"ExecuteAction"} required>
  Action type, target, and action-specific arguments.
</ParamField>

<ParamField body="options" type={"boolean | ExecuteOptions"}>
  Override failure handling for this call; otherwise use the session setting.

  Default:

  ```typescript theme={null}
  {}
  ```
</ParamField>

## Returns

```typescript theme={null}
Promise<CaptchaExecutionResponse>
```

The execution response, including `success` and failure details when throwing is disabled.

## Raises

* ActionExecutionError if the action fails and failure throwing is enabled.
* NotteAPIError if the API request fails.

## Example

```typescript theme={null}
import { actions } from 'notte-sdk';

await session.execute({ type: 'goto', url: 'https://www.notte.cc' });
await session.execute(actions.fill({ selector: "input[name='email']", value: 'user@example.com' }));
const result = await session.execute({ type: 'click', id: 'B1' }, { raiseOnFailure: false });
if (!result.success) console.log(result.message);
```

## Related types

* [CaptchaExecutionResponse](/typescript-sdk-reference/types/captchaexecutionresponse)
* [ExecuteAction](/typescript-sdk-reference/types/executeaction)
* [ExecuteOptions](/typescript-sdk-reference/types/executeoptions)
