Skip to main content
These release notes list changes to Coinbase Prime Broker.

2025-OCT-23

Added new endpoint to preview unstake operations before execution. Prime Rest API:
  • Preview Unstake: POST /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/staking/unstake/preview - preview an unstaking request and see the estimated amount that would be unstaked
This endpoint allows you to preview unstaking operations before executing them, helping you understand the actual unstaking amount that will be processed. This feature currently only supports ETH. Request:
{
  "amount": "string"
}
Response:
{
  "estimated_amount": "string"
}

2025-OCT-23

Added Client Order ID (ClOrdID) idempotency across all prime trading surfaces (FIX, REST, & UI). Prime trading now enforces that ClOrdIDs are unique for 24hrs, for both open and closed orders. This change is scoped at the portfolio level. Consider the following scenario:
  1. Client places a NewOrderSingle (D) with ClOrdID (11) = "test-clordID-1"
  2. The order, "test-clordID-1" fills
  3. Client places another NewOrderSingle (D) with the same clordID (11) "test-clordID-1"
  4. This second order is rejected with the error message: "duplicate client order ID"
ClOrdID (11) idempotency continues to be enforced for open orders, scoped at the portfolio level.

2025-OCT-15

Added new security and permission features for API keys:
  • API Key Scopes – Set fine-grained permissions:
    • Endpoint-specific access (e.g., allow Get Wallet Balance but not Get Portfolio Balances)
    • Category-level READ/WRITE access (e.g., all READ order endpoints only)
    • Broad ALL READ / ALL WRITE access across categories
These scopes automatically apply to new endpoints as they are added, requiring no additional setup.

2025-OCT-10

Added new Cross Margin Overview API to get detailed overview for the Cross Margin product. REST Path: GET /v1/entities/<prime_entity_id>/cross_margin Example Response Structure:
{
    "overview": {
        "control_status": "TRADES_AND_WITHDRAWALS",
        "call_status": "ENTITY_NO_CALL",
        "margin_level": "HEALTHY_THRESHOLD",
        "margin_summary": {
            "margin_requirement": "0.00",
            "account_equity": "281.02",
            "margin_excess_shortfall": "281.02",
            "consumed_credit": "10.00",
            "xm_credit_limit": "4000.00",
            "xm_margin_limit": "0.00",
            "spot_equity": "-0.12",
            "futures_equity": "281.15",
            "risk_netting_info": {
                "nodal_margin_requirement": "0.00",
                "portfolio_margin_requirement": "0.00",
                "integrated_portfolio_margin_requirement": "0.00",
                "ineligible_futures_margin_requirement": "0.00",
                "position_margin_requirement": "0.00",
                "portfolio_margin_addon": "0.00",
                "integrated_position_margin_requirement": "0.00",
                "integrated_portfolio_margin_addon": "0.00",
                "netted_futures_notional": "0.00",
                "total_gmv_basis": "0.00",
                "ipm_cash_balance": "-0.12",
                "integrated_scenario_addon": {
                    "amount": "0.00",
                    "add_on_type": "SINGLE_COIN_STRESS"
                },
                "all_integrated_scenario_addons": [
                    {
                        "amount": "0.00",
                        "add_on_type": "SINGLE_COIN_STRESS"
                    },
                    {
                        "amount": "0.00",
                        "add_on_type": "CONCENTRATION_STRESS"
                    },
                    {
                        "amount": "0.00",
                        "add_on_type": "MACRO_STRESS"
                    },
                    {
                        "amount": "0.00",
                        "add_on_type": "SHORT_BIASED_STRESS"
                    }
                ],
                "xm_positions": [
                    {
                        "currency": "USDC",
                        "market_price": "1.00",
                        "margin_eligible": false,
                        "market_cap": "0.00",
                        "adv30_days": "0",
                        "hist5d_vol": "0",
                        "hist30d_vol": "0",
                        "hist90d_vol": "0",
                        "margin_requirement": "0",
                        "spot_balance": "-10.00",
                        "spot_balance_notional": "-10.00",
                        "spot_total_position_margin": "0.00",
                        "futures_balance": "0.00",
                        "futures_balance_notional": "0.00",
                        "futures_total_position_margin": "0.00",
                        "gmv_basis": "0.00",
                        "base_requirement": "0.00",
                        "liq_shorts_add_on": "0.00",
                        "liq_longs_add_on": "0.00",
                        "vol_shorts_add_on": "0",
                        "vol_longs_add_on": "0",
                        "vol5days_add_on": "0",
                        "vol30days_add_on": "0",
                        "vol90days_add_on": "0",
                        "total_position_margin": "0.00"
                    }
                ]
            }
        },
        "active_margin_calls": [
            {
                "margin_call_id": "ce5fbaef-d3da-4818-920c-9e855750b863",
                "currency": "USD",
                "initial_notional_amount": "32083.26",
                "outstanding_notional_amount": "32083.26",
                "margin_call_type": "CALL_TYPE_STANDARD",
                "margin_call_status": "CALL_STATUS_OPEN",
                "called_with_margin_level": "DEFICIT_THRESHOLD",
                "called_with_margin_summary": {
                    "margin_requirement": "0.00",
                    "account_equity": "281.02",
                    "margin_excess_shortfall": "281.02",
                    "consumed_credit": "10.00",
                    "xm_credit_limit": "4000.00",
                    "xm_margin_limit": "0.00",
                    "spot_equity": "-0.12",
                    "futures_equity": "281.15"
                },
                "due_at": "2025-09-25T12:05:02.880848Z",
                "created_at": "2025-09-25T00:05:02.880848Z",
                "updated_at": "2025-09-25T00:05:02.880848Z"
            }
        ],
        "active_loans": [
            {
                "loan_id": "0ceae6a1-7d4f-496a-92bb-6ff085a972c2",
                "loan_party": "CBE",
                "principal_currency": "USDC",
                "principal_currency_market_price": "1",
                "initial_principal_amount": "10",
                "outstanding_principal_amount": "10",
                "created_at": "2025-09-16T16:27:52.284368Z",
                "updated_at": "2025-09-25T00:05:02.880848Z"
            }
        ]
    }
}

