This page provides information about upcoming changes to Coinbase Prime Broker.

PRIME API Upcoming Changes

Updating: This will be live in Q3 Added following fields to Prime Rest API:
  • Get Order By Order ID and List Portfolio Orders now supports:
    • raise_exact which will return a boolean indicating if an order is a raise exact order
    • display_base_size and display_quote_size which will return the display size in the order currency. If the order does not have a display size, the response will be empty.
  • Get Order Preview now supports:
    • raise_exact which will return a boolean indicating if an order is a raise exact order
    • display_base_size and display_quote_size which will return the display size in the order currency. If the order does not have a display size, the response will be empty.
    • stop_price for a Stop Limit order displayed in quote currency
  • List Order Fills and List Portfolio Fills now supports:
    • Add venue_fee which returns the venue fee in quote currency if the entity is enabled for cost-plus pricing.
    • Add CES_commission which will return the Client Execution Services commission of the trade.
Important: When using the above endpoints, please note the new parameter validation rules to avoid invalid argument errors:
  • If user enters both base_quantity and quote_value, an error will be thrown
  • If user enters base_quantity and display_quote_size, an error will be thrown
  • If user enters quote_value and display_base_size, an error will be thrown
  • If user enters both display_quote_size and display_base_size, an error will be thrown
Added following fields to Prime Websocket API:
  • Orders Channel now supports:
    • user_id which will return the unique user_id in each response
    • venue_fee which will return the venue fee in quote currency if entity is enabled for cost-plus pricing.
    • commission which will return the trading fee of the order.
    • CES_commission which will return the Client Execution Services commission of the trade.
  • Products Channel now supports:
    • price_increment
    • permissions which always returns PRODUCT_PERMISSION_READ and if the client can trade the product pair will also return PRODUCT_PERMISSION_TRADE
Added following fields to Prime FIX API:
  • Execution Report (8)
    • TimeInForce which will return the Time in force for the order
    • StopPrice for a Stop Limit order displayed in quote currency
    • MaxShow displays Maximum quantity within an order to be shown to other customers (Display Size). Only present on LIMIT orders.
    • FilledValue presents the sum of fills (inclusive of fees) in quote units of an order

Edit Orders via the API

Updating: This will be live in Q3 Currently we offer the ability to edit orders via the Prime UI. We’ll also be extending that support to the Prime APIs. You can edit an order via the REST API like: PUT /v1/:portfolio_id/orders/:order_id/edit
{
  "orig_client_order_id": "order-1",
  "client_order_id": "order-1-update-1",
  "base_quantity": "0.02"
}
Or via FIX 4.2 with the message type G (Order Cancel/Replace Request). Additional functionality:
  • You’ll also be able to see your edits via GET /v1/portfolios/:portfolio_id/orders/:order_id inside the edit_history field.
  • Not all order types or fields are editable, so consult this documentation.
  • In FIX 4.2, if you make an edit (via any of the APIs or UIs) you’ll see message type 8 (Execution Report) with ExecType: E (Pending Replace) and 5 (Replaced).
  • The orig_client_order_id in the edit is to ensure you are editing the version of the order you want to edit. It is the value of the current orders client_order_id. And the client_order_id passed into the edit is the new identifier for your order’s state. Both values need to be different.

FIX Market Data

Updating: This will be live in mid-August 2025 We will be adding level 2 market data on FIX 5.0 for Prime Trading Spot instruments. This includes OHLCV (Open, High, Low, Close, Volume), bids and offers, and trade history data. This will require a dedicated API key with READ permissions. Logon messages must conform to FIXT 1.1. The sole difference from the FIX 4.2 logon is the below tag specifying session version as FIX 5.0:
TagReqNameDescription
1137YDefaultApplVerIDMust be 9
Prime FIX API:
  • Server will support a new message type sent by the client: MarketDataRequest <V>
  • Server will send a new message type: MarketDataRequestReject <Y>
  • Server will send a new message type: MarketDataSnapshotFullRefresh <W>
  • Server will send a new message type: MarketDataIncrementalRefresh <X>

MarketDataRequest (V)

