For AI agents: the documentation index is available at https://docs.snaptrade.com/llms.txt, and the comprehensive documentation index is available at https://docs.snaptrade.com/llms-full.txt. The complete public OpenAPI specification is available at https://docs.snaptrade.com/openapi.yaml. Complete public OpenAPI specification with all documented operations, schemas, servers, and authentication requirements. Use it for SDK generation and API tooling; beta operations are marked x-beta. Markdown versions of documentation pages are available by appending .md to the URL path.
Guides

Connection Sharing (Beta)

Users with a SnapTrade Personal account can sign in through your app's Connection Portal and share an existing brokerage connection with your app, instead of connecting it again. Users new to SnapTrade can create an account and connect their brokerage there too.

Most integrations need no code changes. Shared connections work through your existing API integration, and your current connection flows keep working as they do today. The exception: if your app automatically refreshes, disables, or syncs transactions on its connections, make sure it can handle a not found error on those calls.

How It Works

  1. Your app opens a Connection Portal link as usual. Alongside connecting a new account, the portal offers the user the option to sign in to SnapTrade.
  2. The user signs in, or creates a SnapTrade account and connects their brokerage.
  3. The user picks one connection, reviews what your app will be able to do, and confirms. Their other connections are not shared.
  4. Your app receives the normal success result, as described in Window messages.

The connection then appears under your existing SnapTrade user, using the connection ID from the user's SnapTrade Personal account. It stays in that account, and the user who shared it remains its owner.

Which Connections Qualify

A connection can be shared with your app when all of the following are true:

  • It belongs to the user's SnapTrade Personal account.
  • It's at a brokerage your app offers. If your login link sets broker, it must be at that brokerage.
  • It isn't disabled. The owner must reconnect it in SnapTrade first.
  • It can trade, if you request connectionType=trade.

Signing In

Users sign in with their SnapTrade email and password, plus a code if they have 2FA turned on. The portal can remember a browser for 90 days, which skips the password on later visits but always requires a code: their 2FA, or an emailed code without it.

What Your App Sees

Shared connections and their accounts come back from the same endpoints, in the same shape, as connections your app created. The API doesn't mark them as shared. Your plan, add-ons, and trading permissions apply, not the owner's.

Access Level

The connectionType in your login link applies as it does for a new connection:

connectionTypeConnection can tradeConnection is read-only
read or not setRead accessRead access
trade-if-availableTrading accessRead access
tradeTrading accessCan't be shared with your app

The user sees the access level before confirming. Sharing never changes the type of the owner's connection.

Webhooks

Webhooks arrive at your existing listener, addressed to your own userId, with the shared connection's ID in brokerageAuthorizationId.

EventWhat happens on a shared connection
CONNECTION_ADDEDSent when a share starts, followed by NEW_ACCOUNT_AVAILABLE for each account. Accounts that have already synced also send ACCOUNT_TRANSACTIONS_INITIAL_UPDATE.
CONNECTION_DELETEDSent when a share ends.
CONNECTION_BROKEN, CONNECTION_FIXED, CONNECTION_UPDATED, ACCOUNT_REMOVED, ACCOUNT_HOLDINGS_UPDATED, ACCOUNT_TRANSACTIONS_UPDATEDSent as usual.
TRADE_UPDATESent only for orders your app placed.
CONNECTION_ATTEMPTED, CONNECTION_FAILED, TRADE_DETECTIONNot sent. These stay with the owner.

What Works Differently

  • Refresh, disable, and transaction sync: , , and are owner-only and return a not found error on a shared connection. Since the API doesn't mark connections as shared, don't treat this error as meaning the connection was deleted. You'll receive CONNECTION_DELETED when a share ends.
  • Connection type: This field shows the type of the owner's connection, not your access. A read-only share of a trading connection still shows trade, and trading requests on it return a not found error.
  • Tax lots: These may be missing on shared connections, even if you have the add-on.

Reconnecting and Upgrading

Fix a broken shared connection like any other: call with reconnect=<connection id>. The portal asks the owner to sign in to the account that shared it and fix the connection, and your app gets its normal success result.

To add trading to a read-only share, send reconnect with connectionType=trade. Once the owner consents, your access is upgraded and you get the normal success result, but no webhook. The type of the owner's connection never changes, so if the connection can't trade, the upgrade fails and your app gets no success result.

How Access Ends

A share ends when:

  • Your app removes it. Calling on a shared connection ends your access only. The owner's connection isn't affected.
  • The owner stops sharing. They can do this from Connected apps in the SnapTrade Dashboard.
  • The owner deletes the connection from their SnapTrade account.
  • You delete your SnapTrade user with . No webhook is sent in this case.

Otherwise, you receive CONNECTION_DELETED and the connection and its accounts stop being available to your app. If the user shares the same connection again, it returns with the same connection ID and you receive CONNECTION_ADDED again.

Connection Sharing vs. OAuth Apps

Both let SnapTrade Personal users give your app access to connections they already have. The difference is what you build:

Connection sharingOAuth app
What you buildNothing beyond your Connection Portal integrationA registered OAuth app with a token exchange
Who the user is in the APIYour own SnapTrade user (userId and userSecret)The SnapTrade Personal user, through Bearer tokens
Where the user approvesIn your Connection PortalOn SnapTrade's OAuth consent screen
BrokeragesThose your app offersAll brokerages supported by SnapTrade Personal
WebhooksYour standard webhook schemaThe oauth_v1 schema, with the webhook scope

Availability

Connection sharing is on by default for new Commercial customers and is rolling out gradually to existing customers. Contact us if you'd like it sooner.

FAQ for Existing Customers

Will anything change for my existing users and connections? Your existing connections and flows stay as they are. Once connection sharing is on for your app, users opening the Connection Portal also see the option to sign in to SnapTrade, and can still connect a new account instead.

Can the same brokerage account appear twice for one user? Yes. If a user already connected an account through your app and also shares their SnapTrade Personal connection to it, you see two separate connections with different connection and account IDs.