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

# Invocations and billing

> Track AI agent tool calls and control prepaid spending.

AI agents can inspect invocation state, verify receipts, and check available credits through structured CLI output.

## Invocations

```bash theme={null}
cralo invocations list [--cursor <cursor>] [--status <status>] [--limit <n>] --json
cralo invocations get <id> --json
```

`--status` filters list results. `--limit` caps the page size (server default 50, max 100; human-mode output without `--json` defaults to 10). Each listed invocation includes both `id` and an `invocation_id` alias with the same value, so field names match `tools call` output. `get` returns the latest state and final result when the invocation has finished.

## Balance and top-ups

Billing commands live under `billing`.

```bash theme={null}
cralo billing balance --json
cralo billing topup [amount] [--no-browser] [--no-wait] --json
```

`billing topup` creates a checkout in USD, opens it, and waits until the credits land in your balance. The amount defaults to the suggested $20 recharge and must be a whole-dollar amount from $10 to \$1,000. Use `--no-browser` to print the URL for opening on another device while the CLI keeps waiting. Add `--no-wait` to exit as soon as the checkout is created.

## Receipts

```bash theme={null}
cralo billing receipts list [--cursor <cursor>] --json
cralo billing receipts get <id> --json
```

Receipts provide a durable record of successful charged work, including the tool, version, price, and balance after settlement.

## Agent workflow

```bash theme={null}
cralo tools call video.transcript \
  --input '{"url":"https://www.youtube.com/watch?v=example"}' \
  --async --json

cralo invocations get inv_abc --json
```

`--async` works only on queued-execution tools; see [Tool commands](/docs/cli/tools) for eligibility and the `ASYNC_NOT_SUPPORTED` rejection.

If a call times out at the client, it may still be running. The agent should retrieve the existing invocation instead of submitting a duplicate call.