Sent by the client when placing a market data request
TagReqNameDescription
262YMDReqIDClient unique identifier for market data request
263YSubscriptionRequestType0 = Snapshot only
1 = Snapshot+Updates (Subscribe)
2 = Disable previous Snapshot+Update (Unsubscribe)
264YMarketDepth0 = Full depth (L2)
1 = Top of book
N>1 = Report best N price tiers of data
265NMDUpdateTypeRequired if SubscriptionRequestType <263> = 1:
0 = Snapshot+Updates
1 = Updates only
267YNoMDEntryTypesNumber of MDEntryType <269> fields requested
↳269YMDEntryType0 = Bid
1 = Offer
2 = Trade
4 = Open
5 = Close
7 = High
8 = Low
B = Volume
146YNoRelatedSymNumber of Symbols <55> requested
↳55YSymbolRepeating group of symbols for which the client requests market data

MarketDataRequestReject (Y)

Sent by the server in case the MarketDataRequest (V) fails
TagReqNameDescription
262YMDReqIDClient unique identifier for market data request
281YMDReqRejReasonSee MDReqRejReason table
58NTextUser friendly error message

MDReqRejReason

Possible values for MDReqRejReason (see MarketDataRequestReject (Y))
ValueDescription
0Unknown symbol
1Duplicate MDReqID
2Insufficient bandwidth
3Insufficient permission
4Invalid SubscriptionRequestType <263>
5Invalid MarketDepth <264>
6Unsupported MDUpdateType <267>
7Other
8Unsupported MDEntryType <269>

MarketDataSnapshotFullRefresh (W)

Sent by the server to view a new stream of market data information
TagReqNameDescription
262YMDReqIDClient unique identifier for market data request
55YSymbolThe trading pair from MarketDataRequest
268YNoMDEntriesNumber of market data updates in snapshot
↳269YMDEntryType0 = Bid
1 = Offer
2 = Trade
4 = Open
5 = Close
7 = High
8 = Low
B = Volume
↳278YMDEntryIDUnique identifier for this market data entry
↳83YRptSeqPublic sequence number for each entry in the snapshot by symbol
↳270NMDEntryPxPrice of the market data entry (Not present if MDEntryType = B)
↳271NMDEntrySizeVolume represented by the market data entry (Not present if MDEntryType = 4, 5, 7, or 8)
↳272YMDEntryDateDate of the market data entry
↳2446NAggressorSideIf MDEntryType = 2 (Trade), the side of the order:
1 = Buy
2 = Sell
↳273YMDEntryTimeTime of the market data entry

MarketDataIncrementalRefresh (X)

Sent by the server to view updates to an existing stream
TagReqNameDescription
262YMDReqIDClient unique identifier for market data request
55YSymbolThe trading pair from MarketDataRequest
268YNoMDEntriesNumber of market data updates in snapshot
↳279YMDUpdateActionType of entry update:
0 = NEW
1 = CHANGE
2 = DELETE
↳269YMDEntryType0 = Bid
1 = Offer
2 = Trade
4 = Open
5 = Close
7 = High
8 = Low
B = Volume
↳278YMDEntryIDUnique identifier for this market data entry
↳83YRptSeqPublic sequence number for each entry in the snapshot by symbol
↳270NMDEntryPxPrice of the market data entry (Not present if MDEntryType = B)
↳271NMDEntrySizeVolume represented by the market data entry (Not present if MDEntryType = 4, 5, 7, or 8)
↳272YMDEntryDateDate of the market data entry
↳2446NAggressorSideIf MDEntryType = 2 (Trade), the side of the order:
1=Buy
2=Sell
↳273YMDEntryTimeTime of the market data entry

Get Candle Data

Updating: This will be live in mid-July 2025 We will be adding a new GET endpoint to return candles of specified symbols. The request will require the following parameters:
{
  "product_id": "string",
  "start": "string", // Unix timestamp e.g 1596640920
  "end": "string", // Unix timestamp e.g 1596650920
  "granularity": "string"
}
And will have the following fields in the response body:
{
  "candles": [
    {
      "start": "string", // ISO 8601 timestamp format
      "open": "string",
      "high": "string",
      "low": "string",
      "close": "string",
      "volume": "string"
    }
  ]
}

