Skip to main content

Upcoming Changes

This section provides release details and dates for upcoming changes.

WRAPPED ASSETS

2023-JAN-13

This week, we will make a breaking change to Get all wrapped assets. Specifically, GET /wrapped-assets/ will return a list of json objects instead of a list of strings.

FIX MARKET DATA

2023-JAN-13

In the coming weeks, we will release a new FIX Market Data Gateway based on the FIX 5.0 SP2 specification. It is currently available for testing at:

info

Sandbox URL: tcp+ssl//fix-md.sandbox.exchange.coinbase.com:6121

This new offering provides an L3 feed only with direct, low-latency, deterministic access. Users must connect with the same authentication as our existing FIX order-entry system.

A standard header must be present at the start of every message in both directions.

TagFieldNameTypeRequiredNotes
8BeginStringStringYMust be FIXT.1.1
49SenderCompIDStringYClient API key (on messages from the client)
56TargetCompIDStringYMust be Coinbase (on messages from client)

Logon (35=A)

TagFieldNameTypeRequiredNotes
34MsgSeqNumIntYMust be 1
98EncryptMethodIntYMust be 0 (None)
108HeartBtIntIntYHeartbeat interval is capped at 300s, defaults to 10s
553UsernameStringYAny string is accepted
554PasswordStringYClient API passphrase
95RawDataLengthIntYNumber of bytes in RawData field
96RawDataStringYClient message signature
1137DefaultApplVerIDStringYMust be 9 (FIX 5.0 SP2)

Market Data Request (35=V)

Clients should use this message to subscribe to or unsubscribe from market data for one or more symbols.

TagFieldNameTypeRequiredNotes
262MDReqIDStringYClient identifier for the market data request
263SubscriptionRequestTypeIntY1=Subscribe
2=Unsubscribe
146NoRelatedSymIntYHow many symbols are in the request
=>55SymbolStringYRepeating group of symbols for which the client requests market data

Market Data Request Reject (35=Y)

This message is sent to clients to reject an invalid market data request.

TagFieldNameTypeRequiredNotes
262MDReqIDStringYClient identifier for the market data request
281MDReqRejReasonCharY0=Unknown symbol
1=Duplicate MDReqID
7=Other
58TextStringNError description

Security Status (35=f)

This message is streamed to clients together with the incremental updates for subscribed symbols and reflects changes in the trading status, tick size, or other attributes of an instrument.

TagFieldNameTypeRequiredNotes
262MDReqIDStringYClient identifier for the market data request
83RptSeqLongYPublic sequence number by symbol
55SymbolStringYRepeating group of symbols for which the client requests market data
1682MDSecurityTradingStatusStringYtrading_disabled
cancel_only
post_only
limit_only
full_trading
auction_mode
969MinPriceIncrementDecimalYMinimum increment for quote currency (e.g., 0.01 USD for BTC-USD)
29003MinSizeIncrementDecimalYMinimum increment for base currency (e.g., 0.00000001 BTC for BTC-USD)

Market Data Incremental Refresh (35=X)

Coinbase Exchange not only sends out L3 order-by-order updates to allow clients to build a full book of all open orders, but also sends out acknowledgements of orders by the matching engine with the order’s client order ID prior to matching. This helps clients immediately identify which orders and trades in the book (both aggressive and passive) are theirs, as well gain advance knowledge of orders that are pending processing by the matching engine. These acks correspond to the Received message in the web-socket feed.

  • When MDEntryID is present, the message should be used for book-building.
  • When MDEntryID isn’t present, the message is the acknowledgement of an order prior to matching.
