Broker API Getting Started
The Broker API lets institutional partners open and manage customer accounts, fund accounts, place orders, and receive asynchronous events.
Prerequisites
Before integrating, contact your Webull Account Relationship Manager to obtain an App Key and App Secret and confirm that your application has the required Broker API permissions.
Each API call requires authentication using the App Key and a signature generated using the App Secret. Include all required authentication headers described in Signature.
Choose an Environment
Confirm the correct base URL before testing. See SDKs and Tools for the current Sandbox and Production hosts.
Make Your First Request
Start by retrieving an enumeration used by account-opening forms:
GET /broker/master-data/enums/list
This endpoint requires the data_type query parameter and returns the available values for that type. See List Enums.
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 required forms depend on the account type.
- Retrieve available forms:
GET /broker/forms/list— Get a List of Forms - Select the required forms:
- Brokerage Account:
NEW_ACCOUNT_BASIC_FORMandBROKERAGE_ADDITIONAL_FORM - Event Contract Account:
NEW_ACCOUNT_BASIC_FORMandEVENT_CONTRACT_ADDITIONAL_FORM
- Brokerage Account:
- Retrieve the applicable form version:
GET /broker/forms/versions/list— Get a List of Form Versions - Retrieve the form fields:
GET /broker/forms/get— Get Form Content - Assemble and submit the forms:
POST /broker/accounts/create— Create an Account
2. Funding
Link a Bank Account for Wire Transfers
Wire withdrawals require a bank relationship. Wire deposits are not currently supported.
POST /broker/funding/bank-relationships/create
Create an ACH Relationship
Webull integrates with Plaid for ACH account linking.
POST /broker/funding/ach-relationships/create
Initiate a Transfer
Use the same endpoint for ACH and wire transfer requests:
POST /broker/funding/transfers/create
- ACH supports
DEPOSITandWITHDRAWAL. - Wire currently supports
WITHDRAWALonly.
See Create Transfer.
3. Journal Between Accounts
To transfer cash between eligible accounts owned by the same customer, such as a brokerage account and an event contract account, call:
POST /broker/journals/cash-journals/create
See Create Cash Journal.
4. Trading
To place an order, call:
POST /broker/orders/place
See Place Order.
5. Events
Broker events use a persistent gRPC server-streaming connection for real-time updates across account opening, funding, journals, trading, and other asynchronous workflows.
See Subscribe Events for connection and subscription instructions.
Event Types
| Event Type | Description |
|---|---|
| Application Events | Account application status changes |
| Account Events | Account status and configuration changes |
| Funding Events | Deposit, withdrawal, ACH, wire, fee, and credit updates |
| Journal Events | Journal status changes |
| Master Data Events | Reference-data changes such as trading calendar updates |
| Instrument Events | Instrument attribute changes |
| Trade Events | Order status and execution updates |
| Corporate Actions Events | Dividends, splits, mergers, and other corporate actions |
| Position Events | Position changes |
| SOD Events | Start-of-day files or data becoming available |
What's Next
- Browse the Broker API Reference for endpoint schemas.
- Review Broker API Events to handle asynchronous updates.
- Recheck SDKs and Tools before switching environments.