Settlement Currency

Updating: This will be live in mid-July 2025 We are introducing support for specifying a settlement currency for orders. With this update, clients can access USD trading pairs using USDC positions, enabling them to buy with USDC balances and settle trades directly into USDC positions.
  • Updated Create Order with new optional parameter settl_currency.

RFQ Size in Quote

Updating: This will be live in July 2025 RFQ currently only support size in the base asset. We’ll be adding support to allow RFQs in the quote asset. To support this offering we’ll be deprecating the rfq_product_detail fields: min_notional_size and max_notional_size and introduce the new fields:
  • min_base_size
  • max_base_size
  • min_quote_size
  • max_quote_size
To rollout this change we’ll:
  1. start supplying the new rfq_product_detail fields values on all product endpoints and the websockets channel
  2. incrementally move users RFQ validation from just notional size to notional and min/max base/quote
  3. incrementally move users RFQ validation to just using min/max base/quote
  4. stop supplying values for notional size
  5. start supporting RFQ Size in Quote

Orders Edit History

Updating: This will be live in late-June 2025 We will be adding a new GET endpoint to return the edit history of an order. This will work for Limit, Stop Limit, TWAP, and VWAP order types. The request will require the following parameters:
{
  "portfolio_id": "string",
  "order_id": "string"
}
And will have the following fields in the response body:
{
  "order_id": "string",
  "order_edit_history": [
    {
      "price": "string",
      "size": "string",
      "display_size": "string",
      "stop_price": "string",
      "stop_limit_price": "string",
      "end_time": "string", // ISO 8601 timestamp format
      "accept_time": "string" // ISO 8601 timestamp format
    }
  ]
}
In the responses of existing endpoints designed for fetching orders, like /v1/portfolios/:portfolio_id/orders/:order_id, the new field order_edit_history will be added to the order payload:
{
  "order_id": "string",
  "product_id": "string",
  "size": "string",
  "price": "string",
  "side": "string",
  // ... other existing order fields
  "order_edit_history": [
    {
      "price": "string",
      "size": "string",
      "display_size": "string",
      "stop_price": "string",
      "stop_limit_price": "string",
      "end_time": "string", // ISO 8601 timestamp format
      "accept_time": "string" // ISO 8601 timestamp format
    },
    {
      "price": "string",
      "size": "string",
      "display_size": "string",
      "stop_price": "string",
      "stop_limit_price": "string",
      "end_time": "string", // ISO 8601 timestamp format
      "accept_time": "string" // ISO 8601 timestamp format
    }
  ]
}

Create Staking/Unstaking Transaction

Updating: This will be live in Late-April We will be adding new POST endpoints to create staking/unstaking transactions. These upcoming endpoints will initially support ETH only. Staking is a request to stake or delegate funds to a validator, and unstaking is a request to unstake delegated or staked funds in a wallet. The request requires the following parameters:
{
  "portfolio_id": "string",
  "wallet_id": "string",
  "body": {
    "idempotency_key": "string", // The idempotency key associated with this transfer
    "inputs": "object" // String map of inputs for the given action.
  }
}
The response will consist of the following:
{
  "wallet_id": "string",
  "transaction_id": "string",
  "activity_id": "string"
}

Get Portfolio Commission

Updating: This will be live in Mid-April We will be adding an optional query parameter to the REST API Get Portfolio Commission endpoint. This parameter will allow you to request commission rates for a specific product ID. The request will look like the following: Path Parameters
{
  "portfolio_id": "string"
}
Query Parameters
{
  "product_id": "string"
}
The response schema remains unchanged.

Prime Multinetwork Support

Updating: This will be live in Mid-March We will be adding a new “network” field that touches the following resources:
  • Transactions
  • Wallets
  • Deposit instructions
  • Balances
