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

# Get Inference Usage Attribution Rollup

> Returns inference request and token usage across the Edges the caller manages, grouped by the selected attribution dimension.



## OpenAPI

````yaml https://spec.speakeasy.com/conductor-one/conductorone/my-source-with-code-samples get /api/v1/edges/inference/usage-attribution
openapi: 3.1.0
info:
  description: The C1 API is a HTTP API for managing C1 resources.
  title: C1 API
  version: 0.1.0-alpha
servers:
  - description: The C1 API server for the current tenant.
    url: https://{tenantDomain}.conductor.one
    variables:
      tenantDomain:
        default: example
        description: The domain of the tenant to use for this request.
security:
  - bearerAuth: []
    oauth: []
paths:
  /api/v1/edges/inference/usage-attribution:
    get:
      tags:
        - Edge
      summary: Get Inference Usage Attribution Rollup
      description: >-
        Returns inference request and token usage across the Edges the caller
        manages, grouped by the selected attribution dimension.
      operationId: c1.api.edge.v1.EdgeService.GetInferenceUsageAttributionRollup
      parameters:
        - in: query
          name: dimension
          schema:
            description: The dimension field.
            enum:
              - TB_USAGE_ATTRIBUTION_DIMENSION_UNSPECIFIED
              - TB_USAGE_ATTRIBUTION_DIMENSION_TEAM
              - TB_USAGE_ATTRIBUTION_DIMENSION_APPLICATION
              - TB_USAGE_ATTRIBUTION_DIMENSION_AGENT
              - TB_USAGE_ATTRIBUTION_DIMENSION_COST_CENTER
              - TB_USAGE_ATTRIBUTION_DIMENSION_USER
              - TB_USAGE_ATTRIBUTION_DIMENSION_PROVIDER
              - TB_USAGE_ATTRIBUTION_DIMENSION_MODEL
              - TB_USAGE_ATTRIBUTION_DIMENSION_ROUTE
              - TB_USAGE_ATTRIBUTION_DIMENSION_CALL_ROLE
            type: string
            x-speakeasy-unknown-values: allow
        - in: query
          name: page_size
          schema:
            description: The pageSize field.
            format: int32
            type: integer
        - in: query
          name: since
          schema:
            description: The since field.
            format: int64
            type: string
        - in: query
          name: until
          schema:
            description: The until field.
            format: int64
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/c1.api.edge.v1.EdgeServiceGetInferenceUsageAttributionRollupResponse
          description: Successful response
