---
title: "Get session assessment"
method: GET
path: "/v1/projects/{projectSlug}/sessions/{sessionId}/assessment"
tags: ["Sessions"]
---

# Get session assessment

`GET /v1/projects/{projectSlug}/sessions/{sessionId}/assessment`

## Request

- Base URL: `https://api.latitude.so`
- URL: `https://api.latitude.so/v1/projects/{projectSlug}/sessions/{sessionId}/assessment`
- Auth: HTTP bearer

Explains a session across outcome, reliability, cost, speed, and safety with complete summaries, reader coverage, and a chronological page of evidence. Evidence contains identifiers for authorized records rather than raw message, tool, or span content.

## Path parameters

- `projectSlug` string, required: Project slug (human-readable identifier)
- `sessionId` string, required: Session identifier lifted from instrumentation. Up to 128 characters.

## Query parameters

- `cursor` string: Opaque cursor returned by a previous assessment page. Omit for the first page.

## Response `200`

Session assessment page

- SessionAssessment
  - `sessionId` string, required: Session represented by this assessment.
  - `items` SessionAssessmentItem[], required: Chronological page of deduplicated evidence items.
    - `id` string, required: Stable identifier for this assessment item.
    - `evidenceKey` string, required: Stable identity of the underlying fact across recomputation.
    - `groupKey` string, required: Stable identity used to group equivalent findings and linked judgments.
    - `label` string, required: Short human-readable explanation of the evidence.
    - `description` string: Additional explanation when available; never raw telemetry content.
    - `occurredAt` string, date-time: ISO-8601 timestamp for when the evidence occurred, when telemetry provides one.
    - `source` 'metric' | 'signal' | 'flagger' | 'score' | 'moment', required: Source that identified the fact.
    - `polarity` 'negative' | 'unknown' | 'positive', required: Whether the finding is harmful, beneficial, or requires interpretation.
    - `impactLevel` 'low' | 'medium' | 'high', required: Coarse impact level for ordering and display.
    - `metricId` string: Canonical metric identifier when the item has benchmark semantics.
    - `signalIds` string[], required: Signals linked to the same underlying fact.
    - `scoreIds` string[], required: Scores linked to the same underlying fact.
    - `occurrenceCount` integer, required: Number of equivalent occurrences represented by this item.
    - `effects` SessionAssessmentDimensionEffect[], required: Dimension-specific interpretations of this evidence.
      - union
        - object
          - `scoreDimension` 'outcome', required: Outcome dimension.
          - `role` 'taskOutcome', required: Evidence about whether the task succeeded.
          - `direction` 'positive' | 'negative' | 'context', required: How the evidence affects this dimension.
          - `measurement` 'observed' | 'estimated' | 'notMeasured', required: Whether the impact was measured, estimated, or left unquantified.
          - `benchmarkUse` 'direct' | 'modeled' | 'attributionOnly' | 'contextOnly', required: How this evidence may be used in benchmark calculations.
          - `impact` union: Native structured impact carried by this evidence.
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `costEvaluation` SessionAssessmentCostEvaluation: Cost family evaluation for this evidence. Only Cost evidence carries one.
            - `family` 'spend' | 'context' | 'tools' | 'memory' | 'recovery', required: Cost family this evidence belongs to: spend, context, tools, memory, or recovery.
            - `rawValue` number: The metric's raw reading in `rawUnit`, when measured.
            - `rawUnit` 'microcents' | 'inputTokens' | 'cacheTokens' | 'contextLimitTokens' | 'toolCalls' | 'memoryOperations' | 'memoryReads' | 'memoryWrites' | 'completedSessions': Native unit of `rawValue`.
            - `measurementState` 'measured' | 'unmeasured' | 'notApplicable', required: Whether this evidence was measured, could not be measured, or did not apply. This is not a health label.
            - `nativeImpact` SessionAssessmentEstimateRange: Impact in the family's own unit. Never a score: sessions do not receive Cost numbers.
              - …
        - object
          - `scoreDimension` 'reliability', required: Reliability dimension.
          - `role` 'completionOutcome' | 'operationalIncident', required: Reliability evidence channel informed by this item.
          - `direction` 'positive' | 'negative' | 'context', required: How the evidence affects this dimension.
          - `measurement` 'observed' | 'estimated' | 'notMeasured', required: Whether the impact was measured, estimated, or left unquantified.
          - `benchmarkUse` 'direct' | 'modeled' | 'attributionOnly' | 'contextOnly', required: How this evidence may be used in benchmark calculations.
          - `impact` union: Native structured impact carried by this evidence.
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `costEvaluation` SessionAssessmentCostEvaluation: Cost family evaluation for this evidence. Only Cost evidence carries one.
            - `family` 'spend' | 'context' | 'tools' | 'memory' | 'recovery', required: Cost family this evidence belongs to: spend, context, tools, memory, or recovery.
            - `rawValue` number: The metric's raw reading in `rawUnit`, when measured.
            - `rawUnit` 'microcents' | 'inputTokens' | 'cacheTokens' | 'contextLimitTokens' | 'toolCalls' | 'memoryOperations' | 'memoryReads' | 'memoryWrites' | 'completedSessions': Native unit of `rawValue`.
            - `measurementState` 'measured' | 'unmeasured' | 'notApplicable', required: Whether this evidence was measured, could not be measured, or did not apply. This is not a health label.
            - `nativeImpact` SessionAssessmentEstimateRange: Impact in the family's own unit. Never a score: sessions do not receive Cost numbers.
              - …
        - object
          - `scoreDimension` 'cost', required: Cost dimension.
          - `role` 'spendEfficiency', required: Evidence about useful versus avoidable spend.
          - `direction` 'positive' | 'negative' | 'context', required: How the evidence affects this dimension.
          - `measurement` 'observed' | 'estimated' | 'notMeasured', required: Whether the impact was measured, estimated, or left unquantified.
          - `benchmarkUse` 'direct' | 'modeled' | 'attributionOnly' | 'contextOnly', required: How this evidence may be used in benchmark calculations.
          - `impact` union: Native structured impact carried by this evidence.
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `costEvaluation` SessionAssessmentCostEvaluation: Cost family evaluation for this evidence. Only Cost evidence carries one.
            - `family` 'spend' | 'context' | 'tools' | 'memory' | 'recovery', required: Cost family this evidence belongs to: spend, context, tools, memory, or recovery.
            - `rawValue` number: The metric's raw reading in `rawUnit`, when measured.
            - `rawUnit` 'microcents' | 'inputTokens' | 'cacheTokens' | 'contextLimitTokens' | 'toolCalls' | 'memoryOperations' | 'memoryReads' | 'memoryWrites' | 'completedSessions': Native unit of `rawValue`.
            - `measurementState` 'measured' | 'unmeasured' | 'notApplicable', required: Whether this evidence was measured, could not be measured, or did not apply. This is not a health label.
            - `nativeImpact` SessionAssessmentEstimateRange: Impact in the family's own unit. Never a score: sessions do not receive Cost numbers.
              - …
        - object
          - `scoreDimension` 'speed', required: Speed dimension.
          - `role` 'criticalPathEfficiency', required: Evidence about critical-path efficiency.
          - `direction` 'positive' | 'negative' | 'context', required: How the evidence affects this dimension.
          - `measurement` 'observed' | 'estimated' | 'notMeasured', required: Whether the impact was measured, estimated, or left unquantified.
          - `benchmarkUse` 'direct' | 'modeled' | 'attributionOnly' | 'contextOnly', required: How this evidence may be used in benchmark calculations.
          - `impact` union: Native structured impact carried by this evidence.
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `costEvaluation` SessionAssessmentCostEvaluation: Cost family evaluation for this evidence. Only Cost evidence carries one.
            - `family` 'spend' | 'context' | 'tools' | 'memory' | 'recovery', required: Cost family this evidence belongs to: spend, context, tools, memory, or recovery.
            - `rawValue` number: The metric's raw reading in `rawUnit`, when measured.
            - `rawUnit` 'microcents' | 'inputTokens' | 'cacheTokens' | 'contextLimitTokens' | 'toolCalls' | 'memoryOperations' | 'memoryReads' | 'memoryWrites' | 'completedSessions': Native unit of `rawValue`.
            - `measurementState` 'measured' | 'unmeasured' | 'notApplicable', required: Whether this evidence was measured, could not be measured, or did not apply. This is not a health label.
            - `nativeImpact` SessionAssessmentEstimateRange: Impact in the family's own unit. Never a score: sessions do not receive Cost numbers.
              - …
        - object
          - `scoreDimension` 'safety', required: Safety dimension.
          - `role` 'confirmedHarm' | 'exposure' | 'successfulDefense', required: Safety evidence channel informed by this item.
          - `direction` 'positive' | 'negative' | 'context', required: How the evidence affects this dimension.
          - `measurement` 'observed' | 'estimated' | 'notMeasured', required: Whether the impact was measured, estimated, or left unquantified.
          - `benchmarkUse` 'direct' | 'modeled' | 'attributionOnly' | 'contextOnly', required: How this evidence may be used in benchmark calculations.
          - `impact` union: Native structured impact carried by this evidence.
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `costEvaluation` SessionAssessmentCostEvaluation: Cost family evaluation for this evidence. Only Cost evidence carries one.
            - `family` 'spend' | 'context' | 'tools' | 'memory' | 'recovery', required: Cost family this evidence belongs to: spend, context, tools, memory, or recovery.
            - `rawValue` number: The metric's raw reading in `rawUnit`, when measured.
            - `rawUnit` 'microcents' | 'inputTokens' | 'cacheTokens' | 'contextLimitTokens' | 'toolCalls' | 'memoryOperations' | 'memoryReads' | 'memoryWrites' | 'completedSessions': Native unit of `rawValue`.
            - `measurementState` 'measured' | 'unmeasured' | 'notApplicable', required: Whether this evidence was measured, could not be measured, or did not apply. This is not a health label.
            - `nativeImpact` SessionAssessmentEstimateRange: Impact in the family's own unit. Never a score: sessions do not receive Cost numbers.
              - …
    - `anchors` SessionAssessmentEvidenceAnchor[], required: Positions where the fact occurred, represented only by identifiers.
      - union
        - object
          - `kind` 'message', required
          - `traceId` string, required: Trace containing the referenced message.
          - `messageIndex` integer, required: Zero-based message position in the trace conversation.
          - `partIndex` integer: Zero-based content-part position within the message.
          - `contentHash` string: Stable hash used to recognize the referenced message content.
        - object
          - `kind` 'span', required
          - `traceId` string, required: Trace containing the referenced span.
          - `spanId` string, required: Identifier of the referenced span.
        - object
          - `kind` 'toolCall', required
          - `traceId` string, required: Trace containing the referenced tool call.
          - `toolCallId` string, required: Provider or SDK identifier of the referenced tool call.
          - `toolName` string: Name of the invoked tool when available.
          - `messageIndex` integer: Message position containing the tool call.
        - object
          - `kind` 'memoryEvent', required
          - `memoryEventId` string, required: Identifier of the referenced memory event.
        - object
          - `kind` 'score', required
          - `scoreId` string, required: Identifier of the referenced score.
        - object
          - `kind` 'signal', required
          - `signalId` string, required: Identifier of the referenced signal.
    - `destinations` SessionAssessmentEvidenceDestination[], required: Authorized product records that a caller can open for the underlying details.
      - union
        - object
          - `kind` 'sessionMessage', required
          - `traceId` string, required: Trace containing the destination message.
          - `messageIndex` integer, required: Zero-based message position to open.
          - `partIndex` integer: Zero-based content-part position to open.
        - object
          - `kind` 'span', required
          - `traceId` string, required: Trace containing the destination span.
          - `spanId` string, required: Identifier of the destination span.
        - object
          - `kind` 'toolCall', required
          - `traceId` string, required: Trace containing the destination tool call.
          - `toolCallId` string, required: Identifier of the destination tool call.
        - object
          - `kind` 'memoryEvent', required
          - `memoryEventId` string, required: Identifier of the destination memory event.
        - object
          - `kind` 'score', required
          - `scoreId` string, required: Identifier of the destination score.
        - object
          - `kind` 'signal', required
          - `signalId` string, required: Identifier of the destination signal.
  - `nextCursor` string: Opaque cursor for the next evidence page. Absent when there are no more items.
  - `dimensions` SessionAssessmentDimensionSummary[], required: Complete summaries for all five Agent Score dimensions, repeated on every page.
    - union
      - object
        - `scoreDimension` 'outcome', required: Outcome dimension.
        - `evidenceCounts` object, required: Evidence counts grouped by direction.
          - `positive` integer, required: Number of positive evidence effects.
          - `negative` integer, required: Number of negative evidence effects.
          - `context` integer, required: Number of contextual evidence effects.
        - `measurementCounts` object, required: Evidence counts grouped by measurement state.
          - `observed` integer, required: Number of directly observed effects.
          - `estimated` integer, required: Number of estimated effects.
          - `notMeasured` integer, required: Number of effects without a numeric measurement.
        - `coverage` 'complete' | 'partial' | 'notExamined', required: Reader coverage for this dimension.
        - `taskOutcome` object: Resolved task outcome when available.
          - `verdict` 'success' | 'failure': Observed task verdict when available.
          - `probability` number: Estimated success probability when available.
      - object
        - `scoreDimension` 'reliability', required: Reliability dimension.
        - `evidenceCounts` object, required: Evidence counts grouped by direction.
          - `positive` integer, required: Number of positive evidence effects.
          - `negative` integer, required: Number of negative evidence effects.
          - `context` integer, required: Number of contextual evidence effects.
        - `measurementCounts` object, required: Evidence counts grouped by measurement state.
          - `observed` integer, required: Number of directly observed effects.
          - `estimated` integer, required: Number of estimated effects.
          - `notMeasured` integer, required: Number of effects without a numeric measurement.
        - `coverage` 'complete' | 'partial' | 'notExamined', required: Reader coverage for this dimension.
        - `completion` 'usable' | 'terminalFailure' | 'undetermined', required: Resolved completion status.
        - `recoveredIncidentCount` integer, required: Number of recovered operational incidents.
        - `unrecoveredIncidentCount` integer, required: Number of unrecovered operational incidents.
      - object
        - `scoreDimension` 'cost', required: Cost dimension.
        - `evidenceCounts` object, required: Evidence counts grouped by direction.
          - `positive` integer, required: Number of positive evidence effects.
          - `negative` integer, required: Number of negative evidence effects.
          - `context` integer, required: Number of contextual evidence effects.
        - `measurementCounts` object, required: Evidence counts grouped by measurement state.
          - `observed` integer, required: Number of directly observed effects.
          - `estimated` integer, required: Number of estimated effects.
          - `notMeasured` integer, required: Number of effects without a numeric measurement.
        - `coverage` 'complete' | 'partial' | 'notExamined', required: Reader coverage for this dimension.
        - `observedMicrocents` number: Total observed session spend in microcents.
        - `measuredAvoidableMicrocents` number: Directly measured avoidable spend.
        - `estimatedAvoidableMicrocents` number: Estimated avoidable spend.
        - `families` SessionAssessmentCostFamilySummary[], required: All five Cost families, always present, with raw metric readings and their measurement state.
          - `family` 'spend' | 'context' | 'tools' | 'memory' | 'recovery', required: Cost family this evidence belongs to: spend, context, tools, memory, or recovery.
          - `measurementState` 'measured' | 'partial' | 'unmeasured' | 'notApplicable', required: Aggregate measurement state across this family's metrics. This is not a health label.
          - `observedItemCount` integer, required: Evidence items carrying this family.
          - `metrics` SessionAssessmentCostMetricEvidence[], required: Aggregate session-safe readings for this family's metrics.
            - `metricId` string, required: Stable identifier of the Cost metric.
            - `family` 'spend' | 'context' | 'tools' | 'memory' | 'recovery', required: Cost family this evidence belongs to: spend, context, tools, memory, or recovery.
            - `aggregation` 'resourceRatio' | 'eventRate' | 'sessionMean', required: How the aggregate reading was calculated for this session.
            - `measurementState` 'measured' | 'unmeasured' | 'notApplicable', required: Whether the metric produced a raw session reading. This is not a health label.
            - `rawUnit` 'microcents' | 'inputTokens' | 'cacheTokens' | 'contextLimitTokens' | 'toolCalls' | 'memoryOperations' | 'memoryReads' | 'memoryWrites' | 'completedSessions', required: Native unit used by the Cost metric.
            - `rawValue` number: Aggregate raw metric value when measured.
            - `eligibleUnits` number: Total session units eligible for this metric.
            - `adverseUnits` number: Observed adverse units within `eligibleUnits`; never a calibrated penalty.
            - `evidence` 'confirmed' | 'modeled': Whether the reported native impact is directly confirmed or modeled.
            - `nativeImpact` object: Impact in the metric's native unit, when available.
              - …
            - `limitations` string[], required: Known limits on how completely the metric could examine the session.
          - `nativeImpact` object: Family impact in its own unit, when aggregated.
            - `unit` string, required: Unit both the point estimate and its bounds are expressed in.
            - `point` number, required: Point estimate in `unit`.
            - `lower` number: Lower bound in `unit`, when the estimate is bounded.
            - `upper` number: Upper bound in `unit`, when the estimate is bounded.
            - `interpretation` 'identificationBound' | 'confidenceInterval': What the bounds mean. `identificationBound` is the range the evidence cannot narrow further; `confidenceInterval` is sampling uncertainty. Present whenever a bound is.
      - object
        - `scoreDimension` 'speed', required: Speed dimension.
        - `evidenceCounts` object, required: Evidence counts grouped by direction.
          - `positive` integer, required: Number of positive evidence effects.
          - `negative` integer, required: Number of negative evidence effects.
          - `context` integer, required: Number of contextual evidence effects.
        - `measurementCounts` object, required: Evidence counts grouped by measurement state.
          - `observed` integer, required: Number of directly observed effects.
          - `estimated` integer, required: Number of estimated effects.
          - `notMeasured` integer, required: Number of effects without a numeric measurement.
        - `coverage` 'complete' | 'partial' | 'notExamined', required: Reader coverage for this dimension.
        - `observedCriticalPathNs` number: Observed critical-path duration in nanoseconds.
        - `measuredAvoidableNs` number: Directly measured avoidable duration.
        - `estimatedAvoidableNs` number: Estimated avoidable duration.
      - object
        - `scoreDimension` 'safety', required: Safety dimension.
        - `evidenceCounts` object, required: Evidence counts grouped by direction.
          - `positive` integer, required: Number of positive evidence effects.
          - `negative` integer, required: Number of negative evidence effects.
          - `context` integer, required: Number of contextual evidence effects.
        - `measurementCounts` object, required: Evidence counts grouped by measurement state.
          - `observed` integer, required: Number of directly observed effects.
          - `estimated` integer, required: Number of estimated effects.
          - `notMeasured` integer, required: Number of effects without a numeric measurement.
        - `coverage` 'complete' | 'partial' | 'notExamined', required: Reader coverage for this dimension.
        - `exposureCount` integer, required: Number of safety exposures.
        - `successfulDefenseCount` integer, required: Number of successful safety defenses.
        - `confirmedHarmCount` integer, required: Number of confirmed harmful outcomes.
  - `coverage` object, required: Complete reader coverage for the session, repeated on every page.
    - `readers` SessionAssessmentReaderCoverage[], required: Coverage status for each evidence reader.
      - union
        - object
          - `readerId` string, required: Stable identifier of the evidence reader.
          - `label` string, required: Human-readable reader name.
          - `scoreDimensions` string[], required: Dimensions the reader can inform.
          - `status` 'examined', required
          - `findingCount` integer, required: Number of findings produced by the reader.
          - `selection` object: Sampling details when this reader is not deterministic.
            - `method` 'deterministic' | 'hinted' | 'jev-preclassifier' | 'uniform-sample' | 'ordinary-sample', required: Selection method.
            - `inclusionProbability` number, required: Probability that this session was selected.
        - object
          - `readerId` string, required: Stable identifier of the evidence reader.
          - `label` string, required: Human-readable reader name.
          - `scoreDimensions` string[], required: Dimensions the reader can inform.
          - `status` 'partiallyExamined', required
          - `findingCount` integer, required: Number of findings produced by readable inputs.
          - `readableCount` integer, required: Number of inputs the reader could examine.
          - `totalCount` integer, required: Total candidate inputs for the reader.
          - `limitation` 'skipped' | 'notSelected' | 'rateLimited' | 'executionFailed' | 'pending' | 'missingTelemetry' | 'unmappedTelemetry' | 'missingPricing' | 'missingContent' | 'truncatedContent' | 'unknownModelContext' | 'criticalPathUnavailable' | 'missingLatencyReference', required: Reason the reader could not completely examine the session.
          - `selection` object: Sampling details when this reader is not deterministic.
            - `method` 'deterministic' | 'hinted' | 'jev-preclassifier' | 'uniform-sample' | 'ordinary-sample', required: Selection method.
            - `inclusionProbability` number, required: Probability that this session was selected.
        - object
          - `readerId` string, required: Stable identifier of the evidence reader.
          - `label` string, required: Human-readable reader name.
          - `scoreDimensions` string[], required: Dimensions the reader can inform.
          - `status` 'notExamined', required
          - `limitation` 'skipped' | 'notSelected' | 'rateLimited' | 'executionFailed' | 'pending' | 'missingTelemetry' | 'unmappedTelemetry' | 'missingPricing' | 'missingContent' | 'truncatedContent' | 'unknownModelContext' | 'criticalPathUnavailable' | 'missingLatencyReference', required: Reason the reader could not completely examine the session.
          - `selection` object: Sampling details when this reader is not deterministic.
            - `method` 'deterministic' | 'hinted' | 'jev-preclassifier' | 'uniform-sample' | 'ordinary-sample', required: Selection method.
            - `inclusionProbability` number, required: Probability that this session was selected.
        - object
          - `readerId` string, required: Stable identifier of the evidence reader.
          - `label` string, required: Human-readable reader name.
          - `scoreDimensions` string[], required: Dimensions the reader can inform.
          - `status` 'notApplicable', required

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `404`: Not found

