Getting Started
This guide walks you through a complete onboarding flow: authenticate, open an account, fund it, place a trade, and subscribe to events.
Before you start (recommended)
- UAT vs Production: base URLs, environments, and SDK entry points
please refer to the SDKs and Tools
- Authentication & Signature: how to generate signatures and required headers
please refer to the Signature
- Events Guide: how to connect and consume streaming events (gRPC)
please refer to the Event Subscription Demo zip file subscribe_demo.zip
0. Set up Broker API
Generate API Keys and Signature
Each API call requires authentication using the App Key and a signature generated using the secret key. Include them in request headers:
x-app-keyx-signature
Your Webull Account Relationship Manager will apply for the App Key and Secret and send them to your email.
For the signature algorithm, canonicalization rules, and header requirements, see: Signature
Confirm UAT vs Production settings
Before testing requests, confirm you are using the correct base URL and environment configuration:
please refer to the SDKs and Tools
Make your first request
A good first call is:
GET /openapi/broker/master-data/enums
This endpoint requires only the mandatory data_type field and returns all available values for that data_type.
Example response when data_type = INVESTMENT_EXPERIENCE:
[
{ "id": "1", "code": "NONE", "name": "0", "parent_code": null },
{ "id": "2", "code": "GENERAL", "name": "1–3 years", "parent_code": null },
{ "id": "3", "code": "LONG", "name": "4+ years", "parent_code": null }
]
1. Account Opening
The first critical step is creating an account for your end customer. Required forms vary by account type.
Steps
- Retrieve all available forms:
GET /openapi/broker/form/list - Select required forms by account type:
- Brokerage Account:
NEW_ACCOUNT_BASIC_FORMandBROKERAGE_ADDITIONAL_FORM - Event Contract Account:
NEW_ACCOUNT_BASIC_FORMandEVENT_CONTRACT_ADDITIONAL_FORM
- Brokerage Account:
- Retrieve form versions and required fields:
GET /openapi/broker/form/version/listGET /openapi/broker/form/detail
- Assemble the forms and submit:
POST /openapi/broker/account/create
2. Funding
Link Bank Account (Wire)
To use wire transfers, you must first establish a wire relationship.
Wire deposits are not supported at this time. Wire withdrawals are supported.
Endpoint: POST /openapi/broker/funding/bank-relationship/create
Create ACH Relationship (Plaid)
To fund an account via ACH, you must establish an ACH relationship.
Webull integrates with Plaid to provide a streamlined ACH funding experience using Plaid tokens.
Endpoint: POST /openapi/broker/funding/ach-relationship/create
Initiate Transfer
Initiate ACH Transfer
Once the ACH relationship is established:
POST /openapi/broker/funding/transfer/create
direction can be:
DEPOSITWITHDRAWAL
Initiate Wire Transfer
Once the bank relationship is established:
POST /openapi/broker/funding/transfer/create
direction can be:
WITHDRAWAL
3. Journal between Accounts
To transfer funds between accounts owned by the same end customer (for example, brokerage to event contract):
POST /openapi/broker/journal/cash/create
4. Trading
To place an order:
POST /openapi/broker/trade/order/place
5. Events
Events use a persistent server-streaming connection based on gRPC, intended for real-time status updates across account opening, funding, journals, and trading.
For implementation details (subscription mechanics, payload formats, and client examples), see the Event Subscription Demo zip file: subscribe_demo.zip
Event types you can subscribe to
| Event Type | Description |
|---|---|
| Application Events | Status changes during the application process. |
| Account Events | Updates regarding account changes, status, or configurations. |
| Funding Events | Information on deposits, withdrawals, and ACH/wire transactions. |
| Journal Events | Status changes of journals. |
| Master Data Events | Changes to reference data such as trade calendar. |
| Instrument Events | Updates on instruments, such as changes to their basic attributes or properties. |
| Trade Events | Notifications about executed trades, fills, or order status updates. |
| Corporate Actions Events | Events like dividends, splits, mergers, or spin-offs affecting securities. |
| Event Contract Events | Updates related to event contract settlement. |
| SOD Events | Notifications that statement files or data are ready and available. |
What’s next
-
Browse the API reference for endpoint details and schemas.
-
Use the Events Guide to ensure your integration correctly tracks async operations.
-
Confirm environment switching rules before going production: