# Free models

Models whose id ends in `:free` cost Rp 0. You can call them with a new account and a zero balance, within per-minute and daily limits that grow when you top up or subscribe. This page covers the `:free` suffix, the `kenari-free` route, and those limits.

## Use a free model

Send a `:free` model id like any other model. This works on [Chat completions](/en/docs/chat), [Messages](/en/docs/messages) and [Responses](/en/docs/responses).

```bash
curl https://kenari.id/v1/chat/completions \
  -H "Authorization: Bearer $KENARI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "step-3-7-flash:free",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
```

List the free models that exist right now with a public call that needs no key:

```bash
curl -s https://kenari.id/v1/models | jq -r '.data[] | select(.pricing.free) | .id'
```

A free model can still show a catalog price in `pricing`. It is never charged.

## The kenari-free route

`kenari-free` is a built-in route that picks a free model for you. Send it as the `model` and kenari tries the free models in a random order, moving to the next one when a model fails. It appears as a read-only route in **Providers & Routes** and cannot be edited or deleted.

```json
{
  "model": "kenari-free",
  "messages": [{"role": "user", "content": "Hello!"}]
}
```

If the request includes `tools`, kenari only tries free models that support tool calling. When none can, the request fails with HTTP 400. Send it to a named model that supports tools instead.

A plan can also send requests to `kenari-free` when its quota runs out. See [Subscriptions](/en/docs/subscriptions). For routes you build yourself, see [Routing and routes](/en/docs/routing).

## Limits

Free models have two limits per account, and both apply to every request on a free model.

| Limit | How it works |
| --- | --- |
| Per minute | How many requests the account can send to free models in a minute. |
| Per day | How many successful requests the account can make to free models in a day. A value of `0` means no daily limit. |

The limits depend on the account:

| Account | What applies |
| --- | --- |
| New account | The smallest limits. Free models work from the first request. |
| After a qualifying top up | A higher daily limit and per-minute limit. An account qualifies once its top ups and plan payments add up to a threshold. Bonus balance from codes does not count. |
| With an active plan | The highest per-minute limit. The daily limit comes from the plan if it sets one, and otherwise from the default for accounts with a plan. |

A single model can carry its own per-minute or daily limit, which then applies instead of the account limit for that model. An account that has not yet qualified can also be held to a lower per-minute limit on every free model.

### Where the live numbers are

The limits and the top-up threshold can change, so they are not written here. Read them from either place:

- The **Plan** page in the dashboard, and the plan table at the end of [Subscriptions](/en/docs/subscriptions).
- `GET /api/public/pricing`, which needs no key. Its `free_tier` object describes the three accounts above, with these fields:

```bash
curl -s https://kenari.id/api/public/pricing | jq '.free_tier'
```

| Field | Meaning |
| --- | --- |
| `daily`, `rpm` | Daily and per-minute limits for a new account. |
| `threshold_idr` | Rupiah of top ups and plan payments needed to qualify. |
| `next` | Limits after the account qualifies. It is `null` when no top up is needed, because new accounts already start there. |
| `plan` | Limits with an active plan. A plan's own daily value is in the `free_daily_quota_effective` field of `GET /api/plans`. |

## Availability

Free models run on a best-effort basis, so speed and availability can differ from paid models. If free capacity is not enough for you, use a paid model.

## When you hit a limit

A request over a free-model limit returns HTTP 429. See [Rate limits](/en/docs/rate-limits) for the error codes and how to retry.

## Subscriber-only models

Some models are reserved for accounts with an active plan. A request from any other account returns HTTP 403 with code `subscribers_only`. See [Subscriptions](/en/docs/subscriptions).

## See also

- [How billing works](/en/docs/billing)
- [Rate limits](/en/docs/rate-limits)
- [Models and pricing](/en/docs/models)
