> ## Documentation Index
> Fetch the complete documentation index at: https://docs.captioncraft.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Usage and credits

> Prepaid seconds, temporary reservations, and completion-based billing.

## How credits work

CaptionCraft accounts hold prepaid video seconds. A successful job is billed for its actual video duration, rounded up to the next whole second.

## Buy credits

Organization admins can open **Settings → Billing** in the API console and buy a custom amount of credits through Stripe Managed Payments. Credits are priced in USD, with a \*\*$20 minimum** and a $10,000 limit per checkout. Rendering costs **\$0.06 per minute**, equivalent to 10 video seconds per cent.

A \$20 purchase adds **20,000 video seconds** (333 minutes and 20 seconds). Applicable tax is added at checkout and does not add credits. Stripe may offer payment in your local currency; the credit quantity stays the same. Credits do not expire. This is a one-time purchase, with no subscription or automatic recharge. Credits belong to the account selected when checkout starts.

Your balance updates after Stripe confirms payment, even if you close the checkout tab. Delayed payment methods remain pending until payment succeeds. Purchase history shows payment status and a Stripe receipt when available. Test payments are labeled in the console.

## How rendering uses credits

<Steps>
  <Step title="Reserve on submission">
    Creating a job reserves `max_duration_seconds` from your available balance. The default is 60 seconds and the maximum is 600.
  </Step>

  <Step title="Release the excess after inspection">
    When the video duration is known, the reservation is reduced to `ceil(actual duration)`. The remaining seconds return to the available balance.
  </Step>

  <Step title="Settle when the job finishes">
    On success, the remaining reservation becomes consumed credit. Failure or cancellation releases the reservation without billing.
  </Step>
</Steps>

## Example

For a **23.4-second** video submitted with `max_duration_seconds: 60`:

| Event              | Available seconds | Reserved seconds | Consumed seconds |
| ------------------ | ----------------- | ---------------- | ---------------- |
| Starting balance   | 120               | 0                | 0                |
| Submission         | 60                | 60               | 0                |
| Duration inspected | 96                | 24               | 0                |
| Completed          | 96                | 0                | 24               |

If the job fails instead, all 24 reserved seconds return to the available balance. Replaying the same idempotent submission does not create a second charge.

## Read your balance

[Get usage](/api-reference/get-usage) returns:

* `available_seconds`: seconds available for new reservations.
* `reserved_seconds`: seconds held by active jobs.
* `consumed_seconds`: seconds billed for completed jobs.
* `active_jobs`: the account's queued and processing jobs.
* `concurrency_limit`: the maximum number of active jobs allowed for the account.

A submission returns `402 INSUFFICIENT_CREDITS` if the available balance cannot cover the full requested reservation. Choose a lower duration limit only when it still covers your video, or buy more credits in **Settings → Billing**.