2025-OCT-12

Added new GET endpoint to return candles of specified symbols. The request requires the following parameters: REST Path: GET /v1/portfolios/{portfolio_id}/candles
{
  "product_id": "string",
  "start": "string", // ISO 8601 timestamp e.g 2025-01-10T12:00:00
  "end": "string", // ISO 8601 timestamp e.g 2025-01-10T12:00:00
  "granularity": "string"
}
Response:
{
  "candles": [
    {
      "timestamp": "string", // ISO 8601 timestamp format
      "open": "string",
      "high": "string",
      "low": "string",
      "close": "string",
      "volume": "string"
    }
  ]
}

2025-JUL-02

Added new endpoint to get the margin call details for a given entity ID. This GET endpoint returns a list of margin calls for the specified entity. The request requires the following parameters:
{
  "entity_id": "string"
}
The response consists 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
    }
  ]
}

2025-JUN-26

Added new endpoint to get the risk limits for a given portfolio ID. This GET endpoint returns the risk limits for the specified portfolio. The request requires the following parameters:
{
  "entity_id": "string",
}
The response consists 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"
}

2025-Q3

Added following fields to Prime Rest API:
  • Get Order By Order ID and List Portfolio Orders now supports:
    • raise_exact which returns a boolean indicating if an order is a raise exact order
    • display_base_size and display_quote_size which returns the display size in the order currency. If the order does not have a display size, the response is empty.
  • Get Order Preview now supports:
    • raise_exact which returns a boolean indicating if an order is a raise exact order
    • display_base_size and display_quote_size which returns the display size in the order currency. If the order does not have a display size, the response is 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 returns 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 is thrown
  • If user enters base_quantity and display_quote_size, an error is thrown
  • If user enters quote_value and display_base_size, an error is thrown
  • If user enters both display_quote_size and display_base_size, an error is thrown
Added following fields to Prime Websocket API:
  • Orders Channel now supports:
    • user_id which returns the unique user_id in each response
    • venue_fee which returns the venue fee in quote currency if entity is enabled for cost-plus pricing.
    • commission which returns the trading fee of the order.
    • CES_commission which returns 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 also returns PRODUCT_PERMISSION_TRADE
Added following fields to Prime FIX API:
  • Execution Report (8)
    • TimeInForce which returns 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

2025-OCT-09

