Skip to content
MyStocks Developers
API v1

API v1

Current stable contract

Versioning policyRelease changelog
Sandbox console
Operate

Reports

Read-only reporting across all sub-accounts — AUM, positions, fees, revenue, dividends, monthly invoices, dividend calendar, audit log, usage analytics, the daily reconciliation pack, per-order executions, and the unified client-activity feed. Most support ?format=csv.

Portfolio snapshots, revenue reporting, dividends, and audit logs across all sub-accounts. All reporting endpoints are read-only and safe to call on every page load. Most support ?format=csv for spreadsheet or data-warehouse export.

AUM

Current aggregate cash and stored portfolio valuations across your sub-accounts, with a per-account breakdown. This is not a historical snapshot and does not represent streaming market valuations. Live uses stored holding currentValue; Sandbox uses units times the stored currentUsdPrice. generatedAt marks response assembly, not quote freshness or an atomic valuation timestamp.

Empty reports include breakdown: [] and zero totals. ?format=csv downloads the same per-account values. Invalid formats return 400. Historical ?asOf= requests return 422 HISTORICAL_REPORT_UNSUPPORTED; do not use this endpoint for historical reconciliation. The separate reconciliation report retains its documented date filters.

GET

/report/aum

Report — AUM

Full endpoint documentation
Sandbox availablelistAum

Current aggregate cash and stored holding valuations across sub-accounts, not an atomic historical snapshot. generatedAt is response assembly time, not a market observation timestamp. valuationBasis identifies stored currentValue in Live or units times currentUsdPrice in Sandbox. asOf requests return 422 HISTORICAL_REPORT_UNSUPPORTED. Supports JSON and CSV.

Parameters

formatjson | csvquery

Example: json

asOfstringquery

Unsupported historical request; any supplied value returns 422.

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

partnerKeystringRequired
generatedAtstringRequired
historicalbooleanRequired
valuationBasisstored_holdings_currentValue | units_times_currentUsdPriceRequired
totalAumnumberRequired
totalCashnumberRequired
totalPortfolioValuenumberRequired
subAccountCountintegerRequired
currencystringRequired
breakdownobject[]Required
breakdown[].subAccountIdstringRequired
breakdown[].externalIdstring | nullRequired
breakdown[].cashnumberRequired
breakdown[].portfolioValuenumberRequired
breakdown[].totalValuenumberRequired

Response codes

200AUM report.
400Invalid format.
422Historical asOf reports are unavailable (HISTORICAL_REPORT_UNSUPPORTED).

Positions

All open equity positions across all sub-accounts. Supports ?exchange=, ?symbol=, ?format=csv.

GET

/report/positions

Report — Positions

Full endpoint documentation
Sandbox availablelistPositions

Returns all open positions across all sub-accounts, aggregated by symbol. Useful for calculating exposure and hedging needs.

Parameters

This endpoint has no path or query parameters.

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

subAccountCountintegerRequired
symbolCountintegerRequired
positionsobject[]Required
positions[].symbolstringRequired
positions[].totalUnitsnumberRequired
positions[].totalValuenumberRequired
positions[].totalInvestednumberRequired
positions[].totalUnrealisedPnlnumberRequired
positions[].subAccountsobject[]Required

Response codes

200Aggregated positions.

Fees & revenue

/report/fees — trading fees paid across all sub-accounts (base fees + partner markup). /report/revenue — partner markup revenue per trade with net payable. Both filter by ?from=/?to=.

GET

/report/fees

Report — Fees

Full endpoint documentation
Sandbox availablelistFees

Returns fees earned by MyStocks and your markup fees, broken down by period and sub-account.

Parameters

fromstringquery
tostringquery

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

