Billing
You pay Kadraris in advance. Money goes onto a balance, and each request takes its cost from there. You never sign up for a plan, there is no monthly minimum, and unused funds stay on the account with no expiry date.
Global and Polish accounts
| Account | Where | Currency | Tax |
|---|---|---|---|
| Global | kadraris.com | USD | Nothing is added on top at checkout. The price you see is what you pay, and all of it lands on your balance |
| Polish | kadraris.com/pl | PLN | Prices already contain 23% VAT. Details on the Polish version of this page |
Every amount the API returns uses the currency of your account. That covers cost, estimated_cost and the /v1/balance response, which show either USD or PLN.
Adding funds
Card payments are made in the dashboard. The lowest accepted amount is $10. Type your own figure or click one of the preset amounts:
- $10
- $25
- $50
- $100
Whatever you pay is credited to the balance one to one.
Billing units
Each model is charged by exactly one unit. You can read it from pricing.unit in GET /v1/models:
unit | Charged per | Examples |
|---|---|---|
image | generated image | GPT Image 2.5: $0.05 per image, FLUX.2 [pro]: from $0.0688 per image |
second | second of output video (duration), with the rate set by resolution | Seedance 2.5: from $0.261 per second, Kling 3.0: from $0.0963 per second |
video | finished clip, however many seconds it runs | Veo 3.1 (Quality): from $2.53 per video, Gemini Omni: from $1.45 per video |
song | generated song | Mureka V9: $0.15 per song |
minute | minute of audio processed | Vocal Remover: $0.50 per minute |
mtok | million tokens in and out (chat) | Claude Sonnet 5: $3.24 / $16.20 per 1M tokens |
Two video models use the per-clip unit instead of per-second:
- Veo 3.1 (Quality) always returns an 8 s clip, and resolution decides the price.
- Gemini Omni lets you choose 4, 6, 8 or 10 s, and the clip price depends on both that length and the resolution.
In both cases estimated_cost gives you the precise figure for the parameters you sent. The full price list is on the pricing page and in GET /v1/models.
How media tasks are charged
- When you call
POST /v1/generate, the response includesestimated_cost, and that sum is reserved on your balance. - If the task ends in success, you are charged the final
costand the reservation goes away. - If it ends in failure, the whole reservation is returned. You pay nothing for a failed generation.
When available is below estimated_cost, nothing is started and the call returns 402 insufficient_balance.
Chat works differently: the charge is calculated from usage once the reply has been produced.
Reading the balance
curl https://kadraris.com/v1/balance -H "Authorization: Bearer $KADRARIS_API_KEY"{ "balance": "12.40", "available": "11.63", "currency": "USD", "low_balance": false }| Field | Meaning |
|---|---|
balance | Everything on the account |
available | balance with reservations for unfinished tasks taken off. New requests draw on this figure |
currency | USD or PLN |
low_balance | Becomes true when funds are getting low and a top-up is due |
You can check it before a large batch and alert someone if it is too low:
import os, requests
bal = requests.get(
"https://kadraris.com/v1/balance",
headers={"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"},
timeout=30,
).json()
if bal["low_balance"] or float(bal["available"]) < 5:
notify_team(f"Kadraris balance low: {bal['available']} {bal['currency']}") # your functionconst bal = await (await fetch("https://kadraris.com/v1/balance", {
headers: { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}` },
})).json();
if (bal.low_balance) console.warn(`Top up: ${bal.available} ${bal.currency} available`);Limits on individual keys
A key can carry its own monthly cap. Once a request would cross it, the API answers 403 permission_error and your balance stays as it was. More in Authentication.
Earning through referrals
The dashboard gives you a personal link (?ref=YOURCODE). For 12 months after someone signs up through it, your balance is credited with 20% of their spending on image, video and audio models and 5% of their spending on chat models. See Affiliates for the rules.
VAT invoices for Poland
On kadraris.com/pl you pay in PLN with a card or BLIK, and you can ask for a VAT invoice by ticking the option when you top up. The Polish version of this page has the details.























