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

# Get exact model-cost summaries for a batch of sessions



## OpenAPI

````yaml /managed-agents/openapi.yaml get /managed-agents/v1/sessions/costs
openapi: 3.1.0
info:
  title: Managed Agents API
  version: 0.13.0
  description: >-
    The Recursion Managed Agents REST API. Authenticate with a Recursion API key
    as a bearer token. An organization-scoped key acts in its own organization
    and needs nothing else; a tenant-scoped key must also send
    `x-organization-id` with an organization id or `default`. Field names follow
    each operation's published schema.
servers:
  - url: https://api.recursion.labelbox.com
security:
  - bearerAuth: []
paths:
  /managed-agents/v1/sessions/costs:
    get:
      tags:
        - Session Model Costs
      summary: Get exact model-cost summaries for a batch of sessions
      operationId: managedAgentsListSessionModelCosts
      parameters:
        - description: >-
            Comma-separated session ids. The response preserves request order
            and duplicates. If any id is missing or outside the caller's
            organization/access policy, the complete request returns the same
            non-disclosing 404.
          in: query
          name: session_ids
          required: true
          schema:
            description: >-
              Comma-separated session ids. The response preserves request order
              and duplicates. If any id is missing or outside the caller's
              organization/access policy, the complete request returns the same
              non-disclosing 404.
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsSessionModelCostListResponse'
          description: >-
            Model-cost rollups for a batch of sessions, so a list view can show
            spend per row without one read per session.
        '400':
          description: The request was rejected by schema or semantic validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiError'
        '401':
          description: The caller is unauthenticated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiError'
        '403':
          description: The caller lacks a required permission or capability.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorForbidden'
        '404':
          description: No such resource is reachable for this caller.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorNotFound'
        '429':
          headers:
            Retry-After:
              description: Seconds the caller should wait before retrying.
              schema:
                type: string
              style: simple
          description: A rate limit is exhausted. Honor `Retry-After`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiError'
        '500':
          description: An unexpected server-side failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiError'
        '502':
          description: The service returned an invalid response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorBadGateway'
        '503':
          headers:
            Retry-After:
              description: Seconds the caller should wait before retrying.
              schema:
                type: string
              style: simple
          description: A dependency is unavailable. Retryable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiError'
        '504':
          headers:
            Retry-After:
              description: When to retry, as delay seconds or an HTTP date.
              schema:
                type: string
          description: The service did not respond before the timeout. Retryable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorGatewayTimeout'
