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

# Builder order intent

> What this builder's users INTEND, not just what filled: order counts and shares by action type (plain orders, batch modifies, and stop/TP trigger orders), time-in-force mix, reduce-only share, a full trigger breakdown (take-profit vs stop, market vs limit, position-TPSL vs standalone, resolved vs still-pending), and the share of intents that reached at least one attributed fill. Trigger-order history begins 2026-03-24 (earlier history is being backfilled); see the response's dataNotes.



## OpenAPI

````yaml /api-reference/openapi.json get /api/public/v1/builders/{builder}/orders
openapi: 3.1.0
info:
  title: coinversa-api
  version: 0.1.0
servers:
  - url: https://api.coinversa.ai
    description: Production
security: []
paths:
  /api/public/v1/builders/{builder}/orders:
    get:
      tags:
        - Builder Analytics
      summary: Builder order intent
      description: >-
        What this builder's users INTEND, not just what filled: order counts and
        shares by action type (plain orders, batch modifies, and stop/TP trigger
        orders), time-in-force mix, reduce-only share, a full trigger breakdown
        (take-profit vs stop, market vs limit, position-TPSL vs standalone,
        resolved vs still-pending), and the share of intents that reached at
        least one attributed fill. Trigger-order history begins 2026-03-24
        (earlier history is being backfilled); see the response's dataNotes.
      operationId: get-api-public-v1-builders-by-builder-orders
      parameters:
        - description: Builder address (0x-hex)
          in: path
          name: builder
          required: true
          schema:
            description: Builder address (0x-hex)
            type: string
        - explode: false
          in: query
          name: period
          schema:
            default: week
            enum:
              - day
              - week
              - month
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BuilderOrdersBody'
          description: OK
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Bad Request
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Unauthorized
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Unprocessable Entity
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Too Many Requests
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Internal Server Error
        '504':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Gateway Timeout
      security:
        - apiKey: []
