gRPC Only - DropCopy endpoints are gRPC streaming only. There are no REST equivalents.
Service Definition
Service:polymarket.v1.DropCopyAPI
Type: Server-side streaming (all endpoints)
Available Streams
1. DropCopy Subscription
Stream execution reports as they occur for your firm.Request Parameters
Omit both
resume_token and resume_time to receive only executions that occur after the stream opens. See Resume semantics.
Response Fields
Commission fields on executions (
commission_notional_collected, commission_notional_total_collected) are fixed-point notional units scaled by price_scale × fractional_quantity_scale — see Fees on execution reports for decoding rules and worked examples.Example
Sample Output
2. Trade Capture Report Subscription
Stream completed trades for reconciliation and compliance.Request Parameters
Response Fields
Example
Trade Structure
Each trade contains two executions:Trade States
EachTrade carries a state field with one of the following values:
TRADE_STATE_UNDEFINED (value 0) is the unset/unknown sentinel. It is omitted
from API responses and does not appear in the published enum lists. Treat any
unrecognized state value defensively rather than assuming the values above are
exhaustive.3. Instrument State Change Subscription
Stream market state changes (halts, opens, closes).No Participant ID RequiredThis endpoint only requires Auth0 JWT authentication with
read:instruments scope. You do not need to provide the x-participant-id header or complete KYC onboarding to access instrument state changes.Request Parameters
Response Fields
Instrument States
Primary State Flow
Exception States
Other Possible States
Example
4. Position Change Subscription
Stream real-time position updates.Request Parameters
Response Fields
PositionChange Structure
Example
Reconnection Handling
Keep one long-lived Drop Copy stream per environment. Do not open a stream per order, and do not cancel the RPC after a few seconds — that restarts replay and never catches up. See Streaming Best Practices. Execution, trade-capture, and position-change streams carryresume_token for reconnect:
Resume semantics
The two resume fields are mutually exclusive. Send one or neither.
Replay always runs to the present before live executions arrive. An old token or an early
resume_time means a long replay, and a fill for an order you just placed is delivered only after that replay reaches it. If you do not need past executions, do not send a resume field.
Persist the most recent resume_token you have fully applied, not the first token you received. Responses with no executions still carry a current resume_token; persist those too. To tell when a replay has caught up, see Knowing you are caught up.
Comparing DropCopy vs Order Stream
Next Steps
Streaming Best Practices
One stream per firm. Persist resume_token after apply.
Order Stream
Stream user-level order updates
Market Data Stream
Stream real-time market data
Funding Stream
Stream funding transaction updates
Error Handling
Handle errors and reconnections