components:
  schemas:
    ManagedAgentsSessionModelCostListResponse:
      description: >-
        Model-cost rollups for a batch of sessions, so a list view can show
        spend per row without one read per session.
      properties:
        session_model_costs:
          description: >-
            One entry per requested session id, in request order and repeated
            when an id is asked for more than once. Authorization is
            all-or-nothing: if any requested id is unknown or outside the
            caller's organization or access policy, the whole request returns
            404 rather than a short array.
          items:
            $ref: >-
              #/components/schemas/ManagedAgentsSessionModelCostSummariesResponse
          type: array
      required:
        - session_model_costs
      type: object
      example:
        session_model_costs:
          - self:
              adjustment_count: example
              attempt_count: example
              charge_count: example
              completeness: complete
              model_cost_usd: example
              scope: self
              session_id: 9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d
            session_id: 9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d
            subtree:
              adjustment_count: example
              attempt_count: example
              charge_count: example
              completeness: complete
              model_cost_usd: example
              scope: self
              session_id: 9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d
            tree:
              adjustment_count: example
              attempt_count: example
              charge_count: example
              completeness: complete
              model_cost_usd: example
              scope: self
              session_id: 9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d
    ManagedAgentsApiError:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - analytics
            - analytics_not_ready
            - artifact_fetch_unavailable
            - artifact_generation_mismatch
            - artifact_hash_mismatch
            - artifact_invalid_events
            - artifact_invalid_json
            - artifact_not_allowlisted
            - artifact_size_mismatch
            - atlassian_rate_limited
            - atlassian_unavailable
            - atomic_ingest_timeout
            - auth_unavailable
            - automation_event_source_invalid
            - automation_memory_unavailable
            - automation_reference_invalid
            - automation_runs_unconfigured
            - automations_unconfigured
            - bad_gateway
            - built_in_catalog_unavailable
            - built_in_integrations_disabled
            - built_in_integrations_unconfigured
            - compute_offerings_unavailable
            - conflict
            - content_store_request_canceled
            - content_store_unavailable
            - content_store_upload_timeout
            - credential_encryption_unconfigured
            - delegate_preparation_failed
            - entity_family_not_permitted
            - environment_not_verified
            - evaluation_cancellation_pending
            - evaluation_deletion_pending
            - event_admission_unavailable
            - event_ingress_unavailable
            - event_source_verification_credential_invalid
            - event_sources_unconfigured
            - execution_unconfigured
            - file_quota_exceeded
            - file_storage_unconfigured
            - forbidden
            - gateway_timeout
            - gestalt_unconfigured
            - github_rate_limited
            - github_unavailable
            - handoff_access_invalid
            - handoff_access_unavailable
            - handoff_access_unsupported
            - handoff_capture_unavailable
            - handoff_requires_retest
            - handoff_revoke_unavailable
            - handoff_signal_unavailable
            - idempotency_conflict
            - idempotency_in_progress
            - idempotency_unavailable
            - ingest_policy_changed
            - ingest_policy_not_found
            - ingest_policy_revoked
            - integrations_unconfigured
            - internal_error
            - invalid_json
            - invalid_pull_request_review_result
            - invalid_request
            - invalid_scope
            - invariant_violation
            - launchdarkly_rate_limited
            - launchdarkly_unavailable
            - live_fleet_unconfigured
            - managed_agents_unavailable
            - merge_key_rejected
            - merge_link_unavailable
            - merge_rate_limited
            - merge_unavailable
            - missing_dependency
            - model_gateway_metadata_missing
            - model_gateway_unconfigured
            - model_gateway_unreachable
            - mutation_transaction_budget_exceeded
            - not_found
            - page_token_expired
            - payload_too_large
            - persistence_busy
            - precondition_failed
            - precondition_required
            - provider_registration_unsupported
            - provider_selection_unsupported
            - rate_limit_exceeded
            - rate_limited
            - repository_automation_unconfigured
            - request_too_large
            - reserved_source_type
            - revision_conflict
            - run_log_store_unavailable
            - runner_image_resolution_failed
            - sandbox_provider_disabled
            - service_unavailable
            - session_analyst_busy
            - session_analyst_model_unavailable
            - session_analyst_unconfigured
            - session_start_admission_unavailable
            - session_start_not_admitted
            - setup_fallback_environment_unsafe
            - setup_run_finished
            - setup_run_in_progress
            - setup_run_limit
            - setup_run_not_started
            - setup_runs_unavailable
            - skill_storage_unconfigured
            - slack_channels_rejected
            - slack_channels_unavailable
            - slack_channels_unconfigured
            - slack_connection_malformed
            - slack_event_intake_unavailable
            - slack_installation_mismatch
            - slack_missing_scope
            - slack_rate_limited
            - slack_reapproval_required
            - source_ownership_mismatch
            - source_revision_conflict
            - spanner_unavailable
            - streaming_unsupported
            - submission_transaction_budget_exceeded
            - task_version_number_conflict
            - team_board_unconfigured
            - too_many_streams
            - unauthorized
            - unsupported_media_type
            - vault_creation_retired
            - version_content_conflict
            - webhook_delivery_too_large
            - workspace_boundary_denied
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          description: Optional structured error details.
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorForbidden:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - forbidden
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          description: Optional structured error details.
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorNotFound:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - not_found
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          description: Optional structured error details.
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorBadGateway:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - bad_gateway
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          description: Optional structured error details.
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorGatewayTimeout:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - gateway_timeout
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          description: Optional structured error details.
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsSessionModelCostSummariesResponse:
      description: >-
        One session's three scope rollups, read from a single database snapshot
        so self, subtree, and tree cannot disagree with one another.
      properties:
        self:
          $ref: '#/components/schemas/ManagedAgentsSessionModelCostSummaryResponse'
          description: >-
            Totals for this session's own attempts, excluding every child
            session.
        session_id:
          description: Session these three rollups were requested for (UUID).
          type: string
        subtree:
          $ref: '#/components/schemas/ManagedAgentsSessionModelCostSummaryResponse'
          description: Totals for this session and every session beneath it in the tree.
        tree:
          $ref: '#/components/schemas/ManagedAgentsSessionModelCostSummaryResponse'
          description: >-
            Totals for every session sharing the same root session, including
            this session's ancestors and siblings.
      required:
        - session_id
        - self
        - subtree
        - tree
      type: object
      example:
        self:
          adjustment_count: example
          attempt_count: example
          charge_count: example
          completeness: complete
          model_cost_usd: example
          scope: self
          session_id: 9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d
        session_id: 9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d
        subtree:
          adjustment_count: example
          attempt_count: example
          charge_count: example
          completeness: complete
          model_cost_usd: example
          scope: self
          session_id: 9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d
        tree:
          adjustment_count: example
          attempt_count: example
          charge_count: example
          completeness: complete
          model_cost_usd: example
          scope: self
          session_id: 9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d
    ManagedAgentsSessionModelCostSummaryResponse:
      description: >-
        Model-cost rollup for one session scope: the exact ledger amount, how
        complete the accounting behind it is, and the counts it was derived
        from. attempt_count is every provider call the ledger is accountable
        for, charge_count only those that produced a receipt, and
        adjustment_count the signed corrections applied since. Model spend only:
        sandbox, tool, and storage cost are not included.
      properties:
        adjustment_count:
          description: Exact base-10 integer string.
          type: string
        attempt_count:
          description: Exact base-10 integer string.
          type: string
        charge_count:
          description: Exact base-10 integer string.
          type: string
        completeness:
          description: >-
            Weakest accounting state present in scope, so a rollup never
            overstates confidence: complete when every attempt is fully priced,
            pending when no attempt has been recorded yet or an outcome is still
            unknown, unpriced when no catalog rule matched the provider's
            quantities, partial when only part of the cost is known or several
            states are mixed, legacy_partial for charges recorded before the
            current reconciliation rules, and indeterminate when an attempt may
            have been billed without a usable receipt.
          enum:
            - complete
            - pending
            - unpriced
            - partial
            - legacy_partial
            - indeterminate
          type: string
        model_cost_usd:
          description: >-
            Exact canonical decimal USD string. It is model cost only, not total
            session spend. Customers receive the amount their organization is
            billed; only trusted internal callers receive raw ledger cost here.
          type: string
        scope:
          description: >-
            Which sessions contributed: self counts this session's own attempts,
            subtree adds every session beneath it, and tree covers every session
            sharing the same root session.
          enum:
            - self
            - subtree
            - tree
          type: string
        session_id:
          description: >-
            Session this rollup was requested for (UUID). Scope decides which
            sessions in its tree contributed to the figures.
          type: string
      required:
        - session_id
        - scope
        - model_cost_usd
        - completeness
        - attempt_count
        - charge_count
        - adjustment_count
      type: object
      example:
        adjustment_count: example
        attempt_count: example
        charge_count: example
        completeness: complete
        model_cost_usd: example
        scope: self
        session_id: 9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: A Recursion API key, created in the console under API keys.

````