resource.action naming convention. Each event is delivered as a JSON object with the standard event envelope.
You can subscribe to specific event types when creating an endpoint, or receive all events by leaving the filter empty.
Account events
Account events fire when a user’s linked financial accounts change.account.connected
account.connected
A new financial account was linked.Fired when a user successfully connects a financial institution through the Yoshi link flow.
| Field | Type | Description |
|---|---|---|
data.id | string | Account ID. Use with GET /accounts to fetch full details. |
data.name | string | Display name with masked account number. |
data.type | string | Account type: depository, credit, investment, loan, or other. |
data.subtype | string | null | Account subtype, e.g. checking, savings, credit card. |
data.institution_name | string | null | Name of the financial institution. |
account.disconnected
account.disconnected
Account access was revoked.Fired when a financial account is disconnected — either by the user unlinking it or due to an institution-side error that revoked access.
| Field | Type | Description |
|---|---|---|
data.id | string | Account ID. |
data.name | string | Display name of the disconnected account. |
data.reason | string | null | Reason for disconnection, if available. |
account.updated
account.updated
Account metadata changed.Fired when an account’s name, type, or other metadata changes during a sync.
| Field | Type | Description |
|---|---|---|
data.id | string | Account ID. |
data.name | string | Updated display name. |
data.type | string | Account type. |
data.subtype | string | null | Account subtype. |
Transaction events
Transaction events fire when transactions are synced from financial institutions.transaction.created
transaction.created
New transactions synced from an institution.Fired after new transactions are persisted during a transaction sync. The payload contains transaction IDs — fetch full details via
GET /transactions.| Field | Type | Description |
|---|---|---|
data.account_id | string | The account that the transactions belong to. |
data.transaction_ids | string[] | IDs of the new transactions. |
data.count | number | Number of new transactions in this event. |
transaction.updated
transaction.updated
Transaction details were modified.Fired when existing transactions are re-categorized, have merchant names corrected, or are otherwise updated by the institution.
| Field | Type | Description |
|---|---|---|
data.account_id | string | The account that the transactions belong to. |
data.transaction_ids | string[] | IDs of the updated transactions. |
data.count | number | Number of updated transactions. |
transaction.removed
transaction.removed
Transactions were removed by the institution.Fired when an institution retroactively removes transactions — for example, when a pending transaction is voided.
| Field | Type | Description |
|---|---|---|
data.account_id | string | The account that the transactions belonged to. |
data.transaction_ids | string[] | IDs of the removed transactions. |
data.count | number | Number of removed transactions. |
Balance events
balance.updated
balance.updated
Account balance was refreshed.Fired when an account’s current or available balance changes during a sync.
| Field | Type | Description |
|---|---|---|
data.account_id | string | Account ID. |
data.current | number | null | Current balance. |
data.available | number | null | Available balance (may differ from current due to holds). |
data.currency | string | ISO 4217 currency code. |
Investment events
investment.holdings_updated
investment.holdings_updated
Investment holdings data was refreshed.Fired after an investment account sync updates holdings positions.
| Field | Type | Description |
|---|---|---|
data.account_id | string | Investment account ID. |
data.holding_count | number | Number of holdings in the account after the sync. |
investment.transaction_created
investment.transaction_created
New investment transactions detected.Fired when new investment transactions (buys, sells, dividends) are synced.
| Field | Type | Description |
|---|---|---|
data.account_id | string | Investment account ID. |
data.transaction_ids | string[] | IDs of the new investment transactions. |
data.count | number | Number of new investment transactions. |
Score events
score.updated
score.updated
Financial health scores were recalculated.Fired after a user’s financial health scores are recomputed based on new data.
| Field | Type | Description |
|---|---|---|
data.user_id | string | User whose scores were updated. |
data.score_types | string[] | Which score types were recalculated. |
Income events
income.detected
income.detected
Income stream identified or updated.Fired when income analysis detects or updates recurring income streams for a user.
| Field | Type | Description |
|---|---|---|
data.user_id | string | User whose income was analyzed. |
data.stream_count | number | Number of income streams detected. |
Recurring events
recurring.updated
recurring.updated
Recurring transaction streams were re-analyzed.Fired when Yoshi re-evaluates a user’s recurring transactions (subscriptions, bills, regular transfers).
| Field | Type | Description |
|---|---|---|
data.user_id | string | User whose recurring streams were analyzed. |
data.stream_count | number | Number of recurring streams detected. |