Brokers Unified API

17 endpoints in this group.

GET /api/brokers/manual/positions

Manual Positions List

List latest manual positions persisted into portfolio snapshots .

Parameters

NameInTypeRequiredDescription
account_idquery—optionalManual broker_accounts.id

Responses

CodeDescription
200Successful Response
422Validation Error

POST /api/brokers/manual/positions

Manual Positions Create

Create or replace one manual holding snapshot .

Request body: application/json

Responses

CodeDescription
201Successful Response
422Validation Error

DELETE /api/brokers/manual/positions/{position_id}

Manual Positions Delete

Soft-delete a manual position snapshot .

Parameters

NameInTypeRequiredDescription
position_idpathintegerrequired

Responses

CodeDescription
204Successful Response
422Validation Error

PATCH /api/brokers/manual/positions/{position_id}

Manual Positions Patch

Patch a manual position snapshot by id .

Parameters

NameInTypeRequiredDescription
position_idpathintegerrequired

Request body: application/json

Responses

CodeDescription
200Successful Response
422Validation Error

GET /api/brokers/manual/transactions

Manual Transactions List

List manual transaction rows from realized_trades .

Parameters

NameInTypeRequiredDescription
account_idquery—optionalManual broker_accounts.id
yearquery—optional

Responses

CodeDescription
200Successful Response
422Validation Error

POST /api/brokers/manual/transactions

Manual Transactions Create

Create a manual transaction in realized_trades .

Request body: application/json

Responses

CodeDescription
201Successful Response
422Validation Error

DELETE /api/brokers/manual/transactions/{transaction_id}

Manual Transactions Delete

Soft-delete a manual transaction by id .

Parameters

NameInTypeRequiredDescription
transaction_idpathintegerrequired

Responses

CodeDescription
204Successful Response
422Validation Error

PATCH /api/brokers/manual/transactions/{transaction_id}

Manual Transactions Patch

Patch a manual transaction by id .

Parameters

NameInTypeRequiredDescription
transaction_idpathintegerrequired

Request body: application/json

Responses

CodeDescription
200Successful Response
422Validation Error

GET /api/brokers/snaptrade/callback

Snaptrade Callback

Hosted SnapTrade redirect target.

Parameters

NameInTypeRequiredDescription
subbroker_slugquerystringrequired
external_connection_idquery—optional
connection_idquery—optional
brokerage_authorization_idquery—optional
brokerageAuthorizationIdquery—optional

Responses

CodeDescription
200Successful Response
422Validation Error

GET /api/brokers/{broker_type}/accounts

Broker Accounts

Return account list — shape varies per broker today.

Schwab: list of {accountNumber, hashValue}. Alpaca/Tradier: broker-specific shapes.

Parameters

NameInTypeRequiredDescription
broker_typepathstringrequired

Responses

CodeDescription
200Successful Response
422Validation Error

POST /api/brokers/{broker_type}/connect

Broker Connect

Exchange auth payload for tokens via adapter.

Body shape is broker-specific (e.g. {"auth_code": "..."} for OAuth code-flow brokers). Phase E unifies once frontend lands.

Parameters

NameInTypeRequiredDescription
broker_typepathstringrequired

Responses

CodeDescription
200Successful Response
402Payment Required
422Validation Error

POST /api/brokers/{broker_type}/disconnect

Broker Disconnect

Parameters

NameInTypeRequiredDescription
broker_typepathstringrequired

Responses

CodeDescription
200Successful Response
422Validation Error

GET /api/brokers/{broker_type}/positions

Broker Positions

Parameters

NameInTypeRequiredDescription
broker_typepathstringrequired
account_idquery—optionalOptional account scope (broker-specific id)

Responses

CodeDescription
200Successful Response
422Validation Error

GET /api/brokers/{broker_type}/quotes

Broker Quotes

Parameters

NameInTypeRequiredDescription
broker_typepathstringrequired
symbolsquerystringrequiredComma-separated tickers

Responses

CodeDescription
200Successful Response
422Validation Error

POST /api/brokers/{broker_type}/refresh

Broker Refresh

Parameters

NameInTypeRequiredDescription
broker_typepathstringrequired

Responses

CodeDescription
200Successful Response
422Validation Error

GET /api/brokers/{broker_type}/status

Broker Status

Return canonical BrokerConnectionStatus .

Strategy:

  1. If the adapter exposes status_struct() — broker provides a fully-populated model. Adapters that expose this win the contract.
  2. Else fall back to get_token_status() (Schwab/Tradier shape) + opportunistically populate expires_at via _db_load if reachable. Adapters without get_token_status report connected=False with a hint in extra.

Errors during status reads never raise — operators see connected: False plus the error string in extra.error so the frontend banner stays informative.

Parameters

NameInTypeRequiredDescription
broker_typepathstringrequired

Responses

CodeDescription
200Successful Response
422Validation Error

GET /api/brokers/{broker_type}/transactions

Broker Transactions

Parameters

NameInTypeRequiredDescription
broker_typepathstringrequired
account_hashquerystringrequiredBroker-specific account id
yearquerystringrequired4-digit tax year

Responses

CodeDescription
200Successful Response
422Validation Error

Occasional BlitzPulse product updates and offers, sent only if you tick the box and confirm your address.

How we handle your email

Footer Disclaimer BlitzPulse is educational decision support only. Not investment, tax, or legal advice. Not a broker. Trade at your own risk.