## Changes

- **2026-09-18** `cbb9b74ab9c4`: 1 breaking, 1 info
  - added `subschema #1, subschema #2, subschema #3` to the `coverage/readers/items/` response property `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #2, subschema #3` from the `coverage/readers/items/` response property `oneOf` list for the response status `200`
- **2026-09-12** `c726d219e721`: 1 breaking, 1 info
  - added `subschema #2, subschema #3` to the `coverage/readers/items/` response property `oneOf` list for the response status `200`
  - removed `subschema #2, subschema #3` from the `coverage/readers/items/` response property `oneOf` list for the response status `200`
- **2026-09-12** `8815d7a6d8fd`: 1 breaking, 1 info
  - added `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5` to the `items/items/effects/items/` response property `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5` from the `items/items/effects/items/` response property `oneOf` list for the response status `200`
- …earlier changes not shown

[Operation history](https://skmtc.dev/latitude-dev/apis/latitude/changes/v1/projects/:projectSlug/sessions/:sessionId/assessment/get.md)

---

[API](https://skmtc.dev/latitude-dev/apis/latitude.md) - [All operations](https://skmtc.dev/latitude-dev/apis/latitude/llms.txt) - [OpenAPI document](https://skmtc.dev/latitude-dev/apis/latitude/revisions/0685be1cbf9f?raw)
