> ## Documentation Index
> Fetch the complete documentation index at: https://api.unusualwhales.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> API requests use the base URL https://api.unusualwhales.com and require a bearer token in the `Authorization` header (`Authorization: Bearer <API_KEY>`). Create and manage API tokens at https://unusualwhales.com/dashboard/api.
> For live market data inside an AI tool, use the Unusual Whales MCP server at https://unusualwhales.com/public-api/mcp.
> Instructions for agents using Unusual Whales tools: https://unusualwhales.com/skill.md

# PredictionsTrade

> A single fill on the Polymarket CTF exchange, published to the `predictions-trades` Kafka topic as trades are ingested from the chain. One on-chain transaction can contain several fills; each fill is published as its own message. The buyer side's amount is the USDC premium and the seller side's amount is the number of outcome tokens, so the price per share is `buyer amount / seller amount`.

Message
fields**13**
topic[predictions-trades](/docs/kafka/topics/predictions-trades.md)

**Proto definition**

```protobuf schema.proto theme={null}
message PredictionsTrade {
  int64 maker_id = 1;
  int64 taker_id = 2;
  int64 asset_id = 3;
  string maker_address = 4;
  string taker_address = 5;
  string asset_address = 6;
  int64 executed_at = 7;
  Decimal fee = 8;
  Decimal maker_amount_filled = 9;
  Decimal taker_amount_filled = 10;
  Side maker_side = 11;
  Side taker_side = 12;
  string transaction_hash = 13;
}
```

## Fields

The number on the right of each row is the protobuf field number.

maker\_id
int64
1

Internal numeric id of the maker's wallet. Ids are stable and shared across all predictions messages (PredictionsPosition.user\_id, PredictionsInsider.user\_id, ...).

taker\_id
int64
2

Internal numeric id of the taker's wallet.

asset\_id
int64
3

Internal numeric id of the outcome token being traded. Same id space as PredictionsPosition.asset\_id and PredictionsInsider.asset\_id.

maker\_address
string
4

Maker wallet address (0x-prefixed hex).

taker\_address
string
5

Taker wallet address (0x-prefixed hex).

asset\_address
string
6

Polymarket CTF (ERC-1155) token id of the outcome token, as a decimal string. Note: despite the name this is a token id, not a 0x contract address. It matches PredictionsInsider.token\_id and PredictionsPosition.asset\_address.

executed\_at
int64
7

When the fill executed on-chain. Unix epoch milliseconds, UTC.

fee
[Decimal](/docs/kafka/types/Decimal.md)
8

Exchange fee charged on this fill, in USDC.

maker\_amount\_filled
[Decimal](/docs/kafka/types/Decimal.md)
9

Amount the maker gave up: USDC if maker\_side is BUYER, outcome tokens if maker\_side is SELLER.

taker\_amount\_filled
[Decimal](/docs/kafka/types/Decimal.md)
10

Amount the taker gave up: USDC if taker\_side is BUYER, outcome tokens if taker\_side is SELLER.

maker\_side
[Side](/docs/kafka/types/Side.md)
11

Whether the maker bought or sold the outcome token.

taker\_side
[Side](/docs/kafka/types/Side.md)
12

Whether the taker bought or sold the outcome token. Always the opposite of maker\_side.

transaction\_hash
string
13

Hash of the Polygon transaction containing this fill (0x-prefixed hex).
