Billing
Jantaris is prepaid. You top up a balance and every request draws from it. There is no subscription and no minimum commitment, and the balance does not expire.
Currency and taxes
| Account | Site | Currency | Taxes |
|---|---|---|---|
| Global | jantaris.com | USD | No tax is added at payment. You pay the listed price and the full amount goes to your balance |
| Polish | jantaris.com/pl | PLN | Prices include 23% VAT. See the Polish version of this page |
The API responds in your account's currency: cost, estimated_cost and /v1/balance use USD or PLN accordingly.
Top-ups
Top up in the dashboard by card. The minimum top-up is $10. You can enter any amount or pick a ready-made pack:
- $10
- $25
- $50
- $100
- $250
The amount you pay is the amount added to your balance.
What you pay for
Every model has one billing unit, shown in the pricing.unit field of GET /v1/models:
unit | What you pay for | Example models |
|---|---|---|
image | one image | GPT Image 2.5: $0.0432 per image, FLUX.2 [pro]: from $0.0688 per image |
second | one second of generated video (duration), the rate depends on resolution | Seedance 2.5: from $0.261 per second, Kling 3.0: from $0.169 per second |
video | one clip, regardless of its length in seconds | Veo 3.1 (Quality): from $2.53 per video, Gemini Omni: from $1.45 per video |
song | one song | Mureka V9: $0.124 per song |
minute | one minute of processed audio | Vocal Remover: $0.50 per minute |
mtok | 1M input and output tokens (chat) | Claude Sonnet 5: $3.24 / $16.20 per 1M tokens |
Veo 3.1 (Quality) and Gemini Omni are billed per clip, not per second. A Veo 3.1 (Quality) clip is always 8 s long and the price depends on resolution. With Gemini Omni, the clip price depends on resolution and the length you pick (4, 6, 8 or 10 s). estimated_cost returns the exact amount for your parameters.
All prices are on the pricing page and in GET /v1/models.
Holds and charges for media tasks
POST /v1/generatereturnsestimated_cost, and that amount is held from your balance.- When the task succeeds, exactly
costis charged and the hold is released. - When the task fails, the hold is released in full. A failed generation costs 0.
If your available balance is lower than estimated_cost, the request fails with 402 insufficient_balance before anything starts.
Chat requests are charged after the response, based on usage.
Checking the balance
curl https://jantaris.com/v1/balance -H "Authorization: Bearer $JANTARIS_API_KEY"{ "balance": "12.40", "available": "11.63", "currency": "USD", "low_balance": false }| Field | Description |
|---|---|
balance | Total funds on the account |
available | balance minus holds of running tasks. This is what new requests can use |
currency | USD or PLN |
low_balance | true when the balance is running low and it is time to top up |
A simple guard before a batch job:
import os, requests
bal = requests.get(
"https://jantaris.com/v1/balance",
headers={"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"},
timeout=30,
).json()
if bal["low_balance"] or float(bal["available"]) < 5:
notify_team(f"Jantaris balance low: {bal['available']} {bal['currency']}") # your codeconst bal = await (await fetch("https://jantaris.com/v1/balance", {
headers: { Authorization: `Bearer ${process.env.JANTARIS_API_KEY}` },
})).json();
if (bal.low_balance) console.warn(`Top up: ${bal.available} ${bal.currency} available`);Spend limits per key
Each API key can have a monthly spend limit. A request over the limit returns 403 permission_error and does not touch the balance. See Authentication.
Referral program
Share your referral link from the dashboard (?ref=YOURCODE). For 12 months from the referred person's signup, you get 20% of what they spend on image, video and audio models and 5% of what they spend on chat models, added to your balance. Details: Affiliates.
Invoices in Poland
Polish accounts on jantaris.com/pl pay in PLN (card or BLIK) and receive a VAT invoice automatically after each top-up. Details are in the Polish version of this page.