partnerKeystringRequired
periodobjectRequired
period.fromstring | nullRequired
period.tostring | nullRequired
totalFeesnumberRequired
tradeCountintegerRequired
currencyUSDRequired
monthlyobject[]Required
monthly[].monthstringRequired
monthly[].feesnumberRequired
monthly[].tradeCountintegerRequired
transactionsobject[]Required
transactions[].idstringRequired
transactions[].orderIdstring
transactions[].symbolstring
transactions[].tradeTypestring
transactions[].amountnumberRequired
transactions[].currencystringRequired
transactions[].createdAtstring | nullRequired

Response codes

200Fee report.
GET

/report/revenue

Report — Revenue

Full endpoint documentation
Sandbox availablelistRevenue

Returns your net revenue (markup fees) across all sub-accounts for the given period.

Parameters

fromstringquery
tostringquery

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

partnerKeystringRequired
markupBpsnumberRequired
periodobjectRequired
period.fromstring | nullRequired
period.tostring | nullRequired
currencyUSDRequired
totalRevenuenumberRequired
totalBaseFeesnumberRequired
tradeCountintegerRequired
monthlyobject[]Required
monthly[].monthstringRequired
monthly[].revenuenumberRequired
monthly[].baseFeesnumberRequired
monthly[].tradeCountintegerRequired
bySymbolobject[]Required
bySymbol[].symbolstringRequired
bySymbol[].revenuenumberRequired
bySymbol[].baseFeesnumberRequired
bySymbol[].tradeCountintegerRequired
transactionsobject[]Required
transactions[].idstringRequired
transactions[].orderIdstring
transactions[].symbolstring
transactions[].tradeTypestring
transactions[].markupFeenumberRequired
transactions[].baseFeenumberRequired
transactions[].totalFeenumber
transactions[].markupBpsnumber
transactions[].currencystringRequired
transactions[].createdAtstring | nullRequired

Response codes

200Revenue report.

Dividends & calendar

/report/dividends — aggregated dividend report across all sub-accounts, with per-account breakdown. /dividends/calendar — upcoming declarations; partnerEligible: true flags dividends where at least one of your sub-accounts holds the stock.

GET

/report/dividends

Report — Dividends

Full endpoint documentation
Sandbox availablegetDividendReport

Aggregated dividend distributions paid to sub-accounts for a given period. Returns totals, a per-symbol breakdown, and a per-sub-account breakdown. Add ?format=csv to download a spreadsheet of the by-symbol totals.

Parameters

fromstringquery

Start of period (ISO date, e.g. 2026-01-01). Defaults to 365 days ago.

tostringquery

End of period (ISO date). Defaults to today.

formatcsvquery

Pass csv to receive a downloadable spreadsheet instead of JSON.

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

totalUsdReceivednumber

Total USD credited to sub-accounts as dividends in the period.

distributionCountinteger

Number of individual distribution transactions.

currencystring

Example: "USD"

fromstring
tostring
bySymbolobject[]

Totals grouped by stock symbol.

bySymbol[].symbolstring
bySymbol[].totalUsdnumber
bySymbol[].countinteger
bySubAccountobject[]

Totals grouped by sub-account.

bySubAccount[].subAccountIdstring
bySubAccount[].externalIdstring | null
bySubAccount[].displayNamestring | null
bySubAccount[].totalUsdnumber
bySubAccount[].countinteger

Response codes

200Dividend distribution report (JSON) or CSV file.
GET

/dividends/calendar

Dividend calendar

Full endpoint documentation
Sandbox availablelistCalendar

Returns dividend declarations for stocks held across the partner's sub-accounts. Pass all=true to include declarations for symbols that no sub-account currently holds.

Parameters

statusDECLARED | PAID | CANCELLED | ALLquery

Filter declarations by lifecycle status.

allbooleanquery

Return declarations for all symbols, including those not held by partner sub-accounts.

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

declarationsobject[]
declarations[].idstring
declarations[].symbolstring
declarations[].namestring
declarations[].amountnumber
declarations[].currencystring
declarations[].exDividendDatestring | null
declarations[].recordDatestring | null
declarations[].paymentDatestring | null
declarations[].statusstring
declarations[].partnerEligibleboolean
declarations[].createdAtstring | null
countinteger

