---
title: "Dropcopy"
url: https://docs.truemarkets.co/api/websocket/institutional/dropcopy
description: "Message sent from server containing order drop copy data for subscribed client IDs. Provides real-time order state updates including new orders, fills, cancellations, and modifications. Requires authentication - unauthenticated connections will be rejected. A DROPCOPY subscription placed while the exchange is still syncing its client catalog (shortly after a restart) receives a confirmation without that subscription and a message asking you to retry — resend the subscription in a few moments."
---

Docs index: https://docs.truemarkets.co/llms.txt

# Dropcopy

True Markets CeFi WebSocket sends these messages to you.

Address: `/v1/cefi/market`

## Servers

- `wss://api.truemarkets.co` (Production, wss)
- `wss://api.uat.truemarkets.co` (Uat, wss)

## Messages

### dropcopy

Payload: `DropcopyPayload`

Example payload:

```json
{
  "seqnum": "string",
  "channel": "DROPCOPY",
  "update": "SNAPSHOT",
  "data": {
    "order_id": "string",
    "client_id": "string",
    "instrument_id": "string",
    "external_id": "string",
    "symbol": "string",
    "side": "BUY",
    "order_type": "LIMIT",
    "time_in_force": "GTC",
    "status": "NEW_PENDING",
    "price": "string",
    "quantity": "string",
    "leaves_qty": "string",
    "executed_qty": "string",
    "executed_vwap": "string",
    "event_type": "NEW",
    "text": "string",
    "trade_price": "string",
    "trade_qty": "string",
    "timestamp": "string"
  }
}
```

## Types

```ts
export type DropcopyMessage = DropcopyPayload;

export type DropcopyPayload =
  | {
  /** Per-connection sequence number for the DROPCOPY channel. */
  seqnum: string;
  channel: "DROPCOPY";

  /** SNAPSHOT is sent upon initial subscription with all active orders. UPDATE is sent for subsequent order state changes. */
  update: "SNAPSHOT" | "UPDATE";
  data: Order;
}
  | {
  /** Per-connection sequence number for the DROPCOPY channel. */
  seqnum: string;
  channel: "DROPCOPY";
  update: "SNAPSHOT_COMPLETE";

  /** The subscribed item whose snapshot is complete. For client subscriptions: CLIENT/{clientId}. For organization subscriptions: ORG/{orgUuid}. */
  item: string;
};

/** Order data representing the current state of an order. */
export interface Order {
  /** Exchange assigned unique identifier for the order. */
  order_id?: string;

  /** Client ID that owns this order. */
  client_id?: string;

  /** Exchange assigned ID of the instrument being traded. */
  instrument_id?: string;

  /** Client-supplied external order identifier. */
  external_id?: string;

  /** Human readable representation of the instrument. */
  symbol?: string;

  /** Order side. */
  side?: "BUY" | "SELL";

  /** Type of order. `NOTIONAL_LIMIT` is deprecated and appears only on orders entered before it became an alias: new notional orders are reported as `MARKET` (entered with the `QUOTE_QTY` flag). */
  order_type?: "LIMIT" | "MARKET" | "NOTIONAL_LIMIT";

  /** Time in force for the order. */
  time_in_force?: "GTC" | "IOC";

  /** Current state of the order. */
  status?: "NEW_PENDING" | "ACTIVE" | "FILLED" | "CANCEL_PENDING" | "CANCELED" | "MODIFY_PENDING" | "REJECTED";

  /** Order price (for limit orders). */
  price?: string;

  /** Original order quantity. */
  quantity?: string;

  /** Remaining quantity to be filled. */
  leaves_qty?: string;

  /** Total quantity that has been executed. */
  executed_qty?: string;

  /** Volume weighted average price of executed quantity. */
  executed_vwap?: string;

  /** Type of event that triggered this update (only present on UPDATE messages). */
  event_type?: "NEW" | "TRADE" | "CANCELED" | "MODIFIED" | "REJECTED";

  /** Information provided by the exchange about an event.  Maybe empty. */
  text?: string;

  /** Price of the last trade (only present on TRADE events). */
  trade_price?: string;

  /** Quantity of the last trade (only present on TRADE events). */
  trade_qty?: string;

  /** UTC Unix timestamp in nanoseconds when the event occurred. */
  timestamp?: string;
}
```