components:
  schemas:
    c1.api.edge.v1.EdgeServiceGetInferenceUsageAttributionRollupResponse:
      description: The EdgeServiceGetInferenceUsageAttributionRollupResponse message.
      properties:
        edgeCount:
          description: >-
            Number of authorized Edges included. Zero means the caller manages
            no
             Edges, as distinct from Edges that have no traffic yet.
          format: uint32
          type: integer
        rows:
          description: |-
            Ordered by (input_tokens + output_tokens) descending, limited to
             page_size.
          items:
            $ref: '#/components/schemas/c1.api.edge.v1.TBUsageAttributionRow'
          type:
            - array
            - 'null'
      title: Edge Service Get Inference Usage Attribution Rollup Response
      type: object
      x-speakeasy-name-override: EdgeServiceGetInferenceUsageAttributionRollupResponse
    c1.api.edge.v1.TBUsageAttributionRow:
      description: TBUsageAttributionRow is one attribution-id group.
      properties:
        attributionId:
          description: >-
            Empty string means unattributed for a user-facing attribution
            dimension.
             For PROVIDER it is the raw provider_id, and for MODEL it is the raw
             provider-native served model_name. Blank remains distinct from a literal
             "Unknown" ID; clients label it Unknown provider/model.
          type: string
        cacheReadTokens:
          description: >-
            Observed provider-attempt cache usage, not inferred for missing
            attempts.
          format: uint64
          type: string
        cacheWriteTokens:
          description: The cacheWriteTokens field.
          format: uint64
          type: string
        costNanoUsd:
          description: |-
            List-price estimate for observed usage in this group, in nano-USD.
             Provider/model usage is priced per served model; long-context rates use
             average input per observed attempt. Missing usage or an unpriced model
             makes this a lower bound, not an invoiced amount.
          format: int64
          type: string
        deniedRequestCount:
          description: >-
            Logical requests denied by policy, counted in request_count. Set for
            the
             logical-request dimensions (not PROVIDER, MODEL or CALL_ROLE).
          format: uint64
          type: string
        inputTokens:
          description: >-
            PROVIDER and MODEL values include only provider-reported per-attempt
            usage.
          format: uint64
          type: string
        judgeAttemptCount:
          description: >-
            Judge (call_role auxiliary) provider attempts that reached a
            provider on
             behalf of this group's requests. Only set for the USER and ROUTE
             dimensions. Judge usage is extra usage on top of the answer: it is never
             included in input_tokens, output_tokens or cost_nano_usd above.
          format: uint64
          type: string
        judgeCostNanoUsd:
          description: >-
            List-price estimate of the observed judge usage, in nano-USD; a
            lower
             bound when the judge model is unpriced or an attempt reported no usage.
          format: int64
          type: string
        judgeInputTokens:
          description: >-
            Provider-reported judge usage; judge attempts with no reported usage
            are
             not counted here and make the judge totals a lower bound.
          format: uint64
          type: string
        judgeMissingUsageCount:
          description: Judge attempts that reported no token usage.
          format: uint64
          type: string
        judgeOutputTokens:
          description: The judgeOutputTokens field.
          format: uint64
          type: string
        missingUsageCallCount:
          description: |-
            Provider attempts with contact started but no observed token usage.
             Their cost is unknown even when the model has a list price.
          format: uint64
          type: string
        modelBreakdown:
          description: >-
            Complete breakdown of this provider's included models, only for
            PROVIDER.
             Parent counters include these children; do not sum both for scope totals.
          items:
            $ref: '#/components/schemas/c1.api.edge.v1.TBUsageAttributionModelRow'
          type:
            - array
            - 'null'
        outputTokens:
          description: The outputTokens field.
          format: uint64
          type: string
        requestCount:
          description: >-
            Logical root requests except for PROVIDER and MODEL, where this
            counts
             contacted provider attempts.
          format: uint64
          type: string
        retryAttemptCount:
          description: >-
            Provider attempts beyond the first for the same request and call
            role,
             ranked by event time rather than by the logged attempt ordinal. A judge
             attempt followed by its answer attempt is not a retry. Only set for the
             CALL_ROLE dimension.
          format: uint64
          type: string
        unpricedRequestCount:
          description: >-
            Observed requests or provider attempts whose model has no list
            price.
          format: uint64
          type: string
      title: Tb Usage Attribution Row
      type: object
      x-speakeasy-name-override: TBUsageAttributionRow
    c1.api.edge.v1.TBUsageAttributionModelRow:
      description: |-
        One provider-native served model within a PROVIDER attribution group.
         Blank model_name is distinct from a model literally named "Unknown".
      properties:
        cacheReadTokens:
          description: The cacheReadTokens field.
          format: uint64
          type: string
        cacheWriteTokens:
          description: The cacheWriteTokens field.
          format: uint64
          type: string
        costNanoUsd:
          description: The costNanoUsd field.
          format: int64
          type: string
        inputTokens:
          description: The inputTokens field.
          format: uint64
          type: string
        missingUsageCallCount:
          description: The missingUsageCallCount field.
          format: uint64
          type: string
        modelName:
          description: The modelName field.
          type: string
        outputTokens:
          description: The outputTokens field.
          format: uint64
          type: string
        requestCount:
          description: The requestCount field.
          format: uint64
          type: string
        unpricedRequestCount:
          description: The unpricedRequestCount field.
          format: uint64
          type: string
      title: Tb Usage Attribution Model Row
      type: object
      x-speakeasy-name-override: TBUsageAttributionModelRow
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http
    oauth:
      description: >-
        This API uses OAuth2 with the Client Credential flow.

        Client Credentials must be sent in the BODY, not the headers.

        For an example of how to implement this, refer to the
        [c1TokenSource.Token()](https://github.com/ConductorOne/conductorone-sdk-go/blob/3375fe7c0126d17e7ec4e711693dee7b791023aa/token_source.go#L101-L187)
        function.
      flows:
        clientCredentials:
          scopes: {}
          tokenUrl: /auth/v1/token
      type: oauth2

````