> For the full page index, fetch https://echonova.ai/llms.txt

# Credits

What each service costs in credits, how AI usage becomes credits, worked examples, and how a key's credit limit is enforced.

Every metered call costs credits. This page tells you what each service
costs, how AI model usage turns into credits, and what happens when a
workspace balance or a key's credit limit runs out.

## What a credit is

| Fact                  | Value                                                                                                                                                               |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| How you get credits   | From your plan every month, from the trial, and from top-ups. Open **Subscription** in the portal to see the balance and where it comes from.                       |
| One balance           | Every service draws on the same balance: plan credits first, then extra credits from top-ups, dated batches first.                                                  |
| Fixed prices          | EchoNova's own services cost the same number of credits on every plan.                                                                                              |
| AI model usage        | Priced at the provider's model price plus 10%, then turned into credits at the rate of the credits that pay for it.                                                 |
| Granularity           | Fixed services are charged per character or per second. Every charge is rounded to a whole credit (half up, at least 1). The API and the portal show whole credits. |
| Where to see a charge | The `creditsConsumed` field on every job, in the synchronous response and on the job endpoints.                                                                     |

## Rates

| Service                  | Unit                                                               | Credits                                 |
| ------------------------ | ------------------------------------------------------------------ | --------------------------------------- |
| Text to Speech           | One character of the `text` field, spaces and line breaks included | 1 per character                         |
| Speech to Text           | One second of audio from an uploaded or recorded file              | 100 per minute                          |
| Live Speech to Text      | One second of real-time streaming transcription                    | 200 per minute                          |
| Sound cleaning           | One second of audio, minimum 1 second                              | 1,000 per minute                        |
| Voice agents             | One second of a connected call, silence included                   | 2,500 per minute, plus AI model usage   |
| EchoReader pages         | One page read from a document                                      | 50 per page                             |
| Instant voice clone      | One voice                                                          | $2.00 fee, plus 500 for the build       |
| Professional voice clone | One voice                                                          | $5.00 fee, plus 1,800 per training hour |
| Clone liveness check     | One second of the code recording                                   | 2 per second                            |
| Clone same-speaker check | One second compared                                                | 1 per second                            |

Per-minute and per-hour prices are charged per second, with a minimum of 1
second, and each charge is rounded to a whole credit (at least 1). A job is priced at the rates in force when it runs, and
`creditsConsumed` on the job is always the amount charged.

A voice clone also pays for its transcription (Speech to Text rate), its
cleaning (Sound cleaning rate) and its preview line (Text to Speech rate). Its
dollar fee is taken in credits at the rate of the credits that pay, like AI
usage below, without the 10%. A professional voice is charged at a 1 hour
training estimate, fee included; when training ends, only the difference in
training time is charged or refunded.

## How AI usage becomes credits

Agent conversations, knowledge indexing, website crawling, building an agent
with AI and database tool setup use AI models. They
are priced in two steps:

1. The provider's price for the tokens, plus 10%.
2. That amount in dollars, turned into credits at the rate of the credits
   that pay for it.

| Credits that pay | Credits per $1                                  |
| ---------------- | ----------------------------------------------- |
| Starter, monthly | 31,578.95 (600,000 ÷ $19)                       |
| Growth, monthly  | 37,974.68 (3,000,000 ÷ $79)                     |
| Scale, monthly   | 40,160.64 (10,000,000 ÷ $249)                   |
| Starter, yearly  | 37,894.74 (600,000 ÷ $15.83, a twelfth of $190) |
| Growth, yearly   | 45,569.62 (3,000,000 ÷ $65.83)                  |
| Scale, yearly    | 48,192.77 (10,000,000 ÷ $207.50)                |
| Trial            | The Starter monthly rate                        |
| Extra credits    | 28,571.43 (100,000 ÷ $3.50)                     |

When one charge is paid partly from plan credits and partly from extra
credits, the dollars are split: the plan credits cover what they can at the
plan rate, and the rest is converted at the extra-credit rate. On a trial,
AI usage stops once its provider cost reaches $1.

## Worked examples

| Call                                                                  | Credits charged                                                                    |
| --------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| 88 characters of Text to Speech, spaces included                      | 88                                                                                 |
| 3,000 characters of Text to Speech                                    | 3,000                                                                              |
| 10 seconds of Speech to Text                                          | 17 (16.67, rounded)                                                                |
| 15 minutes of Speech to Text                                          | 1,500                                                                              |
| 30 seconds of Sound cleaning                                          | 500                                                                                |
| 12.4 seconds of Sound cleaning through the API                        | 207 (206.67, rounded)                                                              |
| A voice call connected for 2 minutes 15 seconds                       | 5,625, plus the AI usage of its turns                                              |
| AI usage with a $5.00 provider price, on Starter monthly              | $5.50 × 31,578.95, about 173,684                                                   |
| The same, on Growth monthly                                           | about 208,861                                                                      |
| The same, on Scale monthly                                            | about 220,884                                                                      |
| The same on Starter, with 100,000 plan credits left and extra credits | 100,000 plan credits cover $3.17; the other $2.33 costs about 66,667 extra credits |

