# userTwapSliceFills

{% hint style="info" %}
**All data fully available from 28-07-2025. We have performed a full backfill of all fills the HL native API offered, meaning that we have full historical data for most traders except for some very high volume addresses. TWAP fills are included from 02-08-2025.**
{% endhint %}

Returns fills that were executed as part of a TWAP (Time-Weighted Average Price) order. Each fill is an individual "slice" of the TWAP execution. Only fills with a non-null `twapId` are returned.

## POST Request

<table><thead><tr><th width="161.9998779296875">Field</th><th width="119">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>type</code></td><td>string</td><td>Must be <code>"userTwapSliceFills"</code></td></tr><tr><td><code>user</code></td><td>string</td><td>Ethereum address (0x-prefixed, 42 characters)</td></tr></tbody></table>

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X POST https://api.hydromancer.xyz/info \
  -H "Authorization: Bearer $HYDROMANCER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "userTwapSliceFills",
    "user": "0x0000000000000000000000000000000000000000"
  }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import os

response = requests.post(
    'https://api.hydromancer.xyz/info',
    json={
        'type': 'userTwapSliceFills',
        'user': '0x0000000000000000000000000000000000000000'
    },
    headers={
        'Authorization': f'Bearer {os.environ.get("HYDROMANCER_API_KEY")}',
        'Content-Type': 'application/json'
    }
)

print(response.json())
```

{% endtab %}

{% tab title="Javascript" %}

```javascript
import axios from 'axios';

try {
    const response = await axios.post('https://api.hydromancer.xyz/info', {
        type: 'userTwapSliceFills',
        user: '0x0000000000000000000000000000000000000000'
    }, {
        headers: {
            'Authorization': `Bearer ${process.env.HYDROMANCER_API_KEY}`,
            'Content-Type': 'application/json'
        }
    });

    console.log(response.data);
} catch (error) {
    console.error('Error:', error.message);
}
```

{% endtab %}
{% endtabs %}

***

## Response Fields

| Field           | Type    | Description                                            |
| --------------- | ------- | ------------------------------------------------------ |
| `coin`          | string  | Asset symbol                                           |
| `px`            | string  | Fill price                                             |
| `sz`            | string  | Fill size                                              |
| `side`          | string  | `"A"` (sell) or `"B"` (buy)                            |
| `time`          | int     | Fill timestamp (ms)                                    |
| `startPosition` | string  | Position size before the fill                          |
| `dir`           | string  | Direction (e.g. `"Open Long"`, `"Open Short"`)         |
| `closedPnl`     | string  | Closed PnL from this fill                              |
| `hash`          | string  | Transaction hash (always `0x000...000` for TWAP fills) |
| `oid`           | int     | Order ID                                               |
| `crossed`       | boolean | Whether the order crossed the spread                   |
| `fee`           | string  | Fee amount                                             |
| `tid`           | int     | Trade ID                                               |
| `cloid`         | string? | Client order ID (optional)                             |
| `builderFee`    | string? | Builder fee (optional)                                 |
| `deployerFee`   | string? | Deployer fee (optional, HIP-3 fills only)              |
| `feeToken`      | string  | Fee token (e.g. `"USDC"`)                              |
| `twapId`        | int     | TWAP order ID                                          |
| `txIndex`       | int     | Transaction index                                      |

<details>

<summary>Response</summary>

```json
[
{
"coin": "BTC",
"px": "67950.00",
"sz": "0.00108",
"side": "A",
"time": 1772096268036,
"startPosition": "-1.78931",
"dir": "Open Short",
"closedPnl": "0.00",
"hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"oid": 330647838320,
"crossed": true,
"fee": "0.033023",
"tid": 792432692404914,
"feeToken": "USDC",
"twapId": 1628419,
"txIndex": 12
}
]
```

</details>

<details>

<summary>Notes</summary>

* Returns at most 2000 most recent TWAP slice fills, ordered by time descending
* TWAP fills always have a hash of `0x000...000`
* The `twapId` field identifies which TWAP order the slice belongs to — multiple fills can share the same `twapId`
* Unlike Hyperliquid's native endpoint which wraps fills as `{ "fill": {...}, "twapId": N }`, Hydromancer returns fills in the same flat format as `userFills`

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hydromancer.xyz/readme/rest-api/historical-data/usertwapslicefills.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
