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

# SOAP

> Make SOAP requests to external services and capture the response in your flow

The **SOAP** node lets you connect your flow to SOAP web services, a common protocol in legacy and enterprise systems. It's a real execution node: it makes the request and exposes **success** and **error** outputs to continue the flow, just like the API node.

<Note>
  The SOAP node shares its credentials and execution infrastructure with the **[API](/en/guides/nodos/api)** node — if you're already familiar with that node, this configuration will feel familiar too.
</Note>

## Basic configuration

* **URL** — the SOAP service's address.
* **Operation Name** — the name of the SOAP operation you want to invoke (free text; it isn't validated against a WSDL).

<Warning>
  Both the URL and the Operation Name are required — the node is marked invalid if either is left empty.
</Warning>

The HTTP method is always **POST**.

## Namespaces

Define the SOAP envelope's namespaces in a reorderable table (drag to change the order):

| Field  | Description                                   |
| :----- | :-------------------------------------------- |
| Scope  | `envelope` or `functionName`                  |
| Prefix | The namespace prefix (for example, `soapenv`) |
| URI    | The namespace URI                             |

You can use workflow variables when defining the URI.

## Headers

Add custom headers as key-value pairs.

<Note>
  The `Content-Type` header is managed automatically based on the SOAP version you choose in Settings, and can't be edited manually.
</Note>

## Body

The request body is edited in a free-form code editor (JSON or XML). The node doesn't visually build the SOAP envelope — the final envelope is assembled by the execution engine.

## Authentication

Three options available:

| Method           | Configuration         |
| :--------------- | :-------------------- |
| **No auth**      | Default option        |
| **Basic Auth**   | Username and password |
| **Bearer Token** | Access token          |

## Settings

* **SOAP version** — `1.1` or `1.2`. Changing it automatically rewrites the `Content-Type` header.
* **Timeout** — in milliseconds, defaults to `30000` (30s).
* **Response transformation** — extract only the part of the response you need by defining an `extractPath` (for example, `GetUserResponse.Data`).

## Save the response

Enable **"Save response"** and define a variable name to store the SOAP service's response.

### Access the response from a Code node

```javascript theme={null}
let soapResponse = $context.getSoapResponse('myVariable')
soapResponse = soapResponse.json()
```

You can also read the original request with `$context.getSoapRequest('myVariable')`. Both accessors support `.headers()` and `.json()`; `getSoapResponse` also includes `.status()`.

## Test the request

The **"Send"** button runs the request and shows the result: status code, and Body and Headers tabs for the response, with a copy-to-clipboard option.

## Error handling

The node exposes two outputs: **success** and **error**. Connect the error output to the next step that should handle the failure, without interrupting the rest of the flow.