components:
  schemas:
    BuilderOrdersBody:
      additionalProperties: false
      properties:
        $schema:
          description: A URL to the JSON Schema for this object.
          examples:
            - https://api.coinversa.ai/schemas/BuilderOrdersBody.json
          format: uri
          readOnly: true
          type: string
        actions:
          description: >-
            Intent mix by type, largest first; includes the 'trigger'
            pseudo-type (pending placements only) sourced from the trigger
            capture table
          items:
            $ref: '#/components/schemas/BuilderOrderActionRow'
          type:
            - array
            - 'null'
        builder:
          type: string
        builderName:
          description: Known display name for the builder; omitted if unknown
          type: string
        dataNotes:
          type: string
        fillConversion:
          $ref: '#/components/schemas/BuilderFillConversion'
          description: How much placement intent converted into >= 1 attributed fill
        period:
          type: string
        reduceOnlyShare:
          description: >-
            Share of non-trigger order intents flagged reduce-only (trigger
            placements are reduce-only by construction and excluded)
          format: double
          type: number
        tifs:
          description: Time-in-force mix of non-trigger order intents, largest first
          items:
            $ref: '#/components/schemas/BuilderTifRow'
          type:
            - array
            - 'null'
        totalIntents:
          description: >-
            Non-trigger order intents + still-PENDING trigger placements in the
            period (the actions share denominator). Resolved trigger placements
            already appear as 'order' intent rows, so counting them again here
            would double-count
          format: int64
          type: integer
        trigger:
          $ref: '#/components/schemas/BuilderTriggerBreakdown'
          description: Stop/TP placement breakdown (placement plane — see dataNotes)
        verified:
          $ref: '#/components/schemas/BuilderStamp'
      required:
        - builder
        - period
        - totalIntents
        - actions
        - trigger
        - tifs
        - reduceOnlyShare
        - fillConversion
        - dataNotes
      type: object
    APIError:
      additionalProperties: false
      properties:
        $schema:
          description: A URL to the JSON Schema for this object.
          examples:
            - https://api.coinversa.ai/schemas/APIError.json
          format: uri
          readOnly: true
          type: string
        code:
          description: Machine-readable error code
          type: string
        current_tier:
          description: Caller's effective tier
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        required_tier:
          description: Minimum tier for this operation
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
        upgrade_url:
          description: Where to upgrade
          type: string
      type: object
    BuilderOrderActionRow:
      additionalProperties: false
      properties:
        actionType:
          description: >-
            'order' (plain placement), 'batchModify' (modify intent on an
            existing order), or 'trigger' (still-PENDING stop/TP placements from
            the trigger capture table; resolved trigger placements already
            surface as 'order' rows and are counted there)
          type: string
        orders:
          description: Intent rows of this type placed in the period
          format: int64
          type: integer
        share:
          description: orders / totalIntents
          format: double
          type: number
      required:
        - actionType
        - orders
        - share
      type: object
    BuilderFillConversion:
      additionalProperties: false
      properties:
        filledOrders:
          description: >-
            Of those, intent rows whose own oid had >= 1 attributed fill in the
            period. Every intent row carries its own oid (batchModify rows never
            share the superseded placement's oid), so a superseded placement
            counts as an unfilled intent
          format: int64
          type: integer
        orders:
          description: Non-trigger order intents in the period (denominator)
          format: int64
          type: integer
        share:
          description: filledOrders / orders; 0 when the builder placed no orders
          format: double
          type: number
      required:
        - orders
        - filledOrders
        - share
      type: object
    BuilderTifRow:
      additionalProperties: false
      properties:
        orders:
          format: int64
          type: integer
        share:
          description: orders / non-trigger order intents (trigger placements carry no tif)
          format: double
          type: number
        tif:
          description: >-
            Time-in-force as recorded on the order ('unknown' when absent —
            market orders and older rows)
          type: string
      required:
        - tif
        - orders
        - share
      type: object
    BuilderTriggerBreakdown:
      additionalProperties: false
      properties:
        pending:
          description: >-
            Placements not yet resolved to an oid; the only trigger rows that
            add to totalIntents
          format: int64
          type: integer
        positionTpsl:
          description: grouping='positionTpsl' — TP/SL attached to the whole position
          format: int64
          type: integer
        resolved:
          description: >-
            Placements already mapped to an exchange oid by the batch-resolve
            job (near zero until its backlog runs — see dataNotes). Resolved
            placements also appear as plain 'order' intent rows, so they are
            excluded from totalIntents and the 'trigger' action to avoid
            double-counting
          format: int64
          type: integer
        standaloneTpsl:
          description: grouping='normalTpsl' — TP/SL attached to a parent order
          format: int64
          type: integer
        stopLoss:
          description: tpsl='sl' — stop-loss triggers
          format: int64
          type: integer
        takeProfit:
          description: tpsl='tp' — take-profit triggers
          format: int64
          type: integer
        total:
          description: Trigger-order (stop/TP) placements in the period
          format: int64
          type: integer
        triggerLimit:
          description: Executes as a limit order when the trigger price is hit
          format: int64
          type: integer
        triggerMarket:
          description: Executes as a market order when the trigger price is hit
          format: int64
          type: integer
      required:
        - total
        - takeProfit
        - stopLoss
        - triggerMarket
        - triggerLimit
        - positionTpsl
        - standaloneTpsl
        - resolved
        - pending
      type: object
    BuilderStamp:
      additionalProperties: false
      properties:
        coverage:
          $ref: '#/components/schemas/BuilderCoverage'
          description: >-
            Attribution coverage vs the ledger; null until the coverage pipeline
            is provisioned
        ledger_block:
          description: >-
            Latest block in HL's builder-fee ledger this data was verified
            against
          format: int64
          type: integer
        ledger_chain_time:
          description: Chain timestamp of that ledger entry (RFC3339)
          type: string
      required:
        - ledger_block
        - ledger_chain_time
        - coverage
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    BuilderCoverage:
      additionalProperties: false
      properties:
        attributed_fees_usd:
          description: Join-attributed fees in the rollup window
          format: double
          type: number
        computed_at:
          description: When the rollup was computed (RFC3339)
          type: string
        ledger_fees_usd:
          description: Exact ledger revenue in the rollup window
          format: double
          type: number
        ratio:
          description: >-
            attributed_fees / ledger_fees — the share of revenue the fill-level
            metrics account for
          format: double
          type: number
        window_end:
          description: End of that window (RFC3339)
          type: string
        window_start:
          description: Start of the window the coverage rollup was computed over (RFC3339)
          type: string
      required:
        - window_start
        - window_end
        - ledger_fees_usd
        - attributed_fees_usd
        - ratio
        - computed_at
      type: object
  securitySchemes:
    apiKey:
      description: Get one at https://coinversa.ai/developers
      in: header
      name: X-API-Key
      type: apiKey

````