Skip to main content

Event Subscription Guide

Interface Description

The Events Subscription service is implemented as a server-streaming persistent connection based on the gRPC framework. It is designed for Webull customers integrating through the OpenAPI development platform to receive real-time event notifications in a reliable and efficient manner.

This service fully complies with the official gRPC open-source protocol specification. Clients can leverage standard gRPC libraries and SDKs (https://grpc.io/docs/) to establish and maintain the streaming connection.

Through this subscription channel, the server continuously pushes structured event messages to clients once the connection is established, eliminating the need for repeated polling and ensuring low-latency data delivery.

Event Modules Overview

The message push service is organized into the following functional modules. Each module can be subscribed to independently based on business needs.

Module NameDescription
Application EventsAccount application lifecycle events, including submission and status updates.
Account EventsAccount-level updates such as status changes and configuration updates.
Funding EventsDeposit and withdrawal related events and status notifications.
Fees and Credits EventsFee charges, and credit postings.
Journal EventsInternal transfers and journal entry notifications.
Master Data EventsTrading calendar change notifications.
Instrument EventsInstrument-level updates such as trading status or metadata changes.
Trade EventsOrder execution, trade confirmations, and related transaction updates.
Corporate Actions EventsCorporate action announcements and processing updates.
Event Contract EventsEvent contract lifecycle and status updates.
SOD EventsStart-of-Day processing results and daily initialization updates.

Clients may selectively subscribe to one or more modules depending on their integration scope and operational requirements.

Events subscribe Proto protocol definition.

Complete Description of Event gRPC/Protobuf Protocol

syntax = "proto3";

package grpc.event;
option go_package = ".;grpc_event";

service EventService {
rpc Subscribe(SubscribeRequest) returns (stream SubscribeResponse) {}
}

message SubscribeRequest {
repeated SubscribeEvent events = 1;
string timestamp = 2;
}

message SubscribeResponse {
Type type = 1;
string id = 2;
string eventType = 3;
string position = 4;
string timestamp = 5;
string version = 6;
string payload = 7;
}

enum Type {
SubscribeSuccess = 0;
Ping = 1;
Event = 2;
AuthError = 3;
NumOfConnExceed = 4;
SubscribeExpired = 5;
}

message SubscribeEvent {
string eventType = 1;
string position = 2;
}

Request Proto

message SubscribeRequest {
repeated SubscribeEvent events = 1;
string timestamp = 2;
}
message SubscribeEvent {
string eventType = 1;
string position = 2;
}

Response Proto

message SubscribeResponse {
Type type = 1;
string id = 2;
string eventType = 3;
string position = 4;
string timestamp = 5;
string version = 6;
string payload = 7;
}

Type enumeration

enum Type {
SubscribeSuccess = 0;
Ping = 1;
Event = 2;
AuthError = 3;
NumOfConnExceed = 4;
SubscribeExpired = 5;
}

Request Example

For native Python integration, please use the sample code included in the ZIP package: python_event_subscription_sample.zip

Response Payload Example

Event scene type

{
"id": "event_c4b2c210-ce32-41d4-a9a1-cfad4fdf191c",
"event_type": "APPLICATION",
"position": "CJO1fxACGAAgADAB",
"timestamp": "2025-03-29T07:02:33.200962333Z",
"payload": {
"client_request_id": "ndjanww3004abe894b51244560kmdcd",
"application_id": "d44caf9eb12d4abe894b529699059ec5",
"biz_type": "ACCOUNT_CREATE",
"status": "APPROVED",
"reason": "",
"timestamp": "2025-11-21T06:27:43.312Z"
}
}