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

# Credits

> What a call costs and how the balance resets

Credits are the single meter for everything that runs on our servers. There is no separate call quota — **your monthly credit balance is your call quota.**

One balance covers both places credits are spent:

* **On the website**, the handful of tools that do server-side work — the AI tools, and the file converters that run on our workers. The rest of the catalog runs in your browser and is free and unmetered, signed in or not.
* **Over the API and MCP**, every tool call — including tools that are free on the website.

## Allowances

|                             | Free member       | Builder            |
| --------------------------- | ----------------- | ------------------ |
| Credits                     | **1,000 / month** | **50,000 / month** |
| Rate limit                  | 60 req/min        | 300 req/min        |
| Minimum per API or MCP call | **3 credits**     | **1 credit**       |
| Endpoints reachable         | 800+              | 800+               |

Builder buys volume and headroom, not access — every endpoint is available on every plan. See [pricing](https://iotools.cloud/pricing/).

## What a call costs

Two numbers decide it, and you pay the larger:

* **The tool's own weight** — what the work costs us. Zero for most of the catalog, higher for the tools with a third-party invoice behind them.
* **Your plan's minimum per call** — 3 credits on a free account, 1 on Builder.

So a JSON formatter costs a free member 3 credits and a Builder 1, while an AI image costs both of them 640. The minimum is a floor, not a multiplier: it never changes the price of a tool that already costs more than it.

| Tool type                                                  | Weight | Free member pays | Builder pays |
| ---------------------------------------------------------- | ------ | ---------------- | ------------ |
| Most tools — formatters, converters, encoders, calculators | 0      | 3                | 1            |
| File conversion, background removal                        | 1–2    | 3                | 1–2          |
| AI text generation                                         | 12–24  | 12–24            | 12–24        |
| AI image generation                                        | 640    | 640              | 640          |

Browser use of the free tools is unaffected by any of this. The floor applies only to programmatic calls.

**Read the exact cost from the API, not from this table.** `GET /v1/tools/list` and `GET /v1/tools/search` return `credit_cost` per tool, already resolved for your plan — so it can be compared directly against your balance. The `x-iotools-credit-cost` extension in the [OpenAPI document](/docs/api-reference) carries the same number, but that document is public and has no key behind it, so it is quoted at the free-tier minimum for everyone.

## Only tool runs are billed

**Every `GET` on the API is free**, and none of them touch the allowance they report:

|                                           | Cost        |
| ----------------------------------------- | ----------- |
| `POST /v1/tool/{slug}` — run a tool       | **Charged** |
| `GET /v1/tools/list` — the catalog        | Free        |
| `GET /v1/tools/search` — find a tool      | Free        |
| `GET /v1/tool/{slug}` — one tool's schema | Free        |
| `GET /v1/me/credits` — your balance       | Free        |
| `GET /v1/me/usage` — your spend history   | Free        |

Over MCP the same split holds: `tools/call` on a real tool is charged — including through `run_tool`, at the inner tool's own price — while `search_tools`, `describe_tool`, `get_credits` and `get_usage` are not.

Free of credits is not free of cost, so all of them still consume your per-minute [rate limit](/docs/concepts/rate-limits). Read them when you need them rather than on a polling loop.

## Failed calls are free

Credits are reserved when a request arrives and **refunded on any 4xx or 5xx**. A validation error, a rate limit, a tool failure — none of them cost you anything.

Tools that bill per unit refund the difference when they under-deliver. Ask a name generator for 20 names, get 18, pay for 18 — never below your plan's minimum per call.

## Reading your balance

Every successful response carries it, so most integrations never have to ask:

```json theme={"system"}
{ "credits_used": 3, "credits_remaining": 997 }
```

When you do need it up front — deciding whether to start an expensive batch, or an agent sizing its own work — ask directly:

```bash theme={"system"}
curl https://api.iotools.cloud/v1/me/credits \
  -H "Authorization: Bearer $IOTOOLS_API_KEY"
```

```json theme={"system"}
{
  "tier": "member",
  "metered": true,
  "credits": {
    "used": 412,
    "limit": 1000,
    "remaining": 588,
    "period": "month",
    "resets_at": "2026-08-01T00:00:00.000Z"
  },
  "rate_limit": { "requests_per_minute": 60 },
  "min_cost_per_call": 3
}
```

`min_cost_per_call` is your plan's floor — the one figure the public OpenAPI document can't tell you, since it quotes the free-tier number to everybody.

Over MCP the same thing is the `get_credits` tool.

## Reading your usage history

What the balance doesn't tell you is what it went on. [Your account](https://iotools.cloud/account/) shows the same balance figures as `GET /v1/me/credits` above, plus the same 30-day history `GET /v1/me/usage` (MCP: `get_usage`, which returns the balance alongside it) returns below, one row per tool per day per surface — so a key spending down faster than expected can be traced to the calls that did it:

```bash theme={"system"}
curl https://api.iotools.cloud/v1/me/usage \
  -H "Authorization: Bearer $IOTOOLS_API_KEY"
```

```json theme={"system"}
{
  "days": 30,
  "items": [
    { "day": "2026-07-28", "slug": "ai-writer", "title": "AI Writer", "surface": "api", "credits": 24, "runs": 1 },
    { "day": "2026-07-27", "slug": "case-converter", "title": "String Case Converter", "surface": "mcp", "credits": 3, "runs": 1 }
  ]
}
```

`surface` is `web`, `api` or `mcp` — the same account's browser use shows up here too, since the balance is shared. Rows only exist for days with spend, and `credits` is net of any refund. Free, like the balance itself.

## Resets

Credits reset on the **1st of each month, UTC**. Unused credits do not roll over.

Upgrading mid-month gives you a full allowance immediately.

## Running out

You get a `402`:

```json theme={"system"}
{
  "type": "https://iotools.cloud/docs/errors/insufficient_credits",
  "title": "Insufficient credits",
  "status": 402,
  "code": "insufficient_credits",
  "detail": "This call costs 3 credits and 0 remain in this month's allowance.",
  "request_id": "e4042b29-…"
}
```

There is no overage billing and no throttling — the call does not happen. Wait for the reset, or [upgrade](https://iotools.cloud/pricing/).
