---
title: "Analyze video for visual safety concerns across extracted frames"
method: POST
path: "/api/v1/safety/video"
tags: ["Safety"]
---

# Analyze video for visual safety concerns across extracted frames

`POST /api/v1/safety/video`

## Request

- Base URL: `https://api.tuteliq.ai`
- URL: `https://api.tuteliq.ai/api/v1/safety/video`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Upload a video file (mp4, webm, quicktime, avi — max 100MB, max 10 min). Extracts key frames at even intervals and runs vision analysis on each frame. Returns per-frame results, flagged timestamps, and an aggregated overall risk score. Ideal for moderating uploaded video content, screen recordings, and video messages.

## Response `200`

Default Response

- object
  - `file_id` string
  - `frames_analyzed` number
  - `duration_seconds` number
  - `frame_results` object[]
    - `frame_index` number
    - `timestamp_s` number
    - `vision` object
    - `risk_score` number
    - `severity` string
  - `categories` string[]: Visual harm categories across every flagged frame, deduped.
  - `overall_risk_score` number
  - `overall_severity` 'none' | 'low' | 'medium' | 'high' | 'critical'
  - `detected` boolean: A concern was observed at ANY severity, including monitor-only cases. For production branching prefer `recommended_action`.
  - `confidence` number: Confidence in the overall verdict (0-1), from the frame that drove it.
  - `recommended_action` 'none' | 'monitor' | 'flag_for_review' | 'block' | 'immediate_intervention': Routing key, weakest to strongest: `none`, `monitor`, `flag_for_review`, `block`, `immediate_intervention`. Safe to switch on. A video whose frames could not be decoded returns `flag_for_review`, never `none`.
  - `action_detail` string: Human-readable expansion of `recommended_action` for a moderator UI. Free text: do not branch on it.
  - `rationale` string: Why this verdict was reached. Built from category and severity labels only; never contains the frame descriptions.
  - `flagged_timestamps` object[]
    - `timestamp_s` number
    - `reason` string
    - `severity` string
  - `credits_used` number: Number of credits consumed by this request
  - `external_id` string
  - `incident_moderation_enabled` string: Per-call override of account incident logging: "true" forces persistence, "false" suppresses it. Omit for account default.
  - `customer_id` string
  - `metadata` object: Echo of the metadata you provided in the request
  - `profanity` object, nullable: Present only when the flag_profanity form field (or the account-level default_flag_profanity setting) is true, and only when at least one frame contained OCR text. Deterministic word-list result over the OCR text aggregated across frames — additive, never affects frame_results/overall_severity/recommended_action.
    - `detected` boolean
    - `matches` string[]
  - `risk_terms` object, nullable: Present only when the flag_risk_terms form field (or the account-level default_flag_risk_terms setting) is true, and only when at least one frame contained OCR text. Deterministic drug/violence word-list result over the OCR text aggregated across frames — additive, never affects frame_results/overall_severity/recommended_action.
    - `detected` boolean
    - `matches` object[]
      - `term` string
      - `category` 'drug' | 'violence'

## Changes

- **2026-10-19** `8490332e0031`: 5 warning, 9 info
  - added the new `critical` enum value to the `overall_severity` response property for the response status `200`
  - added the new `high` enum value to the `overall_severity` response property for the response status `200`
  - added the new `low` enum value to the `overall_severity` response property for the response status `200`
  - added the new `medium` enum value to the `overall_severity` response property for the response status `200`
  - …10 more

[Operation history](https://skmtc.dev/tuteliq/apis/tuteliq-api/changes/api/v1/safety/video/post.md)

---

[API](https://skmtc.dev/tuteliq/apis/tuteliq-api.md) · [All operations](https://skmtc.dev/tuteliq/apis/tuteliq-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tuteliq/apis/tuteliq-api/revisions/8490332e0031?raw)