Response codes

200Dividend declarations visible to this partner.

Invoice

Monthly statement of account with platform fees owed, partner markup earned, float movements, payouts, issued invoices, and manual adjustments. Pass ?month=YYYY-MM or ?format=csv.

GET

/report/invoice

Report — Invoice

Full endpoint documentation
Sandbox availablelistInvoice

Returns invoiceable fee data for a billing period, formatted for your finance team. Includes base fees billed by MyStocks and markup collected by you.

Parameters

monthstringqueryRequired

Billing month in YYYY-MM format.

Example: 2026-04

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

invoiceIdstringRequired
monthstringRequired
periodobjectRequired
period.fromstring | nullRequired
period.tostring | nullRequired
generatedAtstringRequired
partnerobjectRequired
partner.keyIdstringRequired
partner.businessNamestringRequired
partner.emailstringRequired
partner.tierstring
partner.markupBpsnumber
summaryobjectRequired
summary.tradeCountintegerRequired
summary.subAccountCountintegerRequired
summary.walletBalancenumberRequired
summary.totalMarkupRevenuenumberRequired
summary.totalBaseFeesnumberRequired
summary.totalFeesnumberRequired
summary.currencyUSDRequired
summary.feesOwednumber
summary.markupEarnednumber
summary.approvedTopupsnumber
summary.pendingTopupsnumber
summary.processedPayoutsnumber
summary.pendingPayoutsnumber
summary.adjustmentsnumber
statementOfAccountobjectRequired
statementOfAccount.feesOwedUsdnumberRequired
statementOfAccount.markupEarnedUsdnumberRequired
statementOfAccount.netPartnerPositionUsdnumberRequired
statementOfAccount.floatMovementsobject[]
statementOfAccount.payoutsobject[]
statementOfAccount.invoicesobject[]
statementOfAccount.adjustmentsobject[]
lineItemsobject[]Required
lineItems[].datestringRequired
lineItems[].orderIdstringRequired
lineItems[].symbolstringRequired
lineItems[].tradeTypestringRequired
lineItems[].markupFeenumberRequired
lineItems[].baseFeenumberRequired
lineItems[].totalFeenumberRequired

Response codes

200Invoice data.

Reconciliation

Daily reconciliation pack for B2B operations: cash ledger, securities ledger, unsettled trades, fees, dividends, corporate actions, and custody positions across the master account and all sub-accounts. Pass ?asOf=YYYY-MM-DD (or ?from=/?to=). Add ?format=csv&section=cash|securities|unsettled|fees|dividends|custody|summary to download one section.

GET

/report/reconciliation

Report - Reconciliation suite

Full endpoint documentation
Sandbox availablegetReconciliationReport

Daily reconciliation pack for B2B operations. Returns cash ledger, securities ledger, unsettled trades, fees, dividends, corporate actions, and custody position files for the partner master account and all sub-accounts. Add format=csv&section=... to download a section as CSV for finance, SFTP mirroring, or data warehouse ingestion. JSON responses include an explicit cash roll-forward, data-quality controls, and customer-sub-ledger-versus-MyStocks-omnibus proof. A status of EXCEPTIONS identifies unit or invalid-value differences; INCOMPLETE means no MyStocks omnibus positions were available for comparison. Sandbox returns current virtual wallets and holdings for the master and at most 500 sub-accounts, with null custody totals and INCOMPLETE status. Sandbox historical dates and from/to receive 422; section filtering receives 400. Sandbox format=csv exports current account totals. Neither this Sandbox report nor an internal ledger alone proves external settlement.

Parameters

asOfstringquery

Single business date to reconcile. Overrides default today when from/to are omitted.

Example: 2026-06-30

fromstringquery
tostringquery
formatjson | csvquery

