Using the Bloomberg Market Data Feed (MDF) Adapter with Server API (SAPI) in io.Connect Desktop

The io.Connect Bloomberg Market Data Feed (MDF) Adapter uses the Bloomberg blpapi library under the hood, which means it can work with both the Desktop API (DAPI) and the Server API (SAPI). By default, the adapter connects via DAPI (localhost), but some firms, especially those running centralized data infrastructure need to connect via SAPI instead.

The MDF Adapter as providing access to the Bloomberg Market Data Feed (B-PIPE) and the main difference between DAPI and SAPI is the actual source and authorization method. Apart from that the Desktop API and Server API have the same programming interface and behave almost identically.


When Do You Need SAPI?

The Bloomberg Desktop API (DAPI) runs locally alongside a Bloomberg Terminal on the user’s desktop. The Server API (SAPI) runs on a dedicated server and serves data to multiple clients over the network.

You’ll typically need SAPI when:

  • Your application needs Bloomberg data on machines that don’t have a Bloomberg Terminal installed.
  • You’re building server-side or centralized data services.
  • Your firm’s Bloomberg infrastructure is provisioned through B-PIPE on a shared server rather than individual desktops.

SAPI requires an additional authorization step via the //blp/apiauth service.


Prerequisites

  • Bloomberg Bridge
  • @glue42/bbg-market-data (npm)
  • Bloomberg SAPI entitlement

Configure Session Settings for SAPI

When initializing the @glue42/bbg-market-data library, you can pass custom sessionSettings to switch from DAPI to SAPI mode. The critical properties are serverHost, serverPort, and clientMode:

"sessionSettings": {
      "options": {
        "serverHost": "BloombergAPICRD",
        "serverPort": 8194,
        "clientMode": "SAPI"
      }
 }

Send the Authorization Request

The MDF Adapter exposes a special IO_MDF_AuthorizationRequest operation for this purpose.

A working example is available in the bbg-market-data-example repository on GitHub:

examples/io-mdf-authorization-request/index.ts

The authorization must succeed before you open any data requests (subscriptions, reference data, historical data, etc.).

Make Data Requests as Usual

Once authorized, you can use the @glue42/bbg-market-data API exactly as documented for DAPI — reference data requests, historical data requests, market data subscriptions, and so on all work the same way.

Tip: Reuse a single BBGMarketData() instance in your app — initialize it once (e.g., at startup alongside your io.Connect instance) and use it for all subsequent requests and subscriptions. Note that completed requests are closed automatically by the library; you only need to call request.close() explicitly when a component unmounts.


Troubleshooting

Error: No operation found with name - IO_MDF_AuthorizationRequest

Fix: You need Bloomberg Bridge v1.114 or later.


Error: Authorization using UUID and display ip is not supported in this product (code 110)

Fix: Ensure you’re using @glue42/bbg-market-data version 0.8.1 or later and that you’re passing the sessionSettings with clientMode: "SAPI".