TagFieldNameTypeRequiredNotes
262MDReqIDStringYClient identifier for the market data request
268NoMDEntriesIntYAlways 1
=>279MDUpdateActionCharY0=New
1=Change
2=Delete
=>269MDEntryTypeCharY0=Bid
1=Offer
2=Trade
=>278MDEntryIDStringNIf present, this ID is the order ID that should be used for book-building
If not present, this message is the initial ack and should not be used to build the book
=>83RptSeqLongYPublic sequence number by symbol
=>55SymbolStringYRepeating group of symbols for which the client requests market data
=>270MDEntryPxDecimalYThe price of the order
=>271MDEntrySizeDecimalYThe quantity remaining of the order
=>60TransactTimeUTCTimestampYThe engine timestamp of the order in microseconds
=>40OrdTypeCharNSent only if the message represents the initial ack of an order:
1=Market
2=Limit
=>11ClOrdIDStringNThe client order ID on the initial ack of an order
=>37OrderIDStringNThe exchange order ID on the initial ack of an order
OR
If MDEntryType=2, then this is the aggressive Order ID
=>5797AggressorSideIntNSent only on trades MDEntryType=2
1=Buy
2=Sell
=>58TextStringNIf MDEntryType=1, then the possible values are:
CHANGE_REASON_STP
CHANGE_REASON_MODIFY_ORDER
CHANGE_REASON_REMAINDER_AFTER_MODIFICATION
If MDEntryType=2, then the possible values are:
CANCELED
FILLED

Market Data Snapshot Full Refresh (35=W)

This message provides a full snapshot of all orders in the order book, including those placed before the client subscribed to incremental market data.

A snapshot is requested automatically when a successful Market Data Request from the client is processed for a given symbol. Clients should queue up incremental updates and process only the incremental updates with sequence number RptSeq greater than the RptSeq in the initial MD Snapshot Full Refresh snapshot message.

If clients are already subscribed to a symbol and send another Market Data Request to subscribe, they will not receive a new snapshot for that symbol. Clients must unsubscribe and subscribe to the market data again for a given symbol to receive a new snapshot.

TagFieldNameTypeRequiredNotes
262MDReqIDStringYClient identifier for the market data request
83RptSeqLongYPublic sequence number for the final update in the snapshot by symbol
893LastFragmentCharYIs this the last message in the snapshot for a given symbol
Y=Yes
N=No
55SymbolStringYRepeating group of symbols for which the client requests market data
268NoMDEntriesIntYNumber of orders to be added to the book in this snapshot message
=>269MDEntryTypeCharY0=Bid
1=Offer
=>278MDEntryIDStringYThe order ID that should be added to the book
=>270MDEntryPxDecimalYThe price of the order
=>271MDEntrySizeDecimalYThe quantity remaining of the order
=>1682MDSecurityTradingStatusStringYtrading_disabled
cancel_only
post_only
limit_only
full_trading
auction_mode

Security List Request (35=x)

This message is sent by clients to request a full list of instruments that Coinbase Exchange supports together with each instrument’s trading status, tick size, minimum order quantity, and any other descriptive fields.

TagFieldNameTypeRequiredNotes
320SecurityReqIDStringYClient identifier for the request
559SecurityListRequestTypeIntYAlways 4=All Securities

Security List (35=y)

Instrument definition messages are returned in response to a client’s Security List Request.

TagFieldNameTypeRequiredNotes
320SecurityReqIDStringYClient identifier for the request
322SecurityResponseIDStringYResponse ID for the Security List Request
560SecurityRequestResultIntY0=Valid Request
1=Invalid Request
893LastFragmentCharYIs this the last instrument definition message in response to the original request
Y=Yes
N=No
393TotNoRelatedSymIntYTotal number of symbols that will be sent cumulatively
146NoRelatedSymIntYHow many symbols are in this FIX message
=>55SymbolStringYRepeating group of symbols for which the client requests market data
=>15CurrencyStringYThe quote currency for the symbol (e.g., USD if 55=BTC-USD)
=>562MinTradeVolDecimalYThe minimum notional amount in quote currency terms for an order
=>1682MDSecurityTradingStatusStringYtrading_disabled
cancel_only
post_only
limit_only
full_trading
auction_mode
=>969MinPriceIncrementDecimalYMinimum increment for quote currency (e.g., 0.01 USD for BTC-USD)
=>29003MinSizeIncrementDecimalYMinimum increment for base currency (e.g., 0.00000001 BTC for BTC-USD)

Was this helpful?