The “network” field will look like the following and will be used as an optional request or response parameter depending on whether the endpoint is a GET or POST:
{
  "id": "string", // The network ID like "ethereum" or "solana"
  "type": "string" // The network type like "mainnet"
}
Additionally, the Get Entity Assets endpoint is updated to return additional information about each network supported by every asset. The response for this endpoint is updated to include `network details”:
{
  "network_details": {
    "network": "object", // The network object as defined above
    "name": "string", // The name of the network like Ethereum or Solana
    "max_decimals": "string", // The maximum number of decimals for the asset on the network
    "default": "boolean", // Whether this is the default network for the asset
    "trading_supported": "boolean", // Whether trading is supported on the network
    "vault_supported": "boolean", // Whether vault is supported on the network
    "prime_custody_supported": "boolean", // Whether prime custody is supported on the network
    "destination_tag_required": "boolean", // Whether destination tag is required on the network
    "network_link": "string" // base url for the recommended block explorer for the network (crypto only)
  }
}
The complete list of endpoints that are updated for this feature can be found under the Changelog.

Create Onchain Transaction

Added: 2025-JAN-29 We will be adding a new endpoint to create onchain transactions. This POST endpoint will create a new onchain transaction for a given wallet ID. The request requires the following parameters:
{
  "portfolio_id": "string",
  "wallet_id": "string",
  "raw_unsigned_txn": "string", // Raw unsigned transaction in Hex format (Supports EVM and Solana)
  "rpc": {
    "skip_broadcast": "boolean", // If true, transaction will not be broadcast to the network
    "url": "string" // Custom blockchain node URL. Currently only supports Flashbots RPC endpoint for EVM mainnet
  },
  "evm_params": {
    "disable_dynamic_gas": "boolean", // Option to disable dynamic gas price adjustment
    "replaced_transaction_id": "string", // Transaction ID to replace (for speed-up/cancel operations)
    "chain_id": "string" // Chain ID for EVM transactions
  }
}
The response will consist of the following:
{
  "transaction_id": "string"
}

Update Onchain Address Group

Added: 2025-JAN-18 We will be adding a new endpoint to update a Prime Onchain Wallet address group. This PUT endpoint will replace the existing address group with the new address group. The request requires portfolio ID and address group as shown below:
{
  portfolio_id: string;
  address_group: {
    id;
    name;
    network_type;
    addresses: [{
      name;
      address;
      networks: [string];
    }]
  }
}
The response will consist of the following:
{
  "activity_type": "ACTIVITY_TYPE_ADDRESS_BOOK",
  "num_approvals_remaining": integer,
  "activity_id": string
}

List Onchain Address Groups

Added: 2024-DEC-17 We will be adding a new endpoint to list your onchain address groups. This GET endpoint will list all address groups for a given portfolio ID. The response will consist of the following:
{
  address_groups: [{
    id;
    name;
    network_type;
    added_at;
    addresses: [{
      name;
      address;
      chain_ids: [string]; // This will be empty for solana, * or list of chain IDs for EVM
    }]
  }]
}

Get FCM Risk Limits

Added: 2025-JUN-26 We will be adding a new endpoint to get the risk limits for a given portfolio ID. This GET endpoint will return the risk limits for the specified portfolio. The request requires the following parameters:
{
  "entity_id": "string",
}
The response will consist of the following:
{
  "cfm_risk_limit": "string",
  "cfm_risk_limit_utilization": "string",
  "cfm_total_margin": "string",
  "cfm_delta_ote": "string",
  "cfm_unsettled_realized_pnl": "string",
  "cfm_unsettled_accrued_funding_pnl": "string"
}

Get FCM Margin Call Details

Added: 2025-JUL-02 We will be adding a new endpoint to get the margin call details for a given entity ID. This GET endpoint will return a list of margin calls for the specified entity. The request requires the following parameters:
{
  "entity_id": "string"
}
The response will consist of the following:
{
  "margin_calls": [
    {
      "type": "enum", // "URGENT" or "REGULAR"
      "state": "enum",  // "CLOSED", "ROLLED_OVER", "DEFAULT", "OFFICIAL"
      "initial_amount": "string",
      "remaining_amount": "string",
      "business_date": "string", // UNIX timestamp e.g 1596640920
      "cure_deadline": "string"  // UNIX timestamp e.g 1596650920
    }
  ]
}