Skip to content

API · Reference

Cost estimation

POST /v1/models/{model}/estimate — find out what a generation costs in credits before running it; no job is created and no credits are reserved.

Find out what a generation costs in credits without running anything or spending credits.

Playground

POST
/v1/models/{model}/estimate

Authorization

apiKey
headerAuthorization<token>

API key in the Authorization header with the Bearer scheme:

Authorization: Bearer <CLIPIA_API_KEY>

Pass the full string, including the Bearer scheme prefix and the space. Authorization: Key <key> and the X-Api-Key: <key> header are also accepted; use whichever scheme suits you. The key is created in the developer console (clipia.ai/developer, "API keys" tab) and shown only once. Format: clipia_live_… (live), clipia_test_… (sandbox).

Sandbox / test mode. A key with the clipia_test_… prefix works in the sandbox: submit charges no credits and starts no real generation; it instantly returns status: COMPLETED with a deterministic mock result (a fixed sample asset on media.clipia.ai). The cost field shows the estimated cost, but it is not charged. Webhooks arrive through the same signed mechanism (HMAC-SHA256). This mode is meant for debugging an integration before you switch to a live key.

Path Parameters

model*string

Model slug, e.g. nano-banana-2, seedance-2-fast-i2v. List: GET /v1/models. Namespaced slugs (google/imagen4, grok-imagine/text-to-video) are passed as is (/v1/models/google/imagen4) or with %2F.

Match^[a-z0-9][a-z0-9-]{0,200}(?:/[a-z0-9][a-z0-9-]{0,200})?$

Request Body

application/json
  1. body
input*

Generation parameters to price. The same format as input in POST /v1/models/{model}; see the model's input_schema.

Response Body

Cost estimate in credits.

application/json
  1. response

Deterministic generation cost estimate in credits.

credits*number

Cost of the given input on this model, in credits.

warnings?array<>

input parameters the model will not apply: one item per key, at most 20 items. The field is present only when such parameters exist.

Itemsitems <= 20
curl -X POST "https://example.com/v1/models/nano-banana-2/estimate" \  -H "Content-Type: application/json" \  -d '{    "input": {      "prompt": "a sunset over mountains, cinematic",      "aspect_ratio": "16:9"    }  }'

{  "credits": 40}

POST /v1/models/:model/estimate calculates the cost of the given input on the selected model. No job is created and no credits are reserved. Any valid key works — no extra permission is needed.

POST/v1/models/:model/estimate

Request

Prop

Type

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"
    }
  }'

Response 200

{
  "credits": 40
}

Prop

Type

If input contains a key the model will not apply (a typo, a parameter of another model), the estimate lists it in warnings — in the same form as submit. This lets you check a set of parameters before launching.

Why use it

The cost depends on the model and its parameters — duration, resolution, number of images, text length for speech — not on how long the job actually runs. That means you can know it in advance:

  • confirm the price before an expensive high-resolution video;
  • compare parameter options, such as 4 vs 8 seconds or 720p vs 1080p;
  • check the budget in automated flows where software launches the generation.

Submit uses the same calculation: for the same parameters, credits matches cost in the POST /v1/models/{model} response. Credits are reserved on submit, charged on success, and refunded in full if the generation fails.

Pricing

Prices are current as of October 2026. The exact cost is always shown on the run button before anything is charged.

Errors

HTTPcodemessageWhen
400invalid_requestinput_too_large / input_too_deepinput exceeds 100,000 bytes or 8 levels of nesting
400invalid_request—input isn't an object, or the text for speech is too long
404not_foundmodel_not_foundno model with this slug
429rate_limit_exceeded—rate limit exceeded
503service_unavailable—pricing is temporarily unavailable, try again later