---
title: "Price a video before creating it: model tokens (or seconds), USD and the balance hold; writes nothing"
method: POST
path: "/v1/videos/estimate"
tags: ["platform-api"]
---

# Price a video before creating it: model tokens (or seconds), USD and the balance hold; writes nothing

`POST /v1/videos/estimate`

## Request

- Base URL: `https://api.cuddler.ai`
- URL: `https://api.cuddler.ai/v1/videos/estimate`
- Auth: HTTP bearer

## Request body

- object
  - `generate_audio` boolean
  - `reference_image_count` integer
  - `variant` 'default' | 'fast' | 'pro' | 'standard' | 'turbo' | '4k' | 'base' | 'utility' | 'utility-pro'
  - `fps` integer
  - `mode` 'text' | 'image' | 'reference' | 'edit' | 'extend' | 'motion-control' | 'image-reference' | 'video-reference' | 'first-last-frame'
  - `model` 'seedance-2.5' | 'seedance-2.0' | 'seedance-2.0-mini' | 'minimax-h3' | 'wan-3.0' | 'wan-3.0-prime' | 'happyhorse-1.0' | 'happyhorse-1.1' | 'wan-2.6' | 'wan-2.7' | 'ltx-2.5' | 'minimax-hailuo-2.3' | 'pixverse-6' | 'grok-video-1.5' | 'kling-3.0' | 'kling-2.6' | 'kling-2.5-turbo' | 'kling-o1' | 'kling-o3' | 'vidu-q4-preview' | 'runway-gen4.5' | 'runway-gen4-turbo' | 'veo-3.1' | 'veo-3.1-fast' | 'veo-3.1-lite' | 'veo-3' | 'veo-3-fast' | 'veo-2' | 'gemini-omni-flash', required
  - `duration` integer, required
  - `resolution` '360p' | '480p' | '540p' | '720p' | '768p' | '1080p' | '1440p' | '0.5K' | '1K' | '2K' | '4K'
  - `aspect_ratio` '16:9' | '9:16' | '4:3' | '3:4' | '1:1' | '21:9' | 'adaptive' | '9:21' | '4:5' | '5:4' | '2:3' | '3:2' | '5:2'
  - `input_video_seconds` number

## Response `200`

What POST /v1/videos would bill and hold

- object
  - `object` 'estimate', required
  - `model` 'seedance-2.5' | 'seedance-2.0' | 'seedance-2.0-mini' | 'minimax-h3' | 'wan-3.0' | 'wan-3.0-prime' | 'happyhorse-1.0' | 'happyhorse-1.1' | 'wan-2.6' | 'wan-2.7' | 'ltx-2.5' | 'minimax-hailuo-2.3' | 'pixverse-6' | 'grok-video-1.5' | 'kling-3.0' | 'kling-2.6' | 'kling-2.5-turbo' | 'kling-o1' | 'kling-o3' | 'vidu-q4-preview' | 'runway-gen4.5' | 'runway-gen4-turbo' | 'veo-3.1' | 'veo-3.1-fast' | 'veo-3.1-lite' | 'veo-3' | 'veo-3-fast' | 'veo-2' | 'gemini-omni-flash', required
  - `resolution` '360p' | '480p' | '540p' | '720p' | '768p' | '1080p' | '1440p' | '0.5K' | '1K' | '2K' | '4K', required
  - `aspect_ratio` '16:9' | '9:16' | '4:3' | '3:4' | '1:1' | '21:9' | 'adaptive' | '9:21' | '4:5' | '5:4' | '2:3' | '3:2' | '5:2', required
  - `duration` integer, required
  - `input_video_seconds` number, required
  - `tokens` integer, required
  - `usd` string, required
  - `usd_micros` integer, required
  - `hold_usd` string, required
  - `usd_per_second` string, required
  - `price_version` string, required
  - `list_usd` string
  - `unit` 'token' | 'second' | 'image'

## Other responses

- `400`: invalid_request — validation failed (details.issues), or the model does not render that duration or resolution, or takes no video input
- `401`: unauthorized — no key, or an unknown or revoked one (WWW-Authenticate: Bearer)
- `403`: model_not_enabled — the model is not enabled for this organization; organization_suspended
- `404`: not_found — the Platform API is switched off, or the object does not exist
- `429`: rate_limited — over this key's requests per minute (Retry-After)
- `500`: internal_error — quote request_id when contacting support

---

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