Migrate from Beta

Map connection-first beta routes and SDK wrappers to the account-first API.

The beta API exposed broker connections as the primary integration resource. The API makes the financial account and company grant the public resource. Existing beta routes remain available during the migration window, but new integrations should use sessions, Connect grants, account-scoped data reads, account-scoped trading, and webhook subscriptions.

Migration checklist

  1. Replace stored connectionId references with financial accountId references returned by account APIs.
  2. Create company-owned sessions from your backend.
  3. Open Connect through a portal link and create account grants.
  4. Read balances, positions, transactions, and orders under /api/v1/accounts/{accountId}/....
  5. Add Idempotency-Key to order create/modify/cancel commands.
  6. Subscribe to webhook event types and route events by companyAccountId, accountId, and grantId.

Route mapping

Beta route familyCurrent API
POST /api/beta/session/initPOST /api/v1/sessions from a backend with X-API-Key.
POST /api/beta/session/startBrowser SDK initialization from a one-time token.
GET /api/beta/session/portalPOST /api/v1/sessions/{sessionId}/portal-links, then open Connect.
GET /api/beta/session/{sessionId}/userGET /api/v1/sessions/{sessionId}/user from the backend.
POST /api/beta/session/link-userPOST /api/v1/portal/{sessionId}/user-link.
GET /api/beta/portal/{token}GET /api/v1/portal/{token}.
POST /api/beta/portal/{sessionId}/completePOST /api/v1/portal/{sessionId}/complete.
GET /api/beta/brokersGET /api/v1/portal/{sessionId}/institutions.
POST /api/beta/brokers/connectPOST /api/v1/portal/{sessionId}/auth-attempts.
GET /api/beta/brokers/data/accountsGET /api/v1/accounts.
GET /api/beta/brokers/data/balancesGET /api/v1/accounts/{accountId}/balances.
GET /api/beta/brokers/data/positionsGET /api/v1/accounts/{accountId}/positions.
GET /api/beta/brokers/data/ordersGET /api/v1/accounts/{accountId}/orders.
GET /api/beta/brokers/data/orders/{orderId}/fillsGET /api/v1/accounts/{accountId}/orders/{orderId}/fills.
GET /api/beta/brokers/data/orders/{orderId}/eventsGET /api/v1/accounts/{accountId}/orders/{orderId}/events.
GET /api/beta/brokers/data/transactionsGET /api/v1/accounts/{accountId}/transactions.
POST /api/beta/brokers/ordersPOST /api/v1/accounts/{accountId}/orders.
PATCH /api/beta/brokers/orders/{orderId}PATCH /api/v1/accounts/{accountId}/orders/{orderId}.
DELETE /api/beta/brokers/orders/{orderId}DELETE /api/v1/accounts/{accountId}/orders/{orderId}.
GET /api/beta/brokers/connectionsGET /api/v1/accounts and GET /api/v1/account-grants.

SDK mapping

Beta SDK patternSDK pattern
finatic.getBrokerConnections()finatic.v1.listAccounts() plus finatic.v1.listAccountGrants().
finatic.getAccounts({ connectionId })finatic.v1.listAccounts() then account-scoped methods.
finatic.getPositions({ connectionId, accountId })finatic.v1.listPositions({ accountId }).
finatic.getOrders({ connectionId, accountId })finatic.v1.listOrders({ accountId }).
finatic.placeOrder({ broker, accountNumber, order })`finatic.v1.createAccountOrder({ accountId, body,
idempotencyKey })`.
Server getToken() onlyServer session plus portal-link flow for new Connect sessions.

Webhook migration

Beta webhook event names such as account.orders.updated and connection.updated are replaced by current event names such as order.updated, account.sync.succeeded, and connection.reauth.required.

Use the catalog endpoint and this docs page as the source of truth for current event strings:

1curl https://api.finatic.dev/api/v1/webhooks/catalog 2