> ## 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. New credits expire **12 calendar months after they are granted**. Existing credits keep their original no-expiry terms. The credit history shows each grant’s expiration date in UTC. 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.

Credits with the earliest expiration are reserved first, before existing credits without expiry. Buying more credits does not extend earlier grants. Expired credits cannot fund new jobs. A job may finish using credits reserved before expiration; released credits return to the available balance only if they have not expired.

## How rendering uses credits

<Steps>
  <Step title="Submit a video">
    Creating a job requires a positive available balance. No credits are reserved until the video duration is known. Videos can be up to 600 seconds long.
  </Step>

  <Step title="Reserve after inspection">
    Before transcription starts, the API atomically reserves `ceil(actual duration)` from your available balance. If there are not enough seconds, the job fails with `INSUFFICIENT_CREDITS` without a charge. Concurrent jobs share the same balance and cannot reserve the same credits.
  </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:

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

If the job fails before the credits expire, all 24 reserved seconds return to the available balance. Submitting the same input again creates another job, which is billed separately if it succeeds.

## 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 no prepaid seconds are available. An accepted job can also fail with `INSUFFICIENT_CREDITS` after inspection if the available balance cannot cover the video's rounded-up duration. Add credits in **Settings → Billing** and submit a new job.
