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

# Execution

Receive real-time updates on your executions (fills).

* Topic: `execution`
* Stream: Private (`wss://api.ekiden.fi/ws/private`)

## Authenticate

Use authentication flow described in the [Connect](./connect) page.

## Subscribe

```json theme={null}
{ "op": "subscribe", "args": ["execution"], "req_id": "203001" }
```

Ack:

```json theme={null}
{ "op": "subscribed", "args": ["execution"], "req_id": "203001" }
```

## Events

Messages arrive with `op: "event"`, `topic: "execution"`, and `data` is an array of `Execution`.

Example:

```json theme={null}
{
	"op": "event",
	"topic": "execution",
	"server_ts_ms": 1731541800000,
	"data": [
		{
			"exec_id": "550e8400-e29b-41d4-a716-446655440111",
			"symbol": "BTC-USDC",
			"order_id": "550e8400-e29b-41d4-a716-446655440000",
			"order_link_id": null,
			"side": "Buy",
			"sub_account_address": "0xsubacct...",
			"order_price": "100200",
			"order_qty": "1000",
			"leaves_qty": "500",
			"order_type": "Limit",
			"exec_price": "100250",
			"exec_qty": "500",
			"exec_value": "50125000",
			"exec_type": "Trade",
			"exec_time": "1731541800000",
			"is_maker": false,
			"fee_rate": "0.0002",
			"mark_price": "100260",
			"index_price": "100240",
			"seq": 789
		}
	]
}
```

Field notes:

* Numeric values are encoded as strings to preserve precision.
* `exec_time` is Unix milliseconds (encoded as a string).

### Fields

| Field                 | Type           | Notes                                     |
| --------------------- | -------------- | ----------------------------------------- |
| exec\_id              | string         | Execution ID (UUID)                       |
| symbol                | string         | Symbol name                               |
| order\_id             | string         | Order ID (UUID)                           |
| order\_link\_id       | string or null | Client-provided link id, if set           |
| side                  | string         | `Buy` or `Sell`                           |
| sub\_account\_address | string         | Sub-account address                       |
| order\_price          | string         | Original order price                      |
| order\_qty            | string         | Original order quantity                   |
| leaves\_qty           | string         | Remaining quantity after this fill        |
| create\_type          | string or null | Create source/type                        |
| order\_type           | string         | `Limit` or `Market`                       |
| stop\_order\_type     | string or null | Stop order type, if applicable            |
| exec\_price           | string         | Execution price                           |
| exec\_qty             | string         | Execution quantity                        |
| exec\_value           | string         | Executed value (price \* qty)             |
| exec\_type            | string         | Execution type (e.g. `Trade`, `Adl`, ...) |
| exec\_time            | string         | Executed timestamp (ms)                   |
| is\_maker             | boolean        | `true` maker, `false` taker               |
| fee\_rate             | string         | Trading fee rate                          |
| mark\_price           | string         | Mark price at execution                   |
| index\_price          | string         | Index price at execution                  |
| closed\_size          | string or null | Closed position size                      |
| seq                   | integer        | Cross sequence                            |

See schema details in [AsyncAPI](../websockets/private): `Execution`.
