---
title: Estimate cost
description: "POST /v1/models/{model}/estimate — know the price before you run anything."
---

Find out exactly what a generation will cost in credits — without running it and without spending anything.

## Playground

<ApiPlayground path="/v1/models/{model}/estimate" method="post" />

`POST /v1/models/:model/estimate` returns the deterministic cost of the given `input` on the selected model. Nothing is queued, no credits are reserved or charged. The endpoint is available to any valid key — no scope required.

<Method name="POST" path="/v1/models/:model/estimate" />

## Request

<TypeTable
  type={{
    model: { type: 'string', description: 'Model slug (in the path). See GET /v1/models for the catalog.', required: true },
    input: { type: 'object', description: 'The same parameters you would pass to submit. See GET /v1/models/{model} → input_schema for the exact shape.', required: true }
  }}
/>

<Tabs items={['cURL', 'TypeScript', 'Python']}>
<Tab value="cURL">

```bash
curl -X POST https://api.clipia.ai/v1/models/seedance-2-fast-i2v/estimate \
  -H "Authorization: Bearer $CLIPIA_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input": {
      "prompt": "aerial shot over a neon city",
      "duration": 8,
      "resolution": "1080p"
    }
  }'
```

</Tab>
<Tab value="TypeScript">

```ts
const { credits } = await clipia.models.estimate('seedance-2-fast-i2v', {
  prompt: 'aerial shot over a neon city',
  duration: 8,
  resolution: '1080p',
});
console.log(`This generation costs ${credits} credits`);
```

</Tab>
<Tab value="Python">

```python
estimate = client.models.estimate(
    "seedance-2-fast-i2v",
    {"prompt": "aerial shot over a neon city", "duration": 8, "resolution": "1080p"},
)
print(f"This generation costs {estimate.credits} credits")
```

</Tab>
</Tabs>

**Response `200`**

```json
{
  "credits": 40
}
```

<TypeTable
  type={{
    credits: { type: 'number', description: 'Cost of the given input on this model, in credits' }
  }}
/>

## Why it exists

Cost is deterministic: it is derived from the model and its parameters, not from how long the job actually ran. That means the price can be known upfront and shown to the user before anything starts.

Typical uses:

- confirming the price before an expensive high-resolution video generation;
- comparing parameter trade-offs (4s vs 8s, 720p vs 1080p);
- checking the budget inside an automation, where generations run with nobody watching.

<Callout type="info" title="The estimate matches the charge">
The `credits` value returned here equals the `cost` field of the `submit` response for the same parameters. Credits are reserved at `submit` and settled on success; on `FAILED` they are refunded in full.
</Callout>

## Errors

| HTTP | `code` | When |
|------|--------|------|
| `404` | `not_found` | unknown model slug |
| `422` | `model_input_invalid` | parameters are not supported by this model |
| `429` | `rate_limit_exceeded` | rate limit exceeded |
