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

# builderFills | Hyperliquid Info API

> Hyperliquid builderFills: fetch a builder’s most recent attributed trade fills for revenue attribution and order-flow analytics.

<CardGroup cols={2}>
  <Card title="Credit Cost"> 1 per call</Card>
  <Card title="Processing"> Realtime</Card>
</CardGroup>

The Hyperliquid info endpoint with `type: "builderFills"` is used to fetch a builder’s most recent attributed trade fills for revenue attribution and order-flow analytics.

<Tip>
  Estimate your monthly cost for this API using the [Pricing Calculator](/pricing-calculator?endpoint=%2Fapi-reference%2Fhyperliquid-info%2Fbuilder-fills).
</Tip>

<Info>
  * GoldRush-native: No `POST api.hyperliquid.xyz/info` equivalent. Available only via `POST hypercore.goldrushdata.com/info`.
  * Each response contains at most 2,000 fills, ordered most-recent first.
  * For windowed queries for revenue reports and monthly reconciliation, use <a href="https://goldrush.dev/docs/api-reference/hyperliquid-info/builder-fills-by-time" target="_blank" rel="noopener noreferrer">`builderFillsByTime`</a>.
  * For real-time push instead of windowed polling, subscribe to <a href="https://goldrush.dev/docs/api-reference/streaming-api/subscriptions/wallet-activity-stream" target="_blank" rel="noopener noreferrer">`walletTxs`</a> and read `HypercoreFillTransaction` events.
</Info>

Returns the 2,000 most recent fills attributed to a builder address. Use this when you operate a builder code and want to inspect the order flow routed through it without specifying a time window.

Builder-keyed. GoldRush-native so there is no upstream Hyperliquid `/info` equivalent.

## Endpoint

```
POST https://hypercore.goldrushdata.com/info
Authorization: Bearer <GOLDRUSH_API_KEY>
Content-Type: application/json
```

## Request

<ParamField body="type" type="string" required>
  Always `"builderFills"`.
</ParamField>

<ParamField body="builder" type="string" required>
  The builder address that orders were routed through. Must be a `0x`-prefixed 42-character hex address.
</ParamField>

<ParamField body="aggregateByTime" type="boolean">
  When `true`, partial fills sharing the same timestamp are consolidated into one row. Default `false`.
</ParamField>

<ParamField body="cursor" type="string">
  Pagination cursor — a Unix timestamp in milliseconds encoded as a string. When set, returns fills strictly before this time. Use the `time` value of the oldest fill in the previous page to fetch the next page.
</ParamField>

### Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://hypercore.goldrushdata.com/info \
    -H "Authorization: Bearer $GOLDRUSH_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "type": "builderFills",
      "builder": "0x0000000000000000000000000000000000000000"
    }'
  ```

  ```typescript TypeScript theme={null}
  const response = await fetch("https://hypercore.goldrushdata.com/info", {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${process.env.GOLDRUSH_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      type: "builderFills",
      builder: "0x0000000000000000000000000000000000000000",
    }),
  });

  const fills = await response.json();
  ```

  ```python Python theme={null}
  import os, requests

  response = requests.post(
      "https://hypercore.goldrushdata.com/info",
      headers={"Authorization": f"Bearer {os.environ['GOLDRUSH_API_KEY']}"},
      json={
          "type": "builderFills",
          "builder": "0x0000000000000000000000000000000000000000",
      },
  )

  fills = response.json()
  ```
</CodeGroup>

## Response

An array of fill objects ordered most-recent-first. Each entry is a fill from an order that was routed through the builder address.

```json theme={null}
[
  {
    "user": "0x73f9c53a8b15e43056d5599f6488ac9a8730f85d",
    "coin": "HYPE",
    "px": "66.977",
    "sz": "0.69",
    "side": "B",
    "time": 1781518798259,
    "startPosition": "0",
    "dir": "Open Long",
    "closedPnl": "0",
    "hash": "0x2b7bd2df9499dfef2cf5043dc500b402068500c52f9cfec1cf447e32539db9d9",
    "oid": 469533808540,
    "crossed": true,
    "fee": "0.048524",
    "tid": 332575399132451,
    "feeToken": "USDC",
    "builderFee": "0.027728",
    "cloid": "0xff8ffaa775354e8faf1eaa18127d6b5e"
  }
]
```

### Field descriptions

<Note>
  All numeric fields (`px`, `sz`, `startPosition`, `closedPnl`, `fee`, `builderFee`) are returned as **decimal strings** with full upstream precision (up to 18 decimal places). Do not parse them as floats - keep them as strings or use a fixed-precision decimal type.
</Note>

<ResponseField name="user" type="string">The trader's wallet address - the account that placed the order routed through the builder code.</ResponseField>
<ResponseField name="coin" type="string">Asset symbol - e.g. `"BTC"`, `"ETH"` for perps; spot pairs use the `@N` form (e.g. `"@107"`); HIP-3 markets use the deployer-prefixed form.</ResponseField>
<ResponseField name="px" type="string">Fill execution price.</ResponseField>
<ResponseField name="sz" type="string">Fill size.</ResponseField>
<ResponseField name="side" type="string">`"B"` for buy/long, `"A"` for ask/short.</ResponseField>
<ResponseField name="time" type="int">Unix timestamp in milliseconds when the fill executed.</ResponseField>
<ResponseField name="startPosition" type="string">Signed position size the trader held on this coin immediately before this fill.</ResponseField>
<ResponseField name="dir" type="string">Human-readable direction label - `"Open Long"`, `"Open Short"`, `"Close Long"`, `"Close Short"`, `"Buy"`, `"Sell"`, or position-flip labels `"Long > Short"` / `"Short > Long"`.</ResponseField>
<ResponseField name="closedPnl" type="string">Realized PnL in USDC attributable to this fill for the trader (zero when the fill opens or extends a position).</ResponseField>
<ResponseField name="hash" type="string">L1 transaction hash that included this fill.</ResponseField>
<ResponseField name="oid" type="int">Parent order ID.</ResponseField>
<ResponseField name="tid" type="int">Unique trade ID.</ResponseField>
<ResponseField name="crossed" type="boolean">`true` when the fill came from the taker side of the order, `false` when it was the maker side.</ResponseField>
<ResponseField name="fee" type="string">Trading fee paid by the trader for this fill, denominated in `feeToken`.</ResponseField>
<ResponseField name="feeToken" type="string">Symbol the fee was paid in - typically `"USDC"`.</ResponseField>
<ResponseField name="builderFee" type="string">Optional. Builder fee earned for this fill, denominated in `feeToken`. Omitted when no builder fee was charged.</ResponseField>
<ResponseField name="cloid" type="string">Optional. Client order ID (`0x`-prefixed 32-character hex) if one was set at order placement.</ResponseField>

<ResponseField name="liquidation" type="object">
  Optional. Present only when this fill closed a position as part of a liquidation event.

  <Expandable title="properties">
    <ResponseField name="liquidatedUser" type="string">The wallet whose position was liquidated.</ResponseField>
    <ResponseField name="markPx" type="string">Mark price at the time of liquidation.</ResponseField>
    <ResponseField name="method" type="string">Liquidation method - e.g. `"Market"`.</ResponseField>
  </Expandable>
</ResponseField>

## Related endpoints

<CardGroup cols={2}>
  <Card title="builderFillsByTime" href="/api-reference/hyperliquid-info/builder-fills-by-time">fetch a builder’s attributed trade fills within a time window for revenue attribution and fee accounting.</Card>
  <Card title="userFills" href="/api-reference/hyperliquid-info/user-fills">fetch a user's most recent trade fills without specifying a time window.</Card>
  <Card title="userFillsByTime" href="/api-reference/hyperliquid-info/user-fills-by-time">fetch a user’s trade fills within a time window for P\&L recaps and tax ledger reconstruction.</Card>
  <Card title="userTwapSliceFills" href="/api-reference/hyperliquid-info/user-twap-slice-fills">fetch a user's most recent TWAP slice fills for execution-quality analytics on algorithmic orders.</Card>
</CardGroup>

*Last reviewed: 2026-06-16*