Added support for the Ethereum Pectra upgrade with significant enhancements to ETH staking functionality. Flexible Staking Amounts:
  • Stake any amount between 32 ETH and 180,000 ETH (not restricted to multiples of 32 ETH)
  • Minimum stake amount remains 32 ETH
  • Maximum stake amount per wallet: 180,000 ETH (100 validators × 1,800 ETH target size)
Enhanced Unstaking Capabilities:
  • Minimum unstake amount reduced from 32 ETH to 1 ETH
  • Partial unstaking now supports flexible amounts (not restricted to multiples of 32 ETH)
  • Validators with a balance less than 32 ETH will be automatically fully unstaked
New Claim Rewards API: Added new endpoint to claim staking rewards without unstaking. After the Pectra upgrade, validator rewards automatically compound and are claimed when you fully unstake. Use this endpoint to withdraw rewards independently. Prime Rest API:
  • Claim Rewards: POST /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/staking/claim_rewards - claim staking rewards
Request:
{
  "idempotency_key": "string",
  "inputs": {
    "amount": "string"  // Optional: Amount to claim (ETH only). If omitted, claims maximum available
  }
}
Response:
{
  "wallet_id": "string",
  "transaction_id": "string",
  "activity_id": "string"
}

2025-OCT-2

Added support for editing open LIMIT, ST0P-LIMIT, TWAP, or VWAP orders via REST and FIX

2025-SEP-16

RFQ now supports size in the base or quote asset. To support this offering we’ve be deprecated 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

2025-AUG-01

Added support for counterparty transfers via the Coinbase Transfer Network, enabling instant and fee-less transfers between Coinbase customers. Prime Rest API:
  • Get Portfolio Counterparty ID: GET /v1/portfolios/{portfolio_id}/counterparty - retrieve your portfolio’s unique counterparty ID for receiving transfers
  • Create Withdrawal now supports DESTINATION_COUNTERPARTY destination type for sending transfers to other Coinbase customers
Usage Examples:
  1. Get your portfolio’s counterparty ID:
Request:
{
  "portfolio_id": "11111111-1111-1111-1111-111111111111"
}
Response:
{
  "counterparty": {
    "counterparty_id": "CB12345678"
  }
}
  1. Send transfer to another portfolio:
Request:
{
  "portfolio_id": "11111111-1111-1111-1111-111111111111",
  "wallet_id": "22222222-2222-2222-2222-222222222222",
  "amount": "10",
  "destination_type": "DESTINATION_COUNTERPARTY",
  "idempotency_key": "33333333-3333-3333-3333-333333333333",
  "currency_symbol": "BTC",
  "counterparty": {
    "counterparty_id": "CB12345678"
  }
}
Response:
{
    "activity_id": "44444444-4444-4444-4444-444444444444",
    "approval_url": "https://prime.coinbase.com/portfolio/11111111-1111-1111-1111-111111111111/activity/44444444-4444-4444-4444-444444444444",
    "symbol": "BTC",
    "amount": "10",
    "fee": "",
    "destination_type": "Counterparty",
    "source_type": "BTC Trading Balance",
    "counterparty_destination": {
        "counterparty_id": "CB12345678"
    },
    "transaction_id": "55555555-5555-5555-5555-555555555555"
}

2025-JUL-29

Staking Solana (SOL) now enabled with validator address support. Prime Rest API:
  • Initiate Staking now supports optional validator_address parameter
    • For SOL staking only, optional validator_address must be the vote account address. Defaults to Coinbase validator when not specified.
  • Unstake input schema updated to exclude validator_address parameter (staking-only)
  • Updated amount parameter descriptions to specify “(ETH only)” behavior for both staking and unstaking

2025-JUL-22

Added support for Post-Only instructions on limit orders Prime Rest API: Prime FIX API:
  • Additional value for NewOrder (D): Support for Post-Only Orders
  • Tag 18 (ExecInst): A (Post-Only)
  • Supported TimeInForce values:
    • 6 = GTD (Good Till Date)
    • 1 = GTC (Good Till Cancel)
  • Notes
    • Post-Only orders (18=A) are now supported with TImeInForce values of GTD and GTC

2025-JUL-14

  • Added the following fields to Products and Products Channel for Websocket feed inside rfq_product_detail:
    • min_base_size The minimum the size can be when submitted in the base asset
    • max_base_size The maximum the size can be when submitted in the base asset
    • min_quote_size The minimum the size can be when submitted in the quote asset
    • max_quote_size The maximum the size can be when submitted in the quote asset

