Improved

Account creation request and error responses aligned by account type

Broker API

The account creation contract now documents requirements per account type and matches the error shapes the API actually returns.

  • AccountCreationRequest stays a single flat object, with per-type requirements documented for trading, custodial, IRA, and donor-advised accounts. contact, identity, disclosures, and agreements are no longer statically required; the server continues to enforce conditional requirements.
  • Adds entity_id (donor-advised accounts reference an existing legal entity) and minor_identity (custodial accounts) to the request schema.
  • Create requests accept trading, custodial, donor_advised, and ira, and default to trading when account_type is omitted. Account responses now document five additional values the API can return: trust, joint, hsa, omnibus_sub, and omnibus_non_disclosed.
  • primary_account_holder_id documents creating an account for an existing holder for trading and IRA accounts; inline holder fields should be omitted when it is supplied.
  • HTTP 400 and 422 on account creation are now documented with the structured {code, message} Error object instead of a string, with examples: malformed bodies return 400 with code 40010000, validation failures return 422 with code 40010001.
  • Attempting to change the immutable primary_account_holder_id on account update now documents HTTP 403 with the structured error response.
  • Adds four named request examples (inline trading, custodial, donor-advised, and existing-holder IRA), and clarifies TrustedContact requirements: at least one of email_address, phone_number, or street_address, with address subfields required when street_address is set. tax_id_type is required on custodial minor identity when a tax ID is provided.

Affected Endpoints

  • POST /v1/accounts
  • GET /v1/accounts
  • GET /v1/accounts/{account_id}
  • PATCH /v1/accounts/{account_id}