Billing and limits
Which credits pay
Section titled “Which credits pay”API usage is paid with Anytime and Earned credits only — free credits and plan credits can’t be used for the API. A run draws on your Anytime credits first, then on your Earned credits. A credit pack from the pricing page adds Anytime credits. Runs started from the MCP connector are paid like studio runs instead.
How a run is charged
Section titled “How a run is charged”A call that starts a run — a generation, a dataset preparation, a training run — costs credits. The run is charged for what it uses:
- When it starts, it reserves credits: the workflow variant’s
pricing.initialCreditsReservationMilli. When your Anytime and Earned credits don’t cover the reservation, the call answersfailed_precondition, with the rule above as its message, and starts nothing. The reservation is what a run needs to start, not its price: a long run, such as a training run, can cost more and keeps drawing on your Anytime and Earned credits; if they run out, the run fails with the same message. - While it runs, it is charged for what it uses: its GPU and CPU time and the data it reads and writes on Voplica’s
models, and the provider’s bill on a third-party model. A Sensitive run’s steps on isolated hardware cost 10 % more
(
privacyModePRIVACY_SENSITIVE, which needs a Base or Premium plan; when it is not set, your account’s default applies). Audio — voices, speech and music — is charged by its GPU time, like images and videos. The speed setting,inference_mode, does not change how a run is charged. - There is no minimum charge: a short run pays only for what it used.
- When it ends, any unused part of the reservation comes back.
Amounts are in thousandths of a credit (…Milli).
Failures and retries
Section titled “Failures and retries”- One attempt per step. If a step has to start again — for example, after a machine fails during the run — you pay for at most one attempt of that step: the most expensive one.
- A failure on Voplica’s side is refunded. The run’s
creditsReversedMillishows what came back, andcreditsNetChargedMilliwhat the run cost. If a run failed on Voplica’s side and was still charged, open a billing issue on the Support page; every account can. - A failure caused by the request is not refunded, for example an input the model cannot use.
- A request blocked by the checks before it runs is not charged (Content policy). When a third-party model’s own safety systems stop a generation, its credits are returned.
See what you were charged
Section titled “See what you were charged”Each run carries its own costs: GetWorkflowExecution returns creditsChargedMilli, creditsReversedMilli and
creditsNetChargedMilli, and GetWorkflowOutput breaks the cost down by step (Generating images and
videos). Across runs, PaymentService.ListOperationTransactions lists your transactions, newest
first, one per run:
curl -X POST https://api.voplica.com/voplica.api.payment.PaymentService/ListOperationTransactions \ -H "Authorization: Bearer $VOPLICA_API_KEY" \ -H 'Content-Type: application/json' \ -d '{"limit": 3}'The answer, shortened:
{ "transactions": [ { "id": "…", "idempotencyKey": "<the run's id>", "state": "TX_CLOSED", "reservedCreditsMilli": "29600", "totalChargedMilli": "1712" } ], "nextToken": "…", "prevToken": "…"}A transaction’s idempotencyKey is the id of its run. GetBillingInfo returns your balance.
Limits
Section titled “Limits”| Limit | Value |
|---|---|
| Active API keys per account | 30 |
| A request body | 1 MiB (1,048,576 bytes), counted after decompression |
| An idempotency key | at most 30 characters: letters, digits and _ |
| One text in a request, such as a prompt | 8,000 characters; a longer one is refused, uncharged (CONTENT_POLICY_INPUT_TOO_LONG) |
A key has no rate limit of its own (Authentication). Some actions have per-account quotas: a call
over one answers resource_exhausted (the JSON API’s errors). The limits above answer in their own way:
a body over 1 MiB with invalid_argument (the message gives the limit), an idempotency key outside its rule with
invalid_argument too, a text over 8,000 characters with a FAILED run; a 31st active key is refused in the studio.