Example: json

sectionsummary | cash | securities | unsettled | fees | dividends | corporate_actions | custody_positionsquery

CSV export section.

limitintegerquery

Per-account transaction/order scan limit.

Example: 1000

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

See the response format and API Reference for this endpoint.

Response codes

200Reconciliation report or CSV file.
422Sandbox historical report or account limit unsupported.

Executions

OMS-style execution reports for an order — every lifecycle transition (accepted, locked, settled, rejected, cancelled) with timestamps. Available for partner-level and sub-account orders.

Filled orders do not return an empty execution list. For orders created before the immutable execution journal existed, the endpoint derives one compatibility FILL from the order record and marks it synthetic: true with sourceEvidence: "LEGACY_ORDER_STATE". Native journal reports remain immutable and authoritative; consumers can distinguish the compatibility row explicitly.

GET

/orders/{orderId}/executions

Get order execution reports

Full endpoint documentation
Sandbox unsupportedgetOrderExecutions

Returns OMS execution reports for a partner master-account order, including receipt, fill, rejection, and cancellation reports.

Parameters

orderIdstringpathRequired

Example: ord_abc123xyz

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

orderIdstring
subAccountIdstring | null
executionsobject[]
executions[].executionReportIdstring
executions[].journalVersioninteger | null
executions[].immutableboolean
executions[].eventHashAlgorithmstring | null
executions[].eventHashstring | null
executions[].orderIdstring
executions[].clientOrderIdstring | null
executions[].accountTypeMASTER | SUBACCOUNT
executions[].subAccountIdstring | null
executions[].reportTypeORDER_RECEIVED | FILL | REJECT | CANCEL | REPLACE | CORRECTION
executions[].orderStatusRECEIVED | FILLED | REJECTED | CANCELLED | REPLACED | WORKING
executions[].sideBUY | SELL
executions[].symbolstring
executions[].exchangestring | null
executions[].requestedQuantitynumber
executions[].filledQuantitynumber
executions[].remainingQuantitynumber
executions[].fillPricenumber | null
executions[].averageFillPricenumber | null
executions[].feeAmountnumber | null
executions[].netAmountnumber | null
executions[].currencystring

Example: "USD"

executions[].executionVenuestring | null
executions[].actorTypestring | null
executions[].actorIdstring | null
executions[].requestIdstring | null
executions[].sourcestring | null
executions[].correctsExecutionReportIdstring | null
executions[].syntheticboolean

True only for a read-time compatibility FILL derived from a legacy filled order that predates the immutable execution journal.

executions[].sourceEvidencestring | null
executions[].createdAtstring | null
executions[].occurredAtstring | null
executions[].recordedAtstring | null
countinteger

Response codes

200Execution reports for the order.
404Order not found.
GET

/users/{userId}/orders/{orderId}/executions

Get sub-account order execution reports

Full endpoint documentation
Sandbox availablegetUserOrderExecutions

Returns OMS execution reports for a sub-account order, including receipt, fill, rejection, and cancellation reports.

Parameters

userIdstringpathRequired

Example: usr_abc123

orderIdstringpathRequired

Example: ord_abc123xyz

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

orderIdstring
subAccountIdstring | null
executionsobject[]
executions[].executionReportIdstring
executions[].journalVersioninteger | null
executions[].immutableboolean
executions[].eventHashAlgorithmstring | null
executions[].eventHashstring | null
executions[].orderIdstring
executions[].clientOrderIdstring | null
executions[].accountTypeMASTER | SUBACCOUNT
executions[].subAccountIdstring | null
executions[].reportTypeORDER_RECEIVED | FILL | REJECT | CANCEL | REPLACE | CORRECTION
executions[].orderStatusRECEIVED | FILLED | REJECTED | CANCELLED | REPLACED | WORKING
executions[].sideBUY | SELL
executions[].symbolstring
executions[].exchangestring | null
executions[].requestedQuantitynumber
executions[].filledQuantitynumber
executions[].remainingQuantitynumber
executions[].fillPricenumber | null
executions[].averageFillPricenumber | null
executions[].feeAmountnumber | null
executions[].netAmountnumber | null
executions[].currencystring

