> This page is for TWS API.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://ibkrcampus.com/docs/llms.txt.

# Setting Management

## Introduction

Beginning with TWS API 10.44, users are able to view and modify TWS settings via the API. Currently the supported settings include Orders, Precautions, and API Settings. These settings map to those found in TWS's Global Configuration window.

**Important:** The Read-Only setting within TWS must be manually disabled before any configuration updates will be permitted.

---

## Request Configuration

`EClient.reqConfigProtoBuf(configRequestProto)`

Requests the current TWS configuration settings.

**`configRequestProto`** `ConfigRequestProto`

A ConfigRequestProto object. The `reqId` field is required to track the request.

---

\


#### Python

```python
from ibapi.protobuf.ConfigRequest_pb2 import ConfigRequest as ConfigRequestProto

configRequestProto = ConfigRequestProto()
configRequestProto.reqId = self.nextOrderId()
self.reqConfigProtoBuf(configRequestProto)
```

#### Java

```java
ConfigRequest configRequestProto = ConfigRequest.newBuilder()
    .setReqId(nextOrderId++)
    .build();
client.reqConfigProtoBuf(configRequestProto);
```

#### C++

```cpp
ibapi::ConfigRequest configRequestProto;
configRequestProto.set_req_id(m_orderId++);
m_pClient->reqConfigProtoBuf(configRequestProto);
```

#### C\#

```csharp
var configRequestProto = new ConfigRequest { ReqId = nextOrderId++ };
client.reqConfigProtoBuf(configRequestProto);
```

#### VB.NET

```vbnet
Dim configRequestProto As New ConfigRequest()
configRequestProto.ReqId = nextOrderId
client.reqConfigProtoBuf(configRequestProto)
```

---

## Receive Configuration

`EWrapper.configResponseProtoBuf(configResponseProto)`

Returns the current TWS configuration settings.

The response object contains the following sub-objects, each representing a section of TWS Global Configuration:

* **LockAndExitConfig** — lock and exit settings
* **MessageConfig** — message configuration settings
* **ApiConfig** — API-specific settings
* **OrdersConfig** — order settings including precautionary limits

**`configResponseProto`** `ConfigResponseProto`

A ConfigResponseProto object containing the full configuration response.

---

\


#### Python

```python
def configResponseProtoBuf(self, configResponseProto):
    print("ConfigResponseProtoBuf:", configResponseProto)
```

#### Java

```java
@Override
public void configResponseProtoBuf(ConfigResponse configResponseProto) {
    System.out.println("ConfigResponseProtoBuf: " + configResponseProto);
}
```

#### C++

```cpp
void TestCppClient::configResponseProtoBuf(const ibapi::ConfigResponse& configResponseProto) {
    printf("ConfigResponseProtoBuf: %s\n", configResponseProto.DebugString().c_str());
}
```

#### C\#

```csharp
public void configResponseProtoBuf(ConfigResponse configResponseProto)
{
    Console.WriteLine("ConfigResponseProtoBuf: " + configResponseProto);
}
```

#### VB.NET

```vbnet
Public Sub configResponseProtoBuf(configResponseProto As ConfigResponse) Implements EWrapper.configResponseProtoBuf
    Console.WriteLine("ConfigResponseProtoBuf: " & configResponseProto.ToString())
End Sub
```

---

## Update Configuration

`EClient.updateConfigProtoBuf(updateConfigRequestProto)`

Sends updated configuration settings to TWS.

**`updateConfigRequestProto`** `UpdateConfigRequestProto`

An UpdateConfigRequestProto object containing the settings to update.

---

\


#### Python

```python
from ibapi.protobuf.UpdateConfigRequest_pb2 import UpdateConfigRequest as UpdateConfigRequestProto
from ibapi.protobuf.ApiSettingsConfig_pb2 import ApiSettingsConfig as ApiSettingsConfigProto

updateConfigRequestProto = UpdateConfigRequestProto()
updateConfigRequestProto.reqId = self.nextOrderId()

apiSettingsConfigProto = ApiSettingsConfigProto()
apiSettingsConfigProto.createApiMessageLogFile = True
apiSettingsConfigProto.includeMarketDataInLogFile = True
apiSettingsConfigProto.loggingLevel = 5

updateConfigRequestProto.apiSettingsConfig.CopyFrom(apiSettingsConfigProto)
self.updateConfigProtoBuf(updateConfigRequestProto)
```

