Introduction
The Accounts API serves as the core foundation of Buildmarkets. Every end-user brokerage account is represented as an account resource, with all trading, funding, and document activity organized beneath it.What is an Account?
A Buildmarkets account is “a fully-managed brokerage account for one of your end users.” When creating an account, you submit identity, contact, suitability, and disclosure information on the user’s behalf. The system then handles KYC/AML verification, agreement tracking, account status management, and real-time position and balance custody.Account Types
- individual — Standard individual brokerage account (default)
- joint — Joint account requiring a
joint_ownerobject in the creation request - ira_traditional — Traditional IRA retirement account
- ira_roth — Roth IRA retirement account
- custodial — Custodial account opened on behalf of a minor
Account Endpoints
Multiple Accounts per User
Each account belongs to a user — the verified person behind it. The firstPOST /v1/accounts call creates both the user profile and their first account; the account response includes a user_id field referencing that user.
Once any of a user’s accounts passes KYC, the user is considered KYC-approved and can open additional accounts without repeating document verification:
- Call
POST /v1/users/{userId}/accountswith only theaccount_type(e.g., a secondindividualaccount, or anira_rothalongside an existingindividual). - Identity fields are locked to the stored, verified user profile — sending an
identityobject is rejected. - Optional sections (
contact,disclosures,agreements,investment_profile, etc.) may be provided to override the stored values; anything omitted falls back to the user’s profile. - Document verification is skipped — the existing KYC approval carries over, and the account is booked on the clearing system directly.
409 USER_KYC_NOT_APPROVED.
Account Statuses
KYC Statuses
Thekyc_status field provides granular visibility into identity verification:
The account response also includes a
kyc_results object with the verification outcome: summary (pass, fail, or indeterminate), reject (a list of rejection reason labels), and additional_information. It is null while the review is still in progress.
Listing Accounts
The list endpoint supports pagination, filtering, and sorting. Query Parameters:query (search by name or account number), status (filter by account status), created_after / created_before (ISO 8601), sort (e.g., created_at:desc), cursor (pagination cursor), limit (default 25, max 100).
Example Response:
Updating an Account
UsePATCH /v1/accounts/{accountId} to modify mutable fields. Immutable fields like date_of_birth and tax_id cannot be changed post-creation. Mutable Fields: contact, identity (limited), disclosures, trusted_contact, employment, investment_profile, registered_rep_code.
Closing an Account
Accounts must have zero balances (all positions liquidated and funds withdrawn) before closure. The POST action endpoint transitions the account status toACCOUNT_CLOSED and returns 204 No Content on success.