Example: "USD"

executions[].executionVenuestring | null
executions[].actorTypestring | null
executions[].actorIdstring | null
executions[].requestIdstring | null
executions[].sourcestring | null
executions[].correctsExecutionReportIdstring | null
executions[].syntheticboolean

True only for a read-time compatibility FILL derived from a legacy filled order that predates the immutable execution journal.

executions[].sourceEvidencestring | null
executions[].createdAtstring | null
executions[].occurredAtstring | null
executions[].recordedAtstring | null
countinteger

Response codes

200Execution reports for the order.
404Sub-account or order not found.

Audit, usage & activity

/audit — paginated API call log (endpoint, method, status, IP, user-agent, latency) including key events (key.rotated, key.revoked, settings.updated). /usage — 90-day rolling analytics: requests per day, error rate, current rate-limit window. /client-activity — unified reverse-chronological feed of trades, deposits, withdrawals, subscriptions, redemptions, and KYC changes across all sub-accounts.

GET

/audit

Audit log

Full endpoint documentation
Sandbox availablelistAudit

Returns a cursor-paginated list of API calls made with your live key, ordered newest first. Each entry includes the endpoint path, HTTP method, source IP, user-agent, and timestamp. Use ?limit= and ?cursor= for pagination (see the Pagination section).

Parameters

limitintegerquery

Example: 50

cursorstringquery

Opaque cursor from the previous page's nextCursor field.

beforestringquery

ISO timestamp — return only entries older than this value.

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

entriesobject[]
entries[].idstring
entries[].endpointstring

Example: "/api/v1/partner/users/usr_abc/trade"

entries[].methodstring

Example: "POST"

entries[].ipstring | null
entries[].userAgentstring | null
entries[].timestampstring | null
countinteger
hasMoreboolean
nextCursorstring | null

Response codes

200Paginated audit log entries.
GET

/usage

Usage analytics

Full endpoint documentation
Sandbox availablelistUsage

Returns daily API call totals for the last N days (default 30, max 90), aggregated from per-minute rate-limit windows. Also returns the current rate-limit window status so you can see remaining capacity in real time.

Parameters

daysintegerquery

Number of days to look back. Default 30, max 90.

Example: 30

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

keyIdstring
tierstring

Example: "starter"

periodDaysinteger

Example: 30

totalCallsinteger

Total API calls in the requested period.

dailyobject[]

One entry per calendar day, ordered oldest first.

daily[].datestring

Example: "2026-05-01"

daily[].callsinteger
currentWindowobject

Live rate-limit window status.

currentWindow.limitinteger

Maximum requests allowed per minute for your tier.

currentWindow.remaininginteger

Requests remaining in the current 1-minute window.

currentWindow.resetAtstring

When the current window resets.

Response codes

200Usage analytics and current rate-limit window.
GET

/client-activity

Client activity feed

Full endpoint documentation
Sandbox availablelistClientActivity

Returns a chronological feed of all sub-account activity — trades, deposits, withdrawals, KYC changes, and dividends. Useful for building an admin dashboard.

Parameters

fromstringquery

Example: 2026-01-01

tostringquery
typeTRADE | DEPOSIT | WITHDRAWAL | KYC | DIVIDENDquery

Filter by event type.

limitintegerquery

Example: 100

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

eventsobject[]
events[].eventIdstring
events[].typestring
events[].subAccountIdstring
events[].detailobject

Event-specific payload.

events[].createdAtstring
totalinteger

Response codes

200Activity events.

Was this page useful?

Your signal helps us tighten partner onboarding docs.

Send note

Last updated on

On this page