---
title: "What a video request would cost (no key needed)"
method: GET
path: "/v1/video/estimate"
---

# What a video request would cost (no key needed)

`GET /v1/video/estimate`

## Request

- Base URL: `https://varosity.ai/api`
- URL: `https://varosity.ai/api/v1/video/estimate`
- Auth: none required

Pure arithmetic over the public price list: nothing is generated or reserved. Returns the seconds that would be billed (many models render fixed lengths and a request is fitted to the nearest), the charge on Varosity Credits and on your own provider key, and whether the starter credit covers it. Also accepts POST with the same fields as JSON.

## Query parameters

- `modelId` string, required
- `durationSec` integer
- `aspectRatio` '16:9' | '9:16' | '1:1' | '4:5' | '21:9'

## Response `200`

{ ok, modelId, requestedSec, billedSec, clipLengthsSec, creditsCents, byokCents, pricePerSec, wouldBeAccepted, problems?, caveats?, starterCreditCents, coveredByStarterCredit, starterCreditNote, next }. clipLengthsSec null means any whole second up to the model maximum. For avatar, lip-sync and agent-directed models the clip length follows the supplied audio or video: billedSec, creditsCents and byokCents are null, lengthFollows says why, and pricePerSec is what to multiply by. caveats lists inputs the model needs that the estimate cannot see (a reference image, an audio track, a source video).

## Other responses

- `400`: Missing modelId, unknown model (unknown_model) or a non-video model (not_a_video_model)

---

[API](https://skmtc.dev/varosity/apis/varosity-ai-api.md) · [All operations](https://skmtc.dev/varosity/apis/varosity-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/varosity/apis/varosity-ai-api/revisions/81d0169a4897?raw)
