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

# API Wallet & Pricing

> Pay-as-you-go pricing. Add funds and pay only for what you use.

## Pricing

All prices are per minute of audio processed (input duration unless noted).

| Service                          | Rate       | \$10 Gets You |
| -------------------------------- | ---------- | ------------- |
| **Stem Separation**              | \$0.10/min | 100 min       |
| **Transcription**                | \$0.01/min | 1000 min      |
| **Voice Cloning / TTS**          | \$0.04/min | 250 min       |
| **Voice Conversion**             | \$0.13/min | 77 min        |
| **Speech Translation (Dubbing)** | \$0.40/min | 25 min        |
| **Music Generation**             | \$0.04/min | 250 min       |
| **Speaker Separation**           | \$0.20/min | 50 min        |
| **Karaoke Generation**           | \$0.25/min | 40 min        |
| **Media Conversion**             | \$0.01/min | 1000 min      |

<Info>
  Minimum top-up: **$1.00**. Maximum: **$10,000**.
</Info>

<Note>
  **Premium variants and modes.** Some services charge a multiplier on the base
  rate:

  * **Music Generation — AudioMusic Premium** (`dit_variant="xl"`): **2×** the
    base rate (\$0.08/min).
  * **Stem Separation — premium packages**: `karaoke` and `vocal_gender` are
    **1.5×** ($0.15/min); `instrument_isolator` is **2×** ($0.20/min).
    Plain modes (`2stem` / `4stem` / `6stem` / `16stem`) bill at the base \$0.10/min.
</Note>

<Note>
  **TTS billing model.** API wallet bills TTS by the **duration of the generated
  audio**, not by character count. The per-character rate shown elsewhere in the
  docs applies to account-credit billing (subscription plans), not to API-wallet
  billing.
</Note>

<Note>
  **Noise Reduction** is currently billed from your **account credit balance**
  (subscription plan credits), not from the API wallet. To use noise reduction
  programmatically, sign in to your account and obtain a session — the API-key

  * wallet path for denoising is not yet enabled.
</Note>

***

## Check Balance

<Tabs>
  <Tab title="cURL">
    ```bash theme={null}
    curl -s "https://api.audiopod.ai/api/v1/api-wallet/balance" \
      -H "X-API-Key: $AUDIOPOD_API_KEY" | jq .
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    from audiopod import AudioPod

    client = AudioPod()
    balance = client.wallet.balance()

    print(f"Balance: {balance['balance_usd']}")
    print(f"Spent: {balance['total_spent_usd']}")
    ```
  </Tab>

  <Tab title="Node.js">
    ```typescript theme={null}
    import AudioPod from 'audiopod';

    const client = new AudioPod();
    const balance = await client.wallet.balance();

    console.log(`Balance: ${balance.balance_usd}`);
    console.log(`Spent: ${balance.total_spent_usd}`);
    ```
  </Tab>
</Tabs>

**Response:**

```json theme={null}
{
  "balance_cents": 2500,
  "balance_usd": "$25.00",
  "total_spent_cents": 1500,
  "total_spent_usd": "$15.00",
  "low_balance_warning": false
}
```

***

## Add Funds

<Tabs>
  <Tab title="cURL">
    ```bash theme={null}
    # Get Stripe payment link ($25)
    curl -X POST "https://api.audiopod.ai/api/v1/api-wallet/topup/checkout" \
      -H "X-API-Key: $AUDIOPOD_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"amount_cents": 2500}'
    ```

    Open the returned `url` in your browser to complete payment.
  </Tab>

  <Tab title="App">
    1. Go to [API Keys](https://www.audiopod.ai/dashboard/account/api-keys)
    2. Click **Add Funds**
    3. Choose amount and complete Stripe checkout
  </Tab>
</Tabs>

**Response:**

```json theme={null}
{
  "url": "https://checkout.stripe.com/c/pay/...",
  "amount_usd": "$25.00"
}
```

***

## Estimate Cost

Calculate cost before processing (no auth required):

```bash theme={null}
curl -X POST "https://api.audiopod.ai/api/v1/api-wallet/estimate" \
  -H "Content-Type: application/json" \
  -d '{"service_type": "stem_extraction", "duration_seconds": 300}'
```

**Response:**

```json theme={null}
{
  "service_type": "stem_extraction",
  "duration_minutes": 5.0,
  "rate_per_minute": "$0.10/min",
  "cost_usd": "$0.50"
}
```

***

## Usage History

```bash theme={null}
curl -s "https://api.audiopod.ai/api/v1/api-wallet/usage?limit=10" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" | jq .
```

**Response:**

```json theme={null}
{
  "logs": [
    {
      "service_type": "stem_extraction",
      "duration_minutes": 5.47,
      "amount_usd": "$0.55",
      "created_at": "2025-12-11T12:39:37Z"
    }
  ]
}
```

***

## Get Pricing (No Auth)

```bash theme={null}
curl -s "https://api.audiopod.ai/api/v1/api-wallet/pricing" | jq .services
```

***

## Error Handling

| Code  | Error                      | Meaning                         |
| ----- | -------------------------- | ------------------------------- |
| `402` | `insufficient_api_balance` | Wallet is empty                 |
| `400` | `invalid_amount`           | Amount outside $1-$10,000 range |
| `401` | `unauthorized`             | Invalid API key                 |

**Example 402 response:**

```json theme={null}
{
  "error": "insufficient_api_balance",
  "message": "Insufficient balance. Required: $0.50, Available: $0.00",
  "required_cents": 50,
  "available_cents": 0
}
```

***

## Next Steps

<Columns cols={2}>
  <Card title="Quick Start" icon="rocket" href="/quickstart">
    Make your first API call
  </Card>

  <Card title="Stem Separation" icon="music" href="/api-reference/stem-splitter">
    Most popular API
  </Card>
</Columns>
