Drop Copy Message Types
The Coinbase Derivatives: Predictions Drop Copy FIX API supports the following message and execution types. For Logon, heartbeats, sequence recovery, and fill recovery, see Session.Client Message Types
Client Message Types
- LastExecIDRequest (35=F1): Requests the last ExecID sent for your scope.
- EventResendRequest (35=F3): Requests a resend of fills in an ExecID range.
System Message Types
System Message Types
- ExecutionReport (35=8): Order and trade events.
- PendingNew (150=A): Order accepted and held before it is submitted to the book.
- New (150=0): Order submitted to the book.
- Trade (150=F): Complete and partial fills.
- Canceled (150=4): Order canceled by request or by the exchange.
- Expired (150=C): Order expired, including unfilled Fill or Kill orders.
- Rejected (150=8): Order rejected.
- MarketSettlementReport (35=UMS): Firm position settlement for an instrument.
- LastExecID (35=F2): Response to
LastExecIDRequest. - EventResendComplete (35=F4): Sent after the last resent fill.
- EventResendReject (35=F5): Rejection of an
EventResendRequest. - BusinessMessageReject (35=j): Rejection of a malformed or unsupported application message.
Session Message Types
Session Message Types
Logon (35=A), Logout (35=5), Heartbeat (35=0), TestRequest (35=1), ResendRequest (35=2), Reject (35=3), and SequenceReset (35=4). See Session.
Connection
Connect withTargetCompID (56) = CBPMDC and your API key in SenderCompID (49). The API key must have the DROP_COPY permission. Host and port are listed on the Coinbase Derivatives: Predictions Connectivity page. Header fields are on Header/Trailer. Logon, the Logon signature, heartbeats, and sequence recovery are on Session.
TransactTime (60) is a UTC timestamp with microsecond precision.
Subscription scope
Each session receives reports for one scope, set by the level of its API key:- Every connected session in a scope receives the same reports.
- Each fill produces separate aggressor and resting reports. You receive each side that belongs to your scope; a trade between two orders in your scope sends you both reports.
- Recovery requests (LastExecIDRequest and EventResendRequest) are answered from your scope, not from your session.
The gateway ends a live session when its authorization no longer holds: the API key is disabled or deleted, it loses the
DROP_COPY permission, or its firm or FCM is deactivated, deleted, or reassigned. The gateway also ends the session if it sends any message after its authorization is revoked.Parties repeating group (453)
Every execution report carries five Parties entries, in this order.
PartyIDSource (447) is not sent.
ExecutionReport (35=8)
Reject reasons map toOrdRejReason (103) and Text (58) the same way as on order entry execution reports.
- ExecID (17) is a decimal integer that increases over time across all reports in a scope. Values are not contiguous. The aggressor report of a fill has an even ExecID and the resting report has the next odd value; every other report has an even ExecID.
- Prices have 3 decimal places, quantities 2, and fee and payout amounts 6. Insignificant trailing zeroes may be omitted, so
0.55and0.550are the same price.
PendingNew (150=A)
Sent when the exchange accepts an order and holds it before submitting it to the book.New (150=0)
Sent when an order is submitted to the book. Carries the same fields as PendingNew (150=A), with these values:Trade (150=F)
Sent for each fill. Each fill produces one report for the aggressor order and one for the resting order, which shareTrdMatchID (880).
Canceled (150=4)
Sent when an order is canceled by a cancel request, a mass cancel, or the exchange. Most fields match PendingNew (150=A); these differ:Cancel reasons
Expired (150=C)
Sent in two cases, both withExecType (150) = C and OrdStatus (39) = C:
- Time in force expiry. Same fields as Canceled (150=4), with
Text (58) = TIME_IN_FORCE. - Fill or Kill not filled. Same fields as Rejected (150=8), except
OrdRejReason (103)is not sent andText (58)isFOK_NOT_FILLED, optionally followed by-and details.
Rejected (150=8)
Sent when an order is rejected. Most fields match PendingNew (150=A); these differ:OrdRejReason values
MarketSettlementReport (35=UMS)
Sent for each firm-level instrument settlement in your scope. If the instrument ticker, firm, or FCM cannot be resolved, the report is not sent.MarketSettlementReports are not resent. An EventResendRequest returns fills only.
BusinessMessageReject (35=j)
Sent when an application message cannot be processed:- A
LastExecIDRequestorEventResendRequestthat is structurally malformed, for example a missing required tag or an invalid value format. - A
LastExecIDRequestorEventResendRequestsent above the message rate limit.Text (58) = rate throttle. - Any application message type other than
LastExecIDRequest (35=F1)andEventResendRequest (35=F3).Text (58) = unsupported drop-copy msgType.