Sometimes a provider's content filter blocks a render. Since 23 September, NOLGIA refunds that refusal unless the provider billed us for the attempt, including when the provider's answer does not say either way. The card tells you which happened, and the API records it on the job.
What changed
NOLGIA takes a credit hold when it accepts your request. Delivery turns the hold into the charge, and a render that fails for a technical reason releases it, so it costs nothing.
Refusals used to be stricter. When a provider refused a render and its answer did not show whether it had billed us, the hold was used up. From 23 September that case is refunded: you pay for a refusal only when the provider's own answer shows it did billable work.
Two families are refunded every time, because their providers bill only what they deliver: GPT Image, including when the image was generated and then blocked, and Seedance 2.5. A Lyria 3.5 prompt that Google's filter blocks now comes back as a refusal straight away, refunded, instead of being retried.
The change applies to refusals from that day on. It does not reach back to jobs that were already settled.
When a refusal is still charged
On every other model, only two things count as the provider having billed the attempt:
- The provider had already accepted the render and started it before its filter refused it.
- The provider generated the result and then blocked it.
Everything else is refunded: a refusal of the prompt or the reference before any work, and a refusal whose answer says nothing about where the filter ran.
Watch for this:A failed status is not proof of a refund. Because a few refusals are charged, the card tells you either way instead of promising a refund every time.
What you see in the app
In the queue under the composer, a refused render's card reads Blocked by the content filter and gives the provider's reason. Under it, one line says what happened to your credits: "Your credits were refunded." or "The credits for this attempt were charged." When the outcome is not recorded yet, the card leaves that line out rather than guess.
Edit prompt puts your prompt back in the composer so you can change it and try again. The usage list on your billing page shows the charge and, when it is refunded, the refund for the same amount.
What the API tells you
A refused job fails with failure.kind set to moderated and a typed failure.code. prompt_nsfw means a filter refused the request or its result on safety grounds. ip_detected means it was refused as a recognisable real person or a protected work. The fixes differ: for the first, edit the prompt or the reference media; for the second, change the reference image or the named subject.
failure.credits_refunded is the ledger's answer: true means the job cost nothing, false means it was charged, and an empty value means the outcome is not recorded yet. Branch on the code, never on the message text. The @nolgia/sdk and nolgia packages raise NolgiaGenerationError with that code when a generation is refused or fails.
NOLGIA remembers a refusal for 30 minutes by default. The same request in that window, or the same refused references on the same model, gets the same refusal back without calling the provider or charging again, and a fresh Idempotency-Key does not get round it.
What you are not charged for
| What happened | What happens to your credits |
|---|---|
| A refusal the provider did not bill, or whose answer does not say | Refunded |
| A job that failed for a technical reason | The hold is released |
| A job that ran past its time budget | Refunded |
| A render you cancel before it reaches the model provider | Refunded in full |
| The wallet cannot pay, or the request is invalid | Refused before anything runs, nothing charged |
| The same request sent twice within five minutes | Refused with the first job's id, never billed twice |
| A wait on a job that times out | No charge, and the job keeps running |
| A price quote | No job, no hold and no charge |
The full rules are in Pricing and credits and Model errors. For how credits, plans and top-ups fit together, read how credits work. What happens when you stop a render yourself is in What happens when you cancel a render.
Questions and answers
- Was I charged for a refused render?
- Look at the card: it says whether your credits were refunded or charged. Through the API, read failure.credits_refunded on the job: true means it cost nothing, false means it was charged.
- Why would a refused render ever be charged?
- Because the provider billed the attempt: it had already started the render, or it generated the result and then blocked it. Every other refusal is refunded.
- I was charged for a refusal before 23 September. Does the new rule cover it?
- No. The rule applies to refusals from 23 September on, and jobs that were already settled keep their outcome.
- Can I send the same request again?
- Not unchanged. NOLGIA remembers a refusal for 30 minutes by default and answers the same request with the same refusal, without charging again. Change the prompt or the reference and try again.
- What about a render that fails for another reason?
- A technical failure releases the hold, and a generation that runs past its time budget is refunded. The job's refund field confirms it.
Know the price before you spend
Read how credits workRead next
Guides · Credits
How credits work, and what happens when a render fails
The price is on the Generate button, the job holds it while it works, and the hold becomes a charge or a refund. Here is when credits come back after a failure, a refusal or a cancel.
· 6 min read
Billing
What happens when you cancel a render
Cancel stops a render at the model provider where it can. Before the provider has it, every credit comes back; after that, it depends on the model.
· 6 min read
Billing
AI video pricing explained: what one clip costs
How AI video is priced on NOLGIA: by model, length, quality tier, sound and input, with every rate read live, the plan each needs, and how to spend less.
· 7 min read




