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

# Bucketed top-N with 'other' builder composition

> Bucketed timeseries for stacked-bar / area charts. For each bucket in the range, returns up to `top_n` plus one rows: one per top-N builder plus an `other` aggregate. Top-N is fixed across the whole window so chart legends stay stable.



## OpenAPI

````yaml https://api.struct.to/openapi.json get /polymarket/builders/composition
openapi: 3.1.0
info:
  title: Polymarket API
  description: >-
    RESTful API for querying Polymarket prediction markets data including
    events, markets, traders, holders, and real-time metrics
  license:
    name: ''
  version: 1.0.0
servers:
  - url: https://api.struct.to/v1
security: []
paths:
  /polymarket/builders/composition:
    get:
      tags:
        - Builders
      summary: Bucketed top-N with 'other' builder composition
      description: >-
        Bucketed timeseries for stacked-bar / area charts. For each bucket in
        the range, returns up to `top_n` plus one rows: one per top-N builder
        plus an `other` aggregate. Top-N is fixed across the whole window so
        chart legends stay stable.
      operationId: get_builder_composition
      parameters:
        - name: metric
          in: query
          description: 'Ranking metric used to pick the top-N. Default: volume.'
          required: false
          schema:
            $ref: '#/components/schemas/BuilderSortBy'
        - name: resolution
          in: query
          description: 'Bucket size. Default: 60 (hourly).'
          required: false
          schema:
            $ref: '#/components/schemas/AnalyticsResolution'
        - name: from
          in: query
          description: Inclusive start ts (unix seconds).
          required: false
          schema:
            type: integer
            format: int64
        - name: to
          in: query
          description: Inclusive end ts (unix seconds).
          required: false
          schema:
            type: integer
            format: int64
        - name: count_back
          in: query
          description: >-
            Max buckets returned (default 500, max 2500). Limits the COUNT of
            bucket rows; the response carries top_n entries per bucket plus one
            `other` row.
          required: false
          schema:
            type: integer
            format: int64
        - name: top_n
          in: query
          description: >-
            Number of top builders broken out individually (clamped 1..50).
            Default: 10.
          required: false
          schema:
            type: integer
            format: int32
            minimum: 0
        - name: series
          in: query
          description: >-
            cumulative (end-of-bucket snapshot) or delta (in-bucket change).
            Default: cumulative.
          required: false
          schema:
            $ref: '#/components/schemas/CompositionSeries'
      responses:
        '200':
          description: >-
            Bucketed composition rows plus a `builder_metadata` map keyed by
            builder_code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompositionResponse'
components:
  schemas:
    BuilderSortBy:
      type: string
      description: Sort metric for the builders list endpoint.
      enum:
        - volume
        - txns
        - traders
        - fees
        - builder_fees
        - new_users
        - avg_rev_per_user
        - avg_vol_per_user
        - builder_maker_fee_rate_bps
        - builder_taker_fee_rate_bps
    AnalyticsResolution:
      type: string
      description: >-
        Bucket size for `/analytics/timeseries` and `/analytics/deltas`
        responses.

        Each value picks the time interval that one row in the output covers:

        `60` = 1 hour, `240` = 4 hours, `D`/`1D` = 1 day, `W`/`1W` = 7 days,

        `M`/`1M` = calendar month.
      enum:
        - '60'
        - '240'
        - D
        - 1D
        - W
        - 1W
        - M
        - 1M
    CompositionSeries:
      type: string
      description: Series mode — cumulative end-of-bucket snapshot or in-bucket delta.
      enum:
        - cumulative
        - delta
    CompositionResponse:
      type: object
      description: |-
        Composition response: bucket rows plus a top-level `builder_metadata`
        lookup keyed by `builder_code`. Metadata is returned once per builder
        here rather than embedded on each bucket row.
      required:
        - data
        - builder_metadata
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/CompositionBucketRow'
          description: >-
            Bucket rows, ordered ascending by `t` and then by `r` within each
            bucket.
        builder_metadata:
          type: object
          description: |-
            Display metadata for each unique builder code present in `data`,
            keyed by `builder_code`. Builders with no registered metadata are
            absent from the map. The synthetic `"other"` aggregate row is never
            a key here.
    CompositionBucketRow:
      type: object
      description: |-
        One bucket × builder slot. `code` is a real builder hex code for top-N
        rows or the literal `"other"` for the row that aggregates every
        remaining builder in that bucket.
      required:
        - t
        - code
        - r
        - v
        - bv
        - sv
        - ut
        - um
        - uk
        - tc
        - bc
        - sc
        - f
        - bf
        - sh
        - yv
        - nv
        - yc
        - nc
        - bd_u10
        - bd_100
        - bd_1k
        - bd_10k
        - bd_50k
        - bd_50p
        - nu
        - ar
        - av
      properties:
        t:
          type: integer
          format: int32
          description: Bucket start (unix seconds).
          minimum: 0
        code:
          type: string
          description: Builder hex code or `"other"`.
        r:
          type: integer
          format: int32
          description: >-
            Global rank assigned over the full window. `1..=top_n` for real

            builders, `top_n plus 1` for the `other` row. Stable across buckets
            so

            chart legends don't reorder.
          minimum: 0
        v:
          type: number
          format: double
          description: Volume in USD.
        bv:
          type: number
          format: double
          description: Buy volume in USD.
        sv:
          type: number
          format: double
          description: Sell volume in USD.
        ut:
          type: integer
          format: int64
          description: Unique traders.
        um:
          type: integer
          format: int64
          description: Unique makers.
        uk:
          type: integer
          format: int64
          description: Unique takers.
        tc:
          type: integer
          format: int64
          description: Transaction count.
        bc:
          type: integer
          format: int64
          description: Buy count.
        sc:
          type: integer
          format: int64
          description: Sell count.
        f:
          type: number
          format: double
          description: Fees in USD.
        bf:
          type: number
          format: double
          description: Builder fees.
        sh:
          type: number
          format: double
          description: Shares volume.
        yv:
          type: number
          format: double
          description: Yes volume in USD.
        nv:
          type: number
          format: double
          description: No volume in USD.
        yc:
          type: integer
          format: int64
          description: Yes count.
        nc:
          type: integer
          format: int64
          description: No count.
        bd_u10:
          type: integer
          format: int64
          description: Buy trade count in the under-10 USD bucket.
        bd_100:
          type: integer
          format: int64
          description: Buy trade count in the 10-100 USD bucket.
        bd_1k:
          type: integer
          format: int64
          description: Buy trade count in the 100-1k USD bucket.
        bd_10k:
          type: integer
          format: int64
          description: Buy trade count in the 1k-10k USD bucket.
        bd_50k:
          type: integer
          format: int64
          description: Buy trade count in the 10k-50k USD bucket.
        bd_50p:
          type: integer
          format: int64
          description: Buy trade count in the 50k-plus USD bucket.
        nu:
          type: integer
          format: int64
          description: New users.
        ar:
          type: number
          format: double
          description: Average rev per user.
        av:
          type: number
          format: double
          description: Average vol per user.

````