Bloomberg EMSX API
The Execution Management System API allows developers to manage and automate trading for equities, futures, and options.
The Execution Management System API allows developers to manage and automate trading for equities, futures, and options.
openapi: 3.1.0
info:
title: Bloomberg EMSX API
description: >-
The Execution Management System API allows developers to manage and
automate trading for equities, futures, and options using an event-driven
model with both subscription and request-response paradigms. EMSX
provides order and route management, broker integration, and fill
tracking via the BLPAPI protocol. This spec models the request-response
operations as REST-like endpoints.
version: 1.0.0
contact:
name: Bloomberg Developer Support
url: https://emsx-api-doc.readthedocs.io/
license:
name: Proprietary
url: https://www.bloomberg.com/notices/tos/
termsOfService: https://www.bloomberg.com/notices/tos/
servers:
- url: https://localhost:3000
description: Bloomberg EMSX service via BLPAPI HTTP bridge
security:
- bearerAuth: []
tags:
- name: Orders
description: Create, modify, and manage orders
- name: Routes
description: Create, modify, and manage routes to brokers
- name: Fills
description: Track order and route fills
- name: Broker Strategies
description: Query available broker strategies and parameters
- name: Teams
description: Manage EMSX teams and assignments
- name: Subscriptions
description: Subscribe to real-time order and route updates
paths:
/request/blp/emapisvc/CreateOrder:
post:
operationId: createOrder
summary: Create a New Order
description: >-
Creates a new order in the EMSX blotter. Orders can be created for
equities, futures, and options with various order types and
time-in-force parameters.
tags:
- Orders
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderRequest'
examples:
CreateorderRequestExample:
summary: Default createOrder request
x-microcks-default: true
value:
EMSX_TICKER: example_value
EMSX_AMOUNT: 10
EMSX_ORDER_TYPE: MKT
EMSX_SIDE: BUY
EMSX_TIF: DAY
EMSX_LIMIT_PRICE: 42.5
EMSX_STOP_PRICE: 42.5
EMSX_ACCOUNT: example_value
EMSX_NOTES: example_value
EMSX_HAND_INSTRUCTION: ANY
EMSX_BASKET_NAME: example_value
EMSX_CFD_FLAG: 'Y'
EMSX_CUSTOM_NOTE1: example_value
EMSX_CUSTOM_NOTE2: example_value
EMSX_CUSTOM_NOTE3: example_value
EMSX_CUSTOM_NOTE4: example_value
EMSX_CUSTOM_NOTE5: example_value
EMSX_GTD_DATE: example_value
EMSX_INVESTOR_ID: '500123'
EMSX_LOCATE_BROKER: example_value
EMSX_LOCATE_ID: '500123'
EMSX_PORTFOLIO: example_value
responses:
'200':
description: Order created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderResponse'
examples:
Createorder200Example:
summary: Default createOrder 200 response
x-microcks-default: true
value:
EMSX_SEQUENCE: 10
MESSAGE: example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/CreateOrderAndRouteEx:
post:
operationId: createOrderAndRoute
summary: Create an Order and Route Simultaneously
description: >-
Creates a new order and immediately routes it to a specified broker
in a single operation.
tags:
- Orders
- Routes
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderAndRouteRequest'
examples:
CreateorderandrouteRequestExample:
summary: Default createOrderAndRoute request
x-microcks-default: true
value: {}
responses:
'200':
description: Order created and routed
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderAndRouteResponse'
examples:
Createorderandroute200Example:
summary: Default createOrderAndRoute 200 response
x-microcks-default: true
value:
EMSX_SEQUENCE: 10
EMSX_ROUTE_ID: '500123'
MESSAGE: example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/ModifyOrderEx:
post:
operationId: modifyOrder
summary: Modify an Existing Order
description: >-
Modifies parameters of an existing order such as quantity, limit
price, or time-in-force.
tags:
- Orders
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ModifyOrderRequest'
examples:
ModifyorderRequestExample:
summary: Default modifyOrder request
x-microcks-default: true
value:
EMSX_SEQUENCE: 10
EMSX_AMOUNT: 10
EMSX_ORDER_TYPE: MKT
EMSX_LIMIT_PRICE: 42.5
EMSX_STOP_PRICE: 42.5
EMSX_TIF: DAY
EMSX_NOTES: example_value
responses:
'200':
description: Order modified successfully
content:
application/json:
schema:
$ref: '#/components/schemas/OperationResponse'
examples:
Modifyorder200Example:
summary: Default modifyOrder 200 response
x-microcks-default: true
value:
STATUS: 10
MESSAGE: example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/DeleteOrder:
post:
operationId: deleteOrder
summary: Delete an Order
description: >-
Deletes (cancels) an order from the EMSX blotter. Only orders that
have not been fully filled can be deleted.
tags:
- Orders
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteOrderRequest'
examples:
DeleteorderRequestExample:
summary: Default deleteOrder request
x-microcks-default: true
value:
EMSX_SEQUENCE: 10
responses:
'200':
description: Order deleted
content:
application/json:
schema:
$ref: '#/components/schemas/OperationResponse'
examples:
Deleteorder200Example:
summary: Default deleteOrder 200 response
x-microcks-default: true
value:
STATUS: 10
MESSAGE: example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/GroupRouteEx:
post:
operationId: groupRoute
summary: Route Multiple Orders as a Group
description: >-
Routes a group of orders to a single broker in a single operation,
useful for basket or program trading.
tags:
- Routes
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GroupRouteRequest'
examples:
GrouprouteRequestExample:
summary: Default groupRoute request
x-microcks-default: true
value:
EMSX_SEQUENCE:
- 10
EMSX_AMOUNT_PERCENT: 42.5
EMSX_BROKER: example_value
EMSX_ORDER_TYPE: MKT
EMSX_LIMIT_PRICE: 42.5
EMSX_TIF: DAY
EMSX_STRATEGY: example_value
EMSX_STRATEGY_PARAMS: example_value
responses:
'200':
description: Orders routed as a group
content:
application/json:
schema:
$ref: '#/components/schemas/GroupRouteResponse'
examples:
Grouproute200Example:
summary: Default groupRoute 200 response
x-microcks-default: true
value:
numRouted: 10
MESSAGE: example_value
routeIds:
- EMSX_SEQUENCE: 10
EMSX_ROUTE_ID: '500123'
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/RouteEx:
post:
operationId: routeOrder
summary: Route an Order to a Broker
description: >-
Routes an existing order to a specific broker with optional
strategy parameters.
tags:
- Routes
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RouteOrderRequest'
examples:
RouteorderRequestExample:
summary: Default routeOrder request
x-microcks-default: true
value:
EMSX_SEQUENCE: 10
EMSX_AMOUNT: 10
EMSX_BROKER: example_value
EMSX_ORDER_TYPE: MKT
EMSX_TIF: DAY
EMSX_LIMIT_PRICE: 42.5
EMSX_STOP_PRICE: 42.5
EMSX_STRATEGY: example_value
EMSX_STRATEGY_PARAMS: example_value
EMSX_EXEC_INSTRUCTIONS: example_value
EMSX_ACCOUNT: example_value
responses:
'200':
description: Order routed successfully
content:
application/json:
schema:
$ref: '#/components/schemas/RouteOrderResponse'
examples:
Routeorder200Example:
summary: Default routeOrder 200 response
x-microcks-default: true
value:
EMSX_SEQUENCE: 10
EMSX_ROUTE_ID: '500123'
MESSAGE: example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/ModifyRouteEx:
post:
operationId: modifyRoute
summary: Modify a Route
description: >-
Modifies parameters of an existing route, such as quantity or
strategy parameters.
tags:
- Routes
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ModifyRouteRequest'
examples:
ModifyrouteRequestExample:
summary: Default modifyRoute request
x-microcks-default: true
value:
EMSX_SEQUENCE: 10
EMSX_ROUTE_ID: '500123'
EMSX_AMOUNT: 10
EMSX_ORDER_TYPE: MKT
EMSX_LIMIT_PRICE: 42.5
EMSX_STOP_PRICE: 42.5
EMSX_TIF: DAY
EMSX_STRATEGY: example_value
EMSX_STRATEGY_PARAMS: example_value
responses:
'200':
description: Route modified
content:
application/json:
schema:
$ref: '#/components/schemas/OperationResponse'
examples:
Modifyroute200Example:
summary: Default modifyRoute 200 response
x-microcks-default: true
value:
STATUS: 10
MESSAGE: example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/DeleteRoute:
post:
operationId: deleteRoute
summary: Delete (cancel) a Route
description: >-
Cancels an active route. Only routes that have not been fully
filled can be cancelled.
tags:
- Routes
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteRouteRequest'
examples:
DeleterouteRequestExample:
summary: Default deleteRoute request
x-microcks-default: true
value:
EMSX_SEQUENCE: 10
EMSX_ROUTE_ID: '500123'
responses:
'200':
description: Route cancelled
content:
application/json:
schema:
$ref: '#/components/schemas/OperationResponse'
examples:
Deleteroute200Example:
summary: Default deleteRoute 200 response
x-microcks-default: true
value:
STATUS: 10
MESSAGE: example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/GetOrders:
post:
operationId: getOrders
summary: Get Orders
description: >-
Retrieves the current list of orders in the EMSX blotter, optionally
filtered by status or other parameters.
tags:
- Orders
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GetOrdersRequest'
examples:
GetordersRequestExample:
summary: Default getOrders request
x-microcks-default: true
value:
scope: PRIVATE
responses:
'200':
description: List of orders
content:
application/json:
schema:
$ref: '#/components/schemas/GetOrdersResponse'
examples:
Getorders200Example:
summary: Default getOrders 200 response
x-microcks-default: true
value:
orders:
- EMSX_SEQUENCE: 10
EMSX_TICKER: example_value
EMSX_SIDE: BUY
EMSX_AMOUNT: 10
EMSX_FILLED: 10
EMSX_WORKING: 10
EMSX_ORDER_TYPE: example_value
EMSX_LIMIT_PRICE: 42.5
EMSX_STOP_PRICE: 42.5
EMSX_TIF: example_value
EMSX_STATUS: ASSIGN
EMSX_AVG_PRICE: 42.5
EMSX_ACCOUNT: example_value
EMSX_TRADER: example_value
EMSX_NOTES: example_value
EMSX_BASKET_NAME: example_value
EMSX_DATE: example_value
EMSX_TIME_STAMP: example_value
EMSX_PORTFOLIO: example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/GetRoutes:
post:
operationId: getRoutes
summary: Get Routes
description: >-
Retrieves the current list of routes associated with orders in
the EMSX blotter.
tags:
- Routes
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GetRoutesRequest'
examples:
GetroutesRequestExample:
summary: Default getRoutes request
x-microcks-default: true
value:
scope: PRIVATE
responses:
'200':
description: List of routes
content:
application/json:
schema:
$ref: '#/components/schemas/GetRoutesResponse'
examples:
Getroutes200Example:
summary: Default getRoutes 200 response
x-microcks-default: true
value:
routes:
- EMSX_SEQUENCE: 10
EMSX_ROUTE_ID: '500123'
EMSX_BROKER: example_value
EMSX_AMOUNT: 10
EMSX_FILLED: 10
EMSX_STATUS: CANCEL
EMSX_ORDER_TYPE: example_value
EMSX_LIMIT_PRICE: 42.5
EMSX_AVG_PRICE: 42.5
EMSX_STRATEGY: example_value
EMSX_EXEC_INSTRUCTIONS: example_value
EMSX_LAST_FILL_DATE: example_value
EMSX_LAST_FILL_TIME: example_value
EMSX_ROUTE_CREATE_DATE: example_value
EMSX_ROUTE_CREATE_TIME: example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/GetFills:
post:
operationId: getFills
summary: Get Fills
description: >-
Retrieves fill information for orders and routes. Fills represent
partial or complete executions of routes.
tags:
- Fills
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GetFillsRequest'
examples:
GetfillsRequestExample:
summary: Default getFills request
x-microcks-default: true
value:
scope: PRIVATE
fromDateTime: '2026-01-15T10:30:00Z'
responses:
'200':
description: List of fills
content:
application/json:
schema:
$ref: '#/components/schemas/GetFillsResponse'
examples:
Getfills200Example:
summary: Default getFills 200 response
x-microcks-default: true
value:
fills:
- EMSX_SEQUENCE: 10
EMSX_ROUTE_ID: '500123'
EMSX_FILL_ID: '500123'
EMSX_TICKER: example_value
EMSX_SIDE: BUY
EMSX_FILL_AMOUNT: 10
EMSX_FILL_PRICE: 42.5
EMSX_FILL_DATE: example_value
EMSX_FILL_TIME: example_value
EMSX_BROKER: example_value
EMSX_EXCHANGE: example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/GetBrokerStrategiesWithAssetClass:
post:
operationId: getBrokerStrategies
summary: Get Broker Strategies
description: >-
Retrieves available trading strategies for a specific broker
and asset class combination.
tags:
- Broker Strategies
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GetBrokerStrategiesRequest'
examples:
GetbrokerstrategiesRequestExample:
summary: Default getBrokerStrategies request
x-microcks-default: true
value:
EMSX_BROKER: example_value
EMSX_ASSET_CLASS: EQTY
responses:
'200':
description: Available broker strategies
content:
application/json:
schema:
$ref: '#/components/schemas/GetBrokerStrategiesResponse'
examples:
Getbrokerstrategies200Example:
summary: Default getBrokerStrategies 200 response
x-microcks-default: true
value:
strategies:
- example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/GetBrokerStrategyInfoWithAssetClass:
post:
operationId: getBrokerStrategyInfo
summary: Get Broker Strategy Details
description: >-
Retrieves detailed information about a specific broker strategy
including its parameters and constraints.
tags:
- Broker Strategies
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GetBrokerStrategyInfoRequest'
examples:
GetbrokerstrategyinfoRequestExample:
summary: Default getBrokerStrategyInfo request
x-microcks-default: true
value:
EMSX_BROKER: example_value
EMSX_STRATEGY: example_value
EMSX_ASSET_CLASS: EQTY
responses:
'200':
description: Strategy details
content:
application/json:
schema:
$ref: '#/components/schemas/GetBrokerStrategyInfoResponse'
examples:
Getbrokerstrategyinfo200Example:
summary: Default getBrokerStrategyInfo 200 response
x-microcks-default: true
value:
strategyInfo:
name: Example Title
description: A sample description.
parameters:
- name: Example Title
description: A sample description.
type: example_value
required: true
allowedValues: {}
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/GetTeams:
post:
operationId: getTeams
summary: Get Emsx Teams
description: >-
Retrieves the list of EMSX teams available to the user.
tags:
- Teams
requestBody:
required: true
content:
application/json:
schema:
type: object
examples:
GetteamsRequestExample:
summary: Default getTeams request
x-microcks-default: true
value: {}
responses:
'200':
description: List of teams
content:
application/json:
schema:
$ref: '#/components/schemas/GetTeamsResponse'
examples:
Getteams200Example:
summary: Default getTeams 200 response
x-microcks-default: true
value:
teams:
- name: Example Title
members:
- {}
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/AssignTrader:
post:
operationId: assignTrader
summary: Assign a Trader to an Order
description: >-
Assigns or reassigns a trader to handle a specific order.
tags:
- Teams
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AssignTraderRequest'
examples:
AssigntraderRequestExample:
summary: Default assignTrader request
x-microcks-default: true
value:
EMSX_SEQUENCE: 10
EMSX_TRADER_UUID: '500123'
responses:
'200':
description: Trader assigned
content:
application/json:
schema:
$ref: '#/components/schemas/OperationResponse'
examples:
Assigntrader200Example:
summary: Default assignTrader 200 response
x-microcks-default: true
value:
STATUS: 10
MESSAGE: example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/request/blp/emapisvc/ManualFill:
post:
operationId: manualFill
summary: Record a Manual Fill
description: >-
Records a manual fill against a route for cases where fills
are reported outside the electronic execution flow.
tags:
- Fills
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ManualFillRequest'
examples:
ManualfillRequestExample:
summary: Default manualFill request
x-microcks-default: true
value:
EMSX_SEQUENCE: 10
EMSX_ROUTE_ID: '500123'
EMSX_FILL_AMOUNT: 10
EMSX_FILL_PRICE: 42.5
EMSX_FILL_DATE: example_value
EMSX_FILL_TIME: example_value
responses:
'200':
description: Manual fill recorded
content:
application/json:
schema:
$ref: '#/components/schemas/OperationResponse'
examples:
Manualfill200Example:
summary: Default manualFill 200 response
x-microcks-default: true
value:
STATUS: 10
MESSAGE: example_value
'400':
$ref: '#/components/responses/BadRequest'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: Bloomberg-issued JWT credential for EMSX access
responses:
BadRequest:
description: Invalid request parameters or business rule violation
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
CreateOrderRequest:
type: object
required:
- EMSX_TICKER
- EMSX_AMOUNT
- EMSX_ORDER_TYPE
- EMSX_SIDE
- EMSX_TIF
properties:
EMSX_TICKER:
type: string
description: Bloomberg security identifier
examples:
- 'IBM US Equity'
EMSX_AMOUNT:
type: integer
description: Order quantity (number of shares/contracts)
example: 10
EMSX_ORDER_TYPE:
type: string
description: Order type
enum:
- MKT
- LMT
- STP
- STP LMT
example: MKT
EMSX_SIDE:
type: string
description: Buy or sell
enum:
- BUY
- SELL
- SHRT
example: BUY
EMSX_TIF:
type: string
description: Time in force
enum:
- DAY
- GTC
- OPG
- IOC
- FOK
- GTD
- MOC
- LOC
example: DAY
EMSX_LIMIT_PRICE:
type: number
description: Limit price (required for LMT and STP LMT orders)
example: 42.5
EMSX_STOP_PRICE:
type: number
description: Stop price (required for STP and STP LMT orders)
example: 42.5
EMSX_ACCOUNT:
type: string
description: Trading account identifier
example: example_value
EMSX_NOTES:
type: string
description: Free-text notes attached to the order
example: example_value
EMSX_HAND_INSTRUCTION:
type: string
description: Handling instruction
enum:
- ANY
- DIR
- FCM
example: ANY
EMSX_BASKET_NAME:
type: string
description: Name of the basket this order belongs to
example: example_value
EMSX_CFD_FLAG:
type: string
description: Contract for difference flag
enum:
- 'Y'
- 'N'
example: 'Y'
EMSX_CUSTOM_NOTE1:
type: string
example: example_value
EMSX_CUSTOM_NOTE2:
type: string
example: example_value
EMSX_CUSTOM_NOTE3:
type: string
example: example_value
EMSX_CUSTOM_NOTE4:
type: string
example: example_value
EMSX_CUSTOM_NOTE5:
type: string
example: example_value
EMSX_GTD_DATE:
type: string
description: Good-till-date in YYYYMMDD format
example: example_value
EMSX_INVESTOR_ID:
type: string
description: Investor identifier for allocation
example: '500123'
EMSX_LOCATE_BROKER:
type: string
description: Locate broker for short sells
example: example_value
EMSX_LOCATE_ID:
type: string
description: Locate ID for short sells
example: '500123'
EMSX_PORTFOLIO:
type: string
description: Portfolio name for the order
example: example_value
CreateOrderResponse:
type: object
properties:
EMSX_SEQUENCE:
type: integer
description: Unique order sequence number assigned by EMSX
example: 10
MESSAGE:
type: string
description: Status message
example: example_value
CreateOrderAndRouteRequest:
allOf:
- $ref: '#/components/schemas/CreateOrderRequest'
- type: object
required:
- EMSX_BROKER
properties:
EMSX_BROKER:
type: string
description: Broker code for routing
EMSX_STRATEGY:
type: string
description: Broker execution strategy name
EMSX_STRATEGY_PARAMS:
type: object
description: Strategy-specific parameters
additionalProperties: true
EMSX_EXEC_INSTRUCTIONS:
type: string
description: Execution instructions for the broker
CreateOrderAndRouteResponse:
type: object
properties:
EMSX_SEQUENCE:
type: integer
description: Unique order sequence number
example: 10
EMSX_ROUTE_ID:
type: integer
description: Unique route identifier
example: '500123'
MESSAGE:
type: string
example: example_value
ModifyOrderRequest:
type: object
required:
- EMSX_SEQUENCE
properties:
EMSX_SEQUENCE:
type: integer
description: Order sequence number to modify
example: 10
EMSX_AMOUNT:
type: integer
description: New order quantity
example: 10
EMSX_ORDER_TYPE:
type: string
enum:
- MKT
- LMT
- STP
- STP LMT
example: MKT
EMSX_LIMIT_PRICE:
type: number
example: 42.5
EMSX_STOP_PRICE:
type: number
example: 42.5
EMSX_TIF:
type: string
enum:
- DAY
# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bloomberg-aim/refs/heads/main/openapi/bloomberg-emsx-api.yml