GET https://api.exchange.coinbase.com/conversions
trade_id
has been added to the RFQ Matches Channel.
VAR::FIX_URL_SAND_MARKET_DATA_FIVE_SNAPSHOT_FREE
VAR::FIX_URL_PROD_MARKET_DATA_SNAPSHOT_FREE
MANAGE
start_date
nor end_date
is set, the endpoint returns ledger activity for the past 1 day only.
GET https://api.exchange.coinbase.com/users/{user_id}/trading-volumes
exchange_withdraw
, from Get user exchange limits:
rfq_volume_24hour
conversions_volume_24hour
rfq_volume_30day
conversions_volume_30day
fee_amount
to existing endpoint, /conversions response.
display_name
to:
details
object as originally planned).currencies
object.account_ids
to the WebSocket subscriptions message, in support of the Balance Channel. Users not subscribing to this channel can ignore this field.
subscribe
message includes the new field, account_ids
.
:::
LeavesQty
and CumQty
are now additionally populated in the Execution Report when OrdStatus
is New or Replaced. In sum, they populate it when:
39=0
⇒ OrdStatus = New39=1
⇒ OrdStatus = Partially filled39=3
⇒ OrdStatus = Done for day39=5
⇒ OrdStatus = ReplacedAvgPx
only populates Execution Report if CumQty > 0.
OrderQty
now represents the original order quantity when OrdStatus
is Canceled or Done for day.
POST
request:
travel_rule_data
: Data necessary to satisfy Travel Rule data requirements.is_intermediary
: Flag to create transfer with Coinbase as intermediary VASP.
true
, intermediary_jurisdiction
must be provided.travel_rule_data
may be necessary if the jurisdiction requires data.intermediary_jurisdiction
: Jurisdiction (ISO 3166-1 alpha-2) for Travel Rule data validation.GET https://api.exchange.coinbase.com/loans
GET https://api.exchange.coinbase.com/loans/assets
GET https://api.exchange.coinbase.com/loans/lending-overview
GET https://api.exchange.coinbase.com/loans/loan-preview
POST https://api.exchange.coinbase.com/loans/open
GET https://api.exchange.coinbase.com/loans/options
POST https://api.exchange.coinbase.com/loans/repay-principal
GET https://api.exchange.coinbase.com/loans/repayment-preview
DropCopyFlag
by default by setting 9406=N
(from Y). See Logon (A).
To ensure a session continues to receive Drop Copy reports, explicitly enable DropCopyFlag
by setting 9406=Y
. See Drop Copy Session in Best Practices for more.
:::note
Previously, DropCopyFlag
was enabled by default in FIX 4.2. (It was always disabled in FIX 5.0).
:::
destination_tag_regex
field to the supported_networks
of the currencies
object in Status message
vasp_id
or is_verified_self_hosted_wallet
must be provided when creating address book entries.
GET https://api.exchange.coinbase.com/travel-rules
POST https://api.exchange.coinbase.com/travel-rules
DELETE https://api.exchange.coinbase.com/travel-rules/{travel_rule_id}
POST https://api.exchange.coinbase.com/transfers/{transfer_id}/travel-rules
POST https://api.exchange.coinbase.com/address-book
CashOrderQty
or OrderQty
can be included on the order, not both.size
or funds
can be included on the order, not both.137
match what is available on the REST endpoint./rfq/products
(unauthenticated) returns all currently supported and eligible RFQ product pairs and their associated fee rates (maker_fee_bps
), plus additional metadata.MANAGE
API key permission type to manage user settings and preferences.
POST https://api.exchange.coinbase.com/address-book
DELETE https://api.exchange.coinbase.com/address-book/{address_book_id}
Tag | Name | Description |
---|---|---|
7 | BeginSeqNo | Sequence number of first message in range to be resent |
16 | EndSeqNo | Sequence number of last message in range to be resent |
POST https://api.exchange.coinbase.com/users/{user_id}/settlement-preferences
POST https://api.exchange.coinbase.com/wrapped-assets/stake-wrap
GET https://api.exchange.coinbase.com/wrapped-assets/stake-wrap
GET https://api.exchange.coinbase.com/wrapped-assets/stake-wrap/{stake_wrap_id}
apy
field to Get Wrapped Asset Details.
Implied APY is the current annualized percentage yield earned as the net rewards by the staked ETH underlying cbETH. This estimate is based on the past 7 days of staking performance and is updated daily. For more details, refer to the “rate calculation” section of the cbETH whitepaper.
time
property that denotes the last time our system processed an update.
REST API
Get product book now returns time
as a property when passing in “level=L1” / “level=L2” / “level=L3” on the /products/{product_id}/book/
endpoint.
Websocket API
Level2 Channel now includes the time
property on the level2 snapshot message.
client-oid
was removed from the unauthenticated Full Channel Received message.
The client-oid
field will still be available in the authenticated Full Channel, and also the User Channel (which also requires authentication). You can only see your own client-oid
.
ExecID (Tag=17)
. ExecID
will now be consistent across sessions for the same underlying Execution Report. This should allow users the ability to join Execution Reports between their trading session and their drop-copy session for the same profile ID.
tcp+ssl//fix-md.sandbox.exchange.coinbase.com:6121
tcp+ssl//fix-md.exchange.coinbase.com:6121
:::ExpireTime
to Quote Request (R) and Quote Status Report (AI).
high_bid_limit_percentage
field to our products endpoint.
As described in our Trading Rules, the High Bid Limit (HBL) order control limits how high a Buy Limit Order can be filled based on the last sale price or the current best bid price.
Currently, the High Bid Limit is calculated as follows:
high_bid_limit_percentage
if the current best bid price is < 95% of the last execution execution.high_bid_limit_percentage
otherwise.high_bid_limit_percentage
field of our /products endpoint.
For example, the following value represents a 3% high bid limit.
GET /wrapped-assets/
now returns a list of json objects instead of a list of strings.
/wrapped-assets/{wrapped_asset_id}/
Get Wrapped Asset Details returns the following properties:
circulating_supply
: Customer held wrapped assets, not pre-minted or held in abeyance.total_supply
: Wrapped assets that have been minted and exist on-chain.conversion_rate
: Underlying staked units that can be exchanged for 1 wrapped asset.https://api-public.sandbox.exchange.coinbase.com/wrapped-assets/CBETH/
market_type
query parameter.rfq-fills
, can be used to generate reports for RFQ fills.ws-direct
becomes your primary connection, we recommend using the existing ws-feed
as a failover connection.
Coinbase Direct Market Data endpoint: wss://ws-direct.exchange.coinbase.com
market_type
, in preparation for the upcoming Request For Quote (RFQ) feature.
best_bid_size
and best_ask_size
.
1
. Any other value is rejected.
exchange.coinbase.com/profile/statements
.
The Balance Report API:
/reports
endpoint.balance
.balance
object to the request with datetime
(and group_by_portfolio_id
for the UI only)."type"="balance"
).reason
field to the WebSocket Full Channel Change message:
"reason":"STP"
for Self-Trade Prevention message"reason":"modify_order"
for Modify Order Request (See 2022-JUN-27 entry for more.)network
field was added for select endpoints and in the UI. Affected API endpoints are:
/withdrawals/crypto
accepts an optional network parameter as part of its POST
request parameters.
This parameter designates which network the currency will be sent on. For example, if the user withdraws USDC on Solana or Ethereum, the withdrawal address is validated against the network, the appropriate fee is calculated based on the network, and the currency is sent over the network. If no network is specified in the POST
request, the default network (Ethereum) is used.
/address-book
validates new addresses against all supported networks for the currency.
/address-validation
accepts an optional network
parameter in the address_info
object or source
parameter in the body as part of its POST
request parameters.
The address validator uses the network
parameter to verify that the address is valid for the designated network. If no network
is specified in the POST
request, the default network is used.
The source
parameter currently only accepts the value address_book
. When source
has the value address_book
, the address is validated against all supported networks for the currency.
API Parameter | Description |
---|---|
base_max_size | Base order size max (limit orders) |
base_min_size | Base order size min (limit orders) |
max_market_funds | Quote order size max (market orders) |
new_price
, old_price
, reason
).
:::info
Modify Order Requests that amend size down will retain queue priority in the Exchange order book.
:::
FIX API
Example FIX Request:
Tag | Name | Description |
---|---|---|
37 | OrderID | Unique identifier of most recent order as assigned by broker |
41 | OrigClOrdID | ClOrdID <11> of previous order (NOT initial order of the day) when canceling or replacing an order |
11 | ClOrdID | Unique identifier of replacement order as assigned by institution. |
55 | Symbol | Must match original order |
54 | Side | Must match original side |
38 | OrderQty | Total Intended Order Quantity (including the amount already executed for this chain of orders) |
60 | TransactTime | Time this order request was initiated/released by the trader or trading system |
40 | OrdType | Only limit orders are supported for now (2) |
44 | Price | Price per share |
new_price
, old_price
, and reason
are being added. (The reason
field was added on 2022-AUG-16.
:::
min_market_funds
, to represent this value.API Parameter | Description |
---|---|
base_max_size | Base order size max (limit orders) |
base_min_size | Base order size min (limit orders) |
max_market_funds | Quote order size max (market orders) |
/deposits/coinbase-account
now returns a 403
when called from a Coinbase Pro account.
All other payment methods into Coinbase Pro remain the same and Coinbase Exchange is not affected.
cancel_reason
field for authenticated messages by the user, accessible in the Full and User channels.Recommend | Length | Cipher Suite | Elliptic Curve |
---|---|---|---|
Preferred | 128 bits | ECDHE-RSA-AES128-GCM-SHA256 | Curve P-256 DHE 256 |
Accepted | 128 bits | ECDHE-RSA-AES128-SHA256 | Curve P-256 DHE 256 |
Accepted | 256 bits | ECDHE-RSA-AES256-GCM-SHA384 | Curve P-256 DHE 256 |
Accepted | 256 bits | ECDHE-RSA-AES256-SHA384 | Curve P-256 DHE 256 |
cumQty
, leaveQty
, AvgPx
t
in ticker
.https://api.exchange.coinbase.com/orders?product_id=BTC-USD&sortedBy=created_at&sorting=desc&limit=100
is valid as the the URL is lowercase. Query parameters such as product_id
can have values with capitals. However https://api.exchange.coinbase.com/Orders?product_id=BTC-USD&sortedBy=created_at&sorting=desc&limit=100
would be invalid as the O
in /Orders
is not the same URL as specified in its docs.GET
and POST
responses for the /orders
endpoint will return client order id as client_oid
if exists.GET /products/<product-id>/book
endpoint.GET /orders
, GET /orders/<id>
, and GET /orders/client:<client_oid>
APIs. See List Orders
documentation for more details. Orders with non-pending statuses will be unaffected by this change.DELETE /orders/client:<client_oid>
.GET /fills
endpoint.exchange.coinbase.com
from prime.coinbase.com
.Product | Old URL | New URL |
---|---|---|
Website | https://prime.coinbase.com | https://exchange.coinbase.com |
REST API | https://api.prime.coinbase.com | https://api.exchange.coinbase.com |
FIX API | tcp+ssl://fix.prime.coinbase.com:4198 | tcp+ssl://fix.exchange.coinbase.com:4198 |
Web Socket API | wss://ws-feed.prime.coinbase.com | wss://ws-feed.exchange.coinbase.com |
Product | Old URL | New URL |
---|---|---|
Website | https://public.sandbox.prime.coinbase.com | https://public.sandbox.exchange.coinbase.com |
REST API | https://api-public.sandbox.prime.coinbase.com | https://api-public.sandbox.exchange.coinbase.com |
FIX API | tcp+ssl://fix-public.sandbox.prime.coinbase.com:4198 | tcp+ssl://fix-public.sandbox.exchange.coinbase.com:4198 |
Web Socket API | wss://ws-feed-public.sandbox.prime.coinbase.com | wss://ws-feed-public.sandbox.exchange.coinbase.com |
/fills
custom rate limit.HandlInst
in API FIX is no longer required.max_withdrawal_amount
field in the /currencies
endpoint.min_market_funds
, max_market_funds
fields in the /products
endpoint./users/self/exchange-limits
. Refer to the Limits API for more information.ClOrdID
, if it is supplied, even if the order isn’t found.taker_fee_rate
.