## When credits are charged

| Step                         | Text to Speech                                                                     | Speech to Text                                                                                                             | Sound Cleaning                                                                                            |
| ---------------------------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| Price is computed            | From the `text` field, before the job starts.                                      | From the audio duration in the file's metadata, or from its size when the file carries no duration, before the job starts. | From the decoded length of the audio, not its header, with a minimum of 1 second, before cleaning starts. |
| Workspace balance is charged | Before generation starts.                                                          | Before transcription starts.                                                                                               | Before cleaning starts.                                                                                   |
| Job fails                    | The charge is refunded to the workspace and does not count toward the key's usage. | Same.                                                                                                                      | Same.                                                                                                     |

If the workspace balance cannot cover the charge, the call is rejected before
any work runs:

```json
{
  "data": null,
  "statusCode": 402,
  "success": false,
  "errorMessage": "Insufficient subscription balance"
}
```

## Credit limit per key

A key can carry an optional **Credit Limit**, set when you create or **Edit**
the key in the portal. It caps how many credits that one key may spend per
billing cycle. It does not change the price of a call and it does not add
credits to the workspace.

| Fact               | Behaviour                                                                                                                                                                    |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Counting           | Usage counts from the start of your billing cycle and resets to zero on the key's first reserved call of a new cycle, from Text to Speech, Speech to Text or Sound Cleaning. |
| Every metered call | A call that would take usage past the limit is rejected with `429` and the body below. Nothing is charged. This covers Text to Speech, Speech to Text and Sound Cleaning.    |
| No limit           | Leave **Credit Limit** empty. The key is then bounded only by the workspace balance.                                                                                         |

The rejection body for a call over the limit:

```json
{
  "data": null,
  "statusCode": 429,
  "success": false,
  "errorMessage": "Monthly spending limit exhausted"
}
```

This `429` carries no `Retry-After` header and waiting does not clear it.
Raise the limit, clear it, or wait for the next billing cycle. The other `429`
on this API is the request rate limit; see
[Rate limits](/docs/developers/rate-limits).

## Spending webhooks

A key with a credit limit emits two webhook events as its usage is recorded.

| Event                | Fires when                              | How often                                           |
| -------------------- | --------------------------------------- | --------------------------------------------------- |
| `spending.warning`   | Usage reaches 80% of the limit or more. | Once per billing cycle.                             |
| `spending.exhausted` | Usage reaches the limit or more.        | Every time a call is recorded at or past the limit. |

A key without a credit limit emits neither event. See
[Configure a webhook](/docs/developers/webhooks-configure) to register an
endpoint and [Webhook events](/docs/developers/webhooks-events) for the
payloads.

## Set the limit where it protects you

A credit limit bounds one key, not the workspace. Set it on every key that
runs unattended, a little above that system's normal monthly use, and let
the two spending events tell you when it is approached.

**Recommended**

- One key per system, each with its own **Credit Limit** and a webhook on
  `spending.warning` and `spending.exhausted`.

**Less effective**

- One shared key with no limit, watched by reading **Subscription** at the
  end of the month.

## FAQ

### Why is a charge rounded to a whole credit?

AI usage is priced in dollars first and then turned into credits, so it
rarely lands on a whole number. Per second prices rarely do either. Each
charge is rounded to a whole credit, half up, and is never less than 1. The
portal and the API show the whole number.

### Why does the same AI call cost a different number of credits on another plan?

A plan's credits are worth a different number of dollars: Scale's credit is
cheaper than Starter's. The dollar price of the call is the same; the
credits it takes follow the rate in the table above.

### Is a failed job charged?

No. The charge is made before the work starts and refunded when the job
fails. `creditsConsumed` on a failed job still shows the amount that was
charged and refunded.

### Does whitespace in my text cost credits?

Yes. Every character of the `text` field counts, spaces and line breaks included.

### Can waiting clear the spending-limit 429?

Only the next billing cycle clears it. To keep working now, raise or clear
**Credit Limit** on the key under **Edit**.

### Does the credit limit add credits?

No. It caps how much of the workspace balance one key may spend. The balance
itself comes from your plan and purchased credits.

## Related

- [Get an API key](/docs/developers/get-an-api-key)
- [Rate limits](/docs/developers/rate-limits)
- [Authentication](/docs/developers/authentication)
- [Developer API overview](/docs/developers/overview)
- [Generate speech synchronously](/docs/reference/tts-generate-sync)
- [Transcribe audio synchronously](/docs/reference/stt-transcribe-sync)
- [Clean audio](/docs/reference/clean-create)
