> 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.

# WSH Event Data

## Introduction

The function `EClient.reqWshEventData` is used to request various calendar events from Wall Street Horizon. The event data is then received via the callback `EWrapper.wshEventData`. Pending event data requests can be canceled with the function `EClient.cancelWshEventData`.

**Note:** Prior to sending this message, the API client must make a request for metadata via `EClient.reqWshMetaData`.

Also note that TWS will not support multiple concurrent requests. Previous request should succeed, fail, or be cancelled by client before next one. TWS will reject such requests with text "Duplicate WSH meta-data request" or "Duplicate WSH event request".

---

## Request Event Data

`EClient.reqWshEventData(requestId, wshEventData)`

Requests event data from the WSH calendar.

**`requestId`** `int`

Request identifier used to track data.

---

**`wshEventData`** `WshEventData`

Unique object used to track all parameters for the event data request.

---

\


#### Python

```python
self.reqWshEventData(1101, eventDataObj, serverVersion)
```

#### Java

```java
client.reqWshEventData(1101, eventDataObj, serverVersion);
```

#### C++

```cpp
 m_pClient->reqWshEventData(30002, eventDataObj, serverVersion);
```

#### C\#

```csharp
client.reqWshEventData(1101, eventDataObj, serverVersion);
```

#### VB.NET

```vbnet
client.reqWshEventData(1101, eventDataobj, serverVersion)
```

---

## Receive Event Data

`EWrapper.wshEventData(requestId, dataJson)`

Returns calendar events from the WSH.

**`requestId`** `int`

Request identifier used to track data.

---

**`dataJson`** `string`

Event data json format.

---

\


#### Python

```python
def wshEventData(self, reqId: int, dataJson: str):
	print("WshEventData.", "ReqId:", reqId, "Data JSON:", dataJson)
```

#### Java

```java
@Override
public void wshEventData(int reqId, String dataJson) {
	System.out.println(EWrapperMsgGenerator.wshEventData(reqId, dataJson));
}
```

#### C++

```cpp
void TestCppClient::wshEventData(int reqId, const std::string& dataJson) {
    printf("WSH Event Data. ReqId: %d, dataJson: %s\n", reqId, dataJson.c_str());
}
```

#### C\#

```csharp
public void wshEventData(int reqId, string dataJson)
{
	Console.WriteLine($"WSH Event Data. Request Id: {reqId}, Data JSON: {dataJson}\n");
}
```

#### VB.NET

```vbnet
Public Sub wshEventData(reqId As Integer, dataJson As String) Implements EWrapper.wshEventData
	Console.WriteLine($"WSH Event Data. Request Id: {reqId}, Data JSON: {dataJson}")
End Sub
```

---

## Cancel Event Data

`EClient.cancelWshEventData(requestId)`

Cancels pending WSH event data request.

**`requestId`** `int`

Request identifier used to track data.

---

\


#### Python

```python
self.cancelWshEventData(1101, eventDataObj)
```

#### Java

```java
client.cancelWshEventData(1101, eventDataObj);
```

#### C++

```cpp
 m_pClient->cancelWshEventData(30002, eventDataObj);
```

#### C\#

```csharp
client.cancelWshEventData(1101, eventDataObj);
```

#### VB.NET

```vbnet
client.cancelWshEventData(1101, eventDataobj)
```