---
title: "Preview Video Asset"
method: POST
path: "/v1/assets/{asset_id}/preview"
tags: ["Public API"]
---

# Preview Video Asset

`POST /v1/assets/{asset_id}/preview`

## Request

- Base URL: `https://api.animgen.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.animgen.com/v1/assets/{asset_id}/preview`
- Auth: HTTP bearer

## Path parameters

- `asset_id` string, uuid, required

## Request body

- VideoPreviewRequest
  - `timestamps_seconds` number[], required: Source timeline timestamps in request order, each strictly before the playable end. At most 12.
  - `max_frame_size` integer: Maximum thumbnail side in pixels, preserving aspect ratio.

## Response `200`

Successful Response

- VideoPreviewResponse
  - `object` 'video_preview'
  - `source_video_asset_id` string, uuid, required: Stable source video asset ID.
  - `image` AssetResponse, required
    - `object` 'asset'
    - `id` string, uuid, required: Stable public asset ID; use it to refresh download metadata.
    - `format` string, required: Artifact format; inspect actual outputs rather than assuming an array order.
    - `mime_type` string, required: Asset media type.
    - `byte_size` integer, required: Expected file size in bytes.
    - `created_at` string, date-time, required: Creation timestamp in UTC.
    - `download_url` string, required: Sensitive short-lived signed URL. Download without a Bearer header, including after redirects; never log the URL.
    - `download_expires_at` string, date-time, required: Signed URL expiry in UTC; refresh via asset lookup when expired.
    - `media` object, nullable: Whitelisted measured video metadata. Unknown fields are null; non-video assets return null.
      - `duration_seconds` number, nullable: Playable video duration measured from presentation timestamps; never provider-requested duration.
      - `fps` number, nullable: Measured average source frame rate; use presentation timestamps for VFR selection.
      - `frame_count` integer, nullable: Decoded source frame count, or null when unknown.
      - `width` integer, nullable: Displayed video width in pixels, accounting for rotation.
      - `height` integer, nullable: Displayed video height in pixels, accounting for rotation.
  - `width` integer, required: Contact sheet width in pixels, including labels and padding.
  - `height` integer, required: Contact sheet height in pixels, including labels and padding.
  - `cells` PreviewCell[], required: Thumbnails in request order, preserving duplicates.
    - `index` integer, required: Zero-based position in the original timestamp request.
    - `requested_time_seconds` number, required: Requested time relative to the playable source origin.
    - `source_time_seconds` number, required: Presentation time of the source frame displayed at the requested time.
    - `rect` PreviewRect, required
      - `x` integer, required: Left pixel from the sheet origin.
      - `y` integer, required: Top pixel from the sheet origin.
      - `width` integer, required: Thumbnail width, excluding padding and label.
      - `height` integer, required: Thumbnail height, excluding padding and label.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/animgen/apis/aianimgenbackend.md) · [All operations](https://skmtc.dev/animgen/apis/aianimgenbackend/llms.txt) · [OpenAPI document](https://skmtc.dev/animgen/apis/aianimgenbackend/revisions/0504d838139a?raw)