#### Java

```java
ApiSettingsConfig apiSettingsConfig = ApiSettingsConfig.newBuilder()
    .setCreateApiMessageLogFile(true)
    .setIncludeMarketDataInLogFile(true)
    .setLoggingLevel(5)
    .build();
UpdateConfigRequest updateConfigRequestProto = UpdateConfigRequest.newBuilder()
    .setReqId(nextOrderId++)
    .setApiSettingsConfig(apiSettingsConfig)
    .build();
client.updateConfigProtoBuf(updateConfigRequestProto);
```

#### C++

```cpp
ibapi::UpdateConfigRequest updateConfigRequestProto;
updateConfigRequestProto.set_req_id(m_orderId++);
ibapi::ApiSettingsConfig* apiSettingsConfig = updateConfigRequestProto.mutable_api_settings_config();
apiSettingsConfig->set_create_api_message_log_file(true);
apiSettingsConfig->set_include_market_data_in_log_file(true);
apiSettingsConfig->set_logging_level(5);
m_pClient->updateConfigProtoBuf(updateConfigRequestProto);
```

#### C\#

```csharp
var updateConfigRequestProto = new UpdateConfigRequest
{
    ReqId = nextOrderId++,
    ApiSettingsConfig = new ApiSettingsConfig
    {
        CreateApiMessageLogFile = true,
        IncludeMarketDataInLogFile = true,
        LoggingLevel = 5
    }
};
client.updateConfigProtoBuf(updateConfigRequestProto);
```

#### VB.NET

```vbnet
Dim updateConfigRequestProto As New UpdateConfigRequest()
updateConfigRequestProto.ReqId = nextOrderId
Dim apiSettingsConfig As New ApiSettingsConfig()
apiSettingsConfig.CreateApiMessageLogFile = True
apiSettingsConfig.IncludeMarketDataInLogFile = True
apiSettingsConfig.LoggingLevel = 5
updateConfigRequestProto.ApiSettingsConfig = apiSettingsConfig
client.updateConfigProtoBuf(updateConfigRequestProto)
```

---

## Receive Configuration Update Response

`EWrapper.updateConfigResponseProtoBuf(updateConfigResponseProto)`

Returns the result of a configuration update request.

The response object contains:

* **message** — a human-readable summary of what changed
* **changedFields** — list of fields that were successfully updated
* **errors** — list of any errors encountered during the update
* **UpdateConfigWarning** — any warnings related to the update

**`updateConfigResponseProto`** `UpdateConfigResponseProto`

An UpdateConfigResponseProto object containing the update result.

---

\


#### Python

```python
def updateConfigResponseProtoBuf(self, updateConfigResponseProto):
    print("UpdateConfigResponseProtoBuf:", updateConfigResponseProto)
```

#### Java

```java
@Override
public void updateConfigResponseProtoBuf(UpdateConfigResponse updateConfigResponseProto) {
    System.out.println("UpdateConfigResponseProtoBuf: " + updateConfigResponseProto);
}
```

#### C++

```cpp
void TestCppClient::updateConfigResponseProtoBuf(const ibapi::UpdateConfigResponse& updateConfigResponseProto) {
    printf("UpdateConfigResponseProtoBuf: %s\n", updateConfigResponseProto.DebugString().c_str());
}
```

#### C\#

```csharp
public void updateConfigResponseProtoBuf(UpdateConfigResponse updateConfigResponseProto)
{
    Console.WriteLine("UpdateConfigResponseProtoBuf: " + updateConfigResponseProto);
}
```

#### VB.NET

```vbnet
Public Sub updateConfigResponseProtoBuf(updateConfigResponseProto As UpdateConfigResponse) Implements EWrapper.updateConfigResponseProtoBuf
    Console.WriteLine("UpdateConfigResponseProtoBuf: " & updateConfigResponseProto.ToString())
End Sub
```