2025-JUN-18

  • Added support for Prime Limit Fill or Kill (FOK) order with size in quote order instructions.
    • FIX CashOrderQty(152) with TimeInForce(59) FILL_OR_KILL
    • REST create order quote_value with time_in_force FILL_OR_KILL

2025-APR-28

Added new POST endpoints to create staking/unstaking transactions. These endpoints 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 consists of the following:
{
  "wallet_id": "string",
  "transaction_id": "string",
  "activity_id": "string"
}

2025-APR-15

Added optional query parameter to the REST API Get Portfolio Commission endpoint. This parameter allows you to request commission rates for a specific product ID. The request looks like the following: Path Parameters
{
  "portfolio_id": "string"
}
Query Parameters
{
  "product_id": "string"
}
The response schema remains unchanged.

2025-JAN-18

Added new endpoint to update a Prime Onchain Wallet address group. This PUT endpoint replaces 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 consists of the following:
{
  "activity_type": "ACTIVITY_TYPE_ADDRESS_BOOK",
  "num_approvals_remaining": integer,
  "activity_id": string
}

2024-DEC-17

Added new endpoint to list your onchain address groups. This GET endpoint lists all address groups for a given portfolio ID. The response consists 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
    }]
  }]
}

2025-APR-7

  • Added the following field to Products and Products Channel for Websocket feed:
    • rfq_product_detail contains product details for placing RFQ orders, which includes the following sub-fields:
      • tradable determines if the product is tradable for RFQ
      • min_notional_size is the minimum notional size for RFQ orders
      • max_notional_size is the maximum notional size for RFQ orders

2025-MAR-27

Created API references for the following Prime endpoints

2025-MAR-24

2025-FEB-26

Added support for Request For Quote Prime Rest API: Prime FIX API:

2025-FEB-12

  • Updated the following endpoints to support the new network field for Prime Multinetwork Support:
    • List Assets, will return network_details for each asset supported by the entity
    • List Portfolio Transactions, will return the network field in the response if the transaction is onchain
    • List Wallet Transactions, will return the network field in the response if the transaction is onchain
    • Get Transaction by Transaction ID, will return the network field in the response if the transaction is onchain
    • Create Withdrawal, will take in optional network field as a request parameter and return the network field in the response if the withdrawal is onchain
    • List Portfolio Wallets, will return the network field in the response if the wallet is a vault wallet
    • Get Wallet by Wallet ID, will return the network field in the response if the wallet is a vault wallet
    • Create Wallet, will take in optional network field as a request parameter and return the network field in the response if the wallet is a vault wallet
    • Get Wallet Deposit Instructions, will take in the optional network field as a request parameter and return the network field in the response if the deposit instruction is onchain

2025-JAN-31

2024-JAN-17

  • Added FCM futures API series including

2024-DEC-17

2024-DEC-12

2024-DEC-05

Added product_id field to Orders Channel’s messages.

2024-OCT-18

Added support for filtered Level2 Data Channel by venue configuration for Websocket feed:
  • Updated L2_data channel request to include venue_filtering boolean.
  • Updated L2_data channel response to include venue_configuration for each product.

2024-OCT-15

2024-OCT-2

2023-NOV-20

Added support for Stop Limit orders:
  • Updated Create Order and Get Order Preview with order type STOP_LIMIT, a conditional order combined of stop order and limit order. The stop_price field is required for this new order type.
  • Added FIX Target Strategy Type SL for the new Stop Limit order and StopPx (99) to NewOrderSingle.

2023-OCT-31

2023-OCT-26

  • Updated Create Order and Get Order Preview with new parameter called historical_pov that estimates participation rate for a TWAP/VWAP order. Can be specified instead of expiry time.

2023-SEP-11

  • Updated FIX tag TargetStrategy (847) by adding Immediate or Cancel (IOC) support to NewOrderSingle LIMIT orders.

2023-SEP-08

Added endpoints to support Net Allocations:

2023-AUG-28

2023-AUG-10

Updated List Open Orders:
  • Fixed query parameters order_type, order_side, sort_direction, start_date, and end_date which can again be used to filter orders.
  • Deprecated query parameters limit, and cursor.
  • Deprecated field pagination from response payload.

