---
title: "GET /api/v1/admin/ai/safety"
method: GET
path: "/api/v1/admin/ai/safety"
tags: ["Administration", "AI Operations"]
---

# GET /api/v1/admin/ai/safety

`GET /api/v1/admin/ai/safety`

Returns granular application-recorded guardrail decisions and clearly labelled model-judged evaluations without user content. Both collections have independent bounded offset pagination while summary metrics remain scoped to the complete filtered period.

## Query parameters

- `from` string, date-time
- `to` string, date-time
- `limit` integer
- `model` string
- `productId` integer
- `evaluationsOffset` integer, nullable
- `securityEventsOffset` integer, nullable

## Cookies

- `billing_session` string

## Response `200`

Safety and evaluation data.

- object
  - `evaluations` object[], required
    - `actor` 'expert_ai' | 'triage', required
    - `agentTurnEventId` string, required
    - `attachmentUseScore` integer, nullable, required
    - `conversationId` string, uuid, required
    - `correctnessScore` integer, nullable, required
    - `evaluationDurationMs` integer, required
    - `evaluationCodes` string[], required
    - `evaluationTrigger` 'error' | 'sample' | 'security' | 'tool', required
    - `evaluationVersion` string, required
    - `evaluatorModel` string, required
    - `engineVersion` string, nullable, required
    - `eventId` string, required
    - `groundednessScore` integer, nullable, required
    - `handoffScore` integer, nullable, required
    - `helpfulnessScore` integer, nullable, required
    - `instructionFollowingScore` integer, nullable, required
    - `occurredAt` string, date-time, required
    - `outcome` 'pass' | 'fail' | 'review', required
    - `policyVersion` string, nullable, required
    - `promptVersion` string, nullable, required
    - `sampleBucket` integer, required
    - `safetyScore` integer, nullable, required
    - `toneScore` integer, nullable, required
    - `targetModel` string, nullable, required
    - `telemetryVersion` integer, nullable, required
    - `traceId` string, required
    - `triageScore` integer, nullable, required
    - `uncertaintyScore` integer, nullable, required
  - `generatedAt` string, date-time, required
  - `pagination` object, required
    - `evaluations` object, required
      - `hasMore` boolean, required
      - `limit` integer, required
      - `offset` integer, required
    - `securityEvents` object, required
      - `hasMore` boolean, required
      - `limit` integer, required
      - `offset` integer, required
  - `period` object, required
    - `from` string, date-time, required
    - `to` string, date-time, required
  - `provenance` object, required
    - `evaluations` 'model_judgment', required
    - `securityEvents` 'exact_app', required
  - `securityEvents` object[], required
    - `actor` 'expert_ai' | 'triage', required
    - `agentTurnEventId` string, required
    - `blockedReason` string, nullable, required
    - `buffered` boolean, required
    - `conversationId` string, uuid, required
    - `eventId` string, required
    - `executionTier` 'direct_model' | 'worker' | 'justbash' | 'linux' | 'null', nullable, required
    - `granularity` 'guardrail_decision', required
    - `guardrailDecision` 'allow' | 'rewrite' | 'block', required
    - `judgeLatencyMs` integer, required
    - `judgeModel` string, nullable, required
    - `messageId` string, uuid, required
    - `occurredAt` string, date-time, required
    - `policyCodes` string[], required
    - `policyVersion` string, required
    - `requiresJudge` boolean, required
    - `requiresBufferedResponse` boolean, required
    - `reviewCount` integer, required
    - `riskCategories` string[], required
    - `riskLevel` 'low' | 'medium' | 'high' | 'critical', required
    - `stage` 'input' | 'pre_tool' | 'tool_result' | 'output' | 'attachment', required
    - `submissionId` string, nullable, required
    - `toolName` string, nullable, required
    - `traceId` string, required
    - `rewriteCount` integer, required
  - `summary` object, required
    - `averageJudgeLatencyMs` integer, required
    - `averageJudgedTurnCostMicrousd` integer, nullable, required
    - `averageJudgedTurnDurationMs` integer, nullable, required
    - `averageUnjudgedTurnCostMicrousd` integer, nullable, required
    - `averageUnjudgedTurnDurationMs` integer, nullable, required
    - `blockedTurns` integer, required
    - `criticalEvents` integer, required
    - `evaluationFailures` integer, required
    - `evaluationPasses` integer, required
    - `evaluationsRequiringReview` integer, required
    - `judgeCalls` integer, required
    - `judgeCostMicrousd` integer, nullable, required
    - `judgedEvents` integer, required
    - `judgedTurns` integer, required
    - `rewrites` integer, required
    - `unjudgedTurns` integer, required

## Other responses

- `400` — The query, pagination, or session cookie is invalid.
- `401` — No valid global administrator session exists.
- `503` — AI operations telemetry is unavailable.

---

[API](https://skmtc.dev/expertschat/apis/billing-core-api.md) · [All operations](https://skmtc.dev/expertschat/apis/billing-core-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/expertschat/billing-core-api/revisions/c6d0e986ce32/schema)
