---
title: "Setup Market Maker Protection (MMP)"
method: POST
path: "/v2/mmp-configuration"
tags: ["market-maker-protection"]
---

# Setup Market Maker Protection (MMP)

`POST /v2/mmp-configuration`

## Request

- Base URL: `https://api.exchange.bullish.com/trading-api`
- URL: `https://api.exchange.bullish.com/trading-api/v2/mmp-configuration`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/bullish/apis/bullish-trading-api/docs/v2/mmp-configuration/post.ts> (a function with typed inputs; its response is checked against the schema)

MMP configurations are setup per underlying asset symbol for a specific trading Account. While setting up MMP configurations you can specify `windowTimeInSeconds`, `frozenTimeInSeconds`, `quantityLimit` and `deltaLimit` and use it as best suited.
Please reach out to your relationship manager to understand how to enable MMP for your trading accounts.

- To get updates on the status of your set / reset MMP configs request for an underlying asset symbol over WS, please subscribe to `mmpRequest` TOPIC within the [Private Data WebSocket](/websocket/private/private-data).
- To get updates about MMP triggered event over WS, please subscribe to the `mmpTriggered` TOPIC within the [Private Data WebSocket](/websocket/private/private-data).

To update/amend your MMP configs, please use the ResetMMPCommandV1 to reset the MMP configurations, followed by setting up a new MMP config via setMMPCommandV1 per underlying asset symbol.

Notes: 
- MMP is only applicable for Options [Orders created](/rest/api/create-order-v-2) with the `isMMP` flag set to `true`.
- ResetMMPCommandV1 will trigger only when there are no `isMMP=true` open orders on the account

## Headers

- `BX-SIGNATURE` string, required
- `BX-TIMESTAMP` string, required
- `BX-NONCE` string, required

## Request body

- union
  - SetMMPCommandV1
    - `commandType` 'V1SetMMP', required: the command type must be provided as 'V1SetMMP'
    - `tradingAccountId` string, required: unique trading account ID
    - `underlyingAssetSymbol` string, required: the underlying asset symbol that is configured for MMP checks
    - `windowTimeInSeconds` string, required: time window during which the MMP checks are conducted. It helps in determining how frequently the system evaluates the market maker's activity against predefined thresholds. Value needs to be `> 0`. Maximum value is 600 seconds (10 minutes).
    - `frozenTimeInSeconds` string, required: the duration for which a market maker's trading activity is temporarily halted after a protective measure is triggered. Value needs to be `>= 0`. Maximum value is 3600 seconds (60 minutes).
    - `quantityLimit` string: cap on the total number of contracts that a market maker can trade within `windowTimeInSeconds`. This is direction(side) agnostic. Needs to be `> 0` if set.
    - `deltaLimit` string: net delta exposure that a market maker can accumulate within `windowTimeInSeconds`
  - ResetMMPCommandV1
    - `commandType` 'V1ResetMMP', required: the command type must be provided as 'V1ResetMMP'
    - `tradingAccountId` string, required: unique trading account ID
    - `underlyingAssetSymbol` string, required: the underlying asset symbol that is configured for MMP checks

## Response `200`

Status OK. This means a command was successfully acknowledged.

- union
  - SetMMPCommandResponse
    - `message` string, required: message
    - `requestId` string, required
  - ResetMMPCommandResponse
    - `message` string, required: message
    - `requestId` string, required

## Other responses

- `400`: Bad Request
- `401`: Not Authenticated
- `403`: Access Forbidden
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/bullish/apis/bullish-trading-api.md) - [All operations](https://skmtc.dev/bullish/apis/bullish-trading-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bullish/apis/bullish-trading-api/revisions/df5d69ccedcf?raw)
