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

# External activity of your users

> Find out which of **your** users have traded outside your app. Send your builder address and a list of wallet addresses (up to 500); for each wallet you get the fills attributed to **other builder codes** (competing apps) and, optionally, the fills carrying **no builder code** at all — official Hyperliquid UI, bots, any tool outside the builder program. About 93 % of all Hyperliquid fills carry no builder code, so `noBuilder` is what catches a user who left for the official front-end, while `externalBuilders` catches a user who went to another app.

Flagged users come first, sorted by external volume, so the top of the list is the one to act on. `own` reports the same wallet's activity under your builder code, for context. One ClickHouse query on the fills table, typically 100–300 ms for 100 addresses over 7 days. Builder attribution is available from **2025-10-10**.



## OpenAPI

````yaml /builders/openapi-rest.json post /builders/{builder_address}/external-activity
openapi: 3.0.3
info:
  title: HL Indexer API — Builders
  version: 1.0.0
  description: Builder fee analytics and rankings.
servers:
  - url: https://api.hypedexer.com
    description: EU production
security: []
tags:
  - name: Builders
    description: Builder fee analytics and rankings.
paths:
  /builders/{builder_address}/external-activity:
    post:
      tags:
        - Builders
      summary: External activity of your users
      description: >-
        Find out which of **your** users have traded outside your app. Send your
        builder address and a list of wallet addresses (up to 500); for each
        wallet you get the fills attributed to **other builder codes**
        (competing apps) and, optionally, the fills carrying **no builder code**
        at all — official Hyperliquid UI, bots, any tool outside the builder
        program. About 93 % of all Hyperliquid fills carry no builder code, so
        `noBuilder` is what catches a user who left for the official front-end,
        while `externalBuilders` catches a user who went to another app.


        Flagged users come first, sorted by external volume, so the top of the
        list is the one to act on. `own` reports the same wallet's activity
        under your builder code, for context. One ClickHouse query on the fills
        table, typically 100–300 ms for 100 addresses over 7 days. Builder
        attribution is available from **2025-10-10**.
      parameters:
        - name: builder_address
          in: path
          required: true
          description: Your builder address (0x…)
          schema:
            type: string
        - name: X-API-Key
          in: header
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - users
              properties:
                users:
                  type: array
                  items:
                    type: string
                  minItems: 1
                  maxItems: 500
                  description: >-
                    Wallet addresses to check (0x…, any case). Duplicates are
                    ignored; any invalid address returns 400.
                timeframe:
                  type: string
                  default: 7d
                  enum:
                    - 1h
                    - 24h
                    - 7d
                    - 30d
                  description: Lookback window, aligned to the hour
                includeNoBuilder:
                  type: boolean
                  default: true
                  description: >-
                    Also report fills carrying no builder code (official HL UI,
                    bots, other tools)
            example:
              users:
                - '0xf3c0a7cab3f4a1b2c3d4e5f60718293a4b5c6d7e'
                - '0x00ede59e1a2b3c4d5e6f708192a3b4c5d6e7f809'
              timeframe: 7d
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    default: true
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      timeframe:
                        type: string
                      builder:
                        type: string
                      start:
                        type: string
                        format: date-time
                      end:
                        type: string
                        format: date-time
                      summary:
                        type: object
                        properties:
                          usersChecked:
                            type: integer
                          usersWithExternalBuilder:
                            type: integer
                          usersWithNoBuilderFills:
                            type: integer
                          usersWithOwnFills:
                            type: integer
                          usersWithoutFills:
                            type: integer
                      users:
                        type: array
                        description: >-
                          One entry per submitted address (deduplicated,
                          lower-cased). Flagged users first, sorted by external
                          volume.
                        items:
                          type: object
                          properties:
                            user:
                              type: string
                            flagged:
                              type: boolean
                              description: >-
                                true when the wallet has fills under another
                                builder code or (if includeNoBuilder) with no
                                builder code
                            externalBuilders:
                              type: array
                              description: >-
                                Other builder codes this wallet traded through,
                                by volume
                              items:
                                type: object
                                properties:
                                  builder:
                                    type: string
                                  fillCount:
                                    type: integer
                                  totalVolume:
                                    type: number
                                    description: Notional traded, USDC
                                  uniqueCoins:
                                    type: integer
                                  firstFill:
                                    type: string
                                    format: date-time
                                  lastFill:
                                    type: string
                                    format: date-time
                            noBuilder:
                              type: object
                              nullable: true
                              description: >-
                                Aggregate of the fills in this bucket; null when
                                there are none.
                              properties:
                                fillCount:
                                  type: integer
                                totalVolume:
                                  type: number
                                  description: Notional traded, USDC
                                uniqueCoins:
                                  type: integer
                                firstFill:
                                  type: string
                                  format: date-time
                                lastFill:
                                  type: string
                                  format: date-time
                            own:
                              type: object
                              nullable: true
                              description: >-
                                This wallet's activity under your own builder
                                code, for context; null when none in the window.
                              properties:
                                fillCount:
                                  type: integer
                                totalVolume:
                                  type: number
                                  description: Notional traded, USDC
                                uniqueCoins:
                                  type: integer
                                firstFill:
                                  type: string
                                  format: date-time
                                lastFill:
                                  type: string
                                  format: date-time
                  execution_time_ms:
                    type: number
              example:
                success: true
                message: External activity for 30 users of builder 0xb84168cf... (7d)
                data:
                  timeframe: 7d
                  builder: '0xb84168cf3be63c6b8dad05ff5d755e97432ff80b'
                  start: '2026-09-01T00:00:00Z'
                  end: '2026-09-08T00:48:59Z'
                  summary:
                    usersChecked: 30
                    usersWithExternalBuilder: 3
                    usersWithNoBuilderFills: 7
                    usersWithOwnFills: 30
                    usersWithoutFills: 0
                  users:
                    - user: 0xf3c0a7cab3…
                      flagged: true
                      externalBuilders:
                        - builder: 0x5aafc1f2…
                          fillCount: 20
                          totalVolume: 5927.77
                          uniqueCoins: 3
                          firstFill: '2026-09-02T09:14:31Z'
                          lastFill: '2026-09-06T01:03:07Z'
                      noBuilder:
                        fillCount: 2
                        totalVolume: 412.5
                        uniqueCoins: 1
                        firstFill: '2026-09-03T18:20:05Z'
                        lastFill: '2026-09-03T18:21:47Z'
                      own:
                        fillCount: 11
                        totalVolume: 8830.12
                        uniqueCoins: 2
                        firstFill: '2026-09-01T07:02:10Z'
                        lastFill: '2026-09-07T22:15:40Z'
                    - user: 0x013c6560ad…
                      flagged: true
                      externalBuilders: []
                      noBuilder:
                        fillCount: 2
                        totalVolume: 96.3
                        uniqueCoins: 1
                        firstFill: '2026-09-05T11:40:00Z'
                        lastFill: '2026-09-05T11:41:12Z'
                      own:
                        fillCount: 17
                        totalVolume: 3120.4
                        uniqueCoins: 2
                        firstFill: '2026-09-01T12:00:03Z'
                        lastFill: '2026-09-07T19:33:21Z'
                    - user: 0x00ede59e…
                      flagged: false
                      externalBuilders: []
                      noBuilder: null
                      own:
                        fillCount: 240
                        totalVolume: 169688.62
                        uniqueCoins: 4
                        firstFill: '2026-09-01T00:05:44Z'
                        lastFill: '2026-09-07T03:59:00Z'
                execution_time_ms: 107.27
        '400':
          description: >-
            Invalid builder address, invalid wallet address(es) — listed in
            `detail.addresses` —, empty list, or more than 500 addresses
        '422':
          description: Malformed body or unknown timeframe

````