2023-AUG-08

2023-JUL-25

  • Updated FIX TimeInForce (59) with support for Fill or Kill (FOK).

2023-JUN-29

Added volume-weighted average price trading (VWAP):

2023-MAR-17

Added 2 new response properties to Get Portfolio credit Information:
  • adjusted_credit_utilized
  • adjusted_portfolio_equity

2023-MAR-09

  • Enabled Replay for all FIX clients.

2023-FEB-10

  • Added FIX tag IsRaiseExact (8999) to NewOrderSingle messages for all order types (LIMIT, MARKET, TWAP).

2023-JAN-24

2022-NOV-09

  • Fixed WebSocket bug whereby clients subscribed to Orders Channels could receive updates from product IDs different from the ones provided in subscription message.

2022-OCT-19

Updated WebSocket:
  • Improved performance of server’s resource usage.
  • Added new time formatting definition fields, timestamp and event_time.

2022-SEP-02

Added 3 new response properties to Get Portfolio Allocations:
  • allocation_completed_at
  • order_ids
  • fees_allocated_leg of destination level

2022-AUG-12

Added new endpoint List Portfolio Allocations returns a list of allocations.

2022-AUG-10

  • Updated List Open Orders, List Portfolio Orders:
    • Users can now filter by a new order_type called: BLOCK
    • Added a new possible value BLOCK to the field type, which refers to a block trade
  • Updated Get Order by Order ID:
    • Added a new possible value BLOCK to the field type, which refers to a block trade

2022-JUL-27

  • Updated List Open Orders, Get Order by Order ID, and List Portfolio Orders:
    • Users can now see a field exchange_fee, populated when the order was placed with a COST_PLUS commission configuration.
  • Added the following fields to List Portfolio Balances, Get Wallet Balance:
    • bonded_amount is the amount currently locked due to bonding/staking, potentially subject to an unbonding period, in whole units
    • reserved_amount is the amount that must remain in the wallet due to the protocol, in whole units
    • unbonding_amount is the amount that is in the process of unbonding, in whole units
    • unvested_amount is the unrealized amount subject to a vesting schedule, in whole units
    • pending_rewards_amount is the pending bonding/staking rewards that have not yet been realized, in whole units
    • past_rewards_amount is the previously realized bonding/staking rewards, in whole units
    • bondable_amount is the amount available for bonding/staking, in whole units

2022-JUL-01

Added support for conversions:

2022-JUN-08

2022-MAY-19

2022-APR-22

  • Updated List Portfolio Orders:
    • The product_ids parameter is no longer required. If not specified you get all products.
    • The 31 day limit has been removed so you can now request orders for any time period using start_date and end_date. The end_date parameter is still optional, but if not specified you get orders from start_date to the end of time. Previously, it returned start_date to start_date + 31 days.
  • Updated List Open Orders:
    • The product_ids parameter is no longer required. If not specified you get all products.
    • All other query params are currently non-functional and result in an error if used. This includes: order_type, cursor, limit, sort_direction, start_date, order_side, and end_date.
    • The maximum number of orders returned is 1000. If a client has more than 1000 open orders, an error is returned prompting the user to use WebSocket API, or FIX API to stream open orders.

2022-APR-07

  • Added the has_next boolean field to the pagination field in the response body. The has_next field indicates if there is more data available to paginate through.
  • Removed the total_result_count field has been removed from the pagination field in the response body.

2022-MAR-24

Added:
  • Create Withdrawal is now available to request new withdrawal transactions from a portfolio wallet.
  • Create Transfer is now available to request new transfers between portfolio wallets.

2022-MAR-19

Added:

2022-MAR-07

Added:

2022-FEB-15

Fixed:

2022-JAN-31

Added:

2022-JAN-19

Fixed: Additions:
  • The fields transfer_from and transfer_to now appear in the Transaction resource for withdrawals and deposits.
  • External address deposit information is now included in the Transaction resource response.

2022-JAN-15

Additions:
  • For deposits and withdrawals to bank accounts, the payment method associated with that bank account now appears in the Transaction response as the transfer_from and transfer_to type.
  • Added non-balance impacting transaction types to List Portfolio Transactions.

2021-DEC-15

  • Welcome to the Coinbase Prime REST API.
I