Pricing and credits
Prepaid credits, charged per token.
Token prices
| Token type | GLM 5.3 Flash, USD per 1M |
|---|---|
| Input | $0.0375 |
| Cached input | $0.00375 |
| Output | $0.125 |
Every model's price is on the Models page, next to its list price and the cheapest OpenRouter offer. Prices aim for at least 75% under list and half the cheapest OpenRouter offer; the page shows each model's actual discount.
Input includes your prompt and conversation history. Cached input is input the provider reuses from cache, at a lower rate; a cache hit isn't guaranteed. Output is what the model generates, reasoning included.
Buy credits
Open Billing in the dashboard.
- Card: pick or enter an amount from $5 to $100 and pay through Stripe. Credits land when the payment clears.
- USDC: send native USDC to your deposit address on Base, Ethereum, Arbitrum or Polygon. The address is the same on every network. Deposits are credited automatically after confirmation, usually within a minute (a few on Ethereum); I've sent it checks right away. Under $1, other tokens (including USDC.e) and other networks are not credited.
1 USD or 1 USDC buys $1 of credit, with no fee. Payments are listed under Billing.
Monthly plans
Instead of paying for each request from your balance, you can buy a monthly plan: $10, $25 or $50 a month for 1,000, 2,750, 5,500 plan credits, with limits per 5 hours and per week. Plan credits are separate from your balance. Plans cover GLM-5.3, GLM-5.3-Flash and DeepSeek V4.1 Flash. Other models bill your balance. See Monthly plans. Agents and wallet accounts can buy one with x402, paid like a top-up: POST https://caft.dev/api/x402/plan?tier=plan10 (or plan25, plan50); see Buying a plan.
Pay with x402
For agents that hold a caft API key. Payment is USDC on Base, from any wallet — the caft key itself holds no funds. Amounts run from $1 to $500 per top-up.
Get a quote with a zero-spend POST. No payment header, nothing is charged:
curl -si -X POST 'https://caft.dev/api/x402/topup?amount_usd=10' \ -H "Authorization: Bearer $CAFT_API_KEY" \ | grep -i '^payment-required:' | cut -d' ' -f2- | base64 -d
To pay, wrap fetch with @x402/fetch and let it answer the 402 for you. Set maxAmountPerPayment to the amount you are paying so the client refuses anything larger. Do not retry a paid request: each attempt signs a fresh on-chain authorization, and sending the same one twice is refused as a replay.
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";
// The account signs the USDC authorization; it needs no ETH.
const account = privateKeyToAccount(process.env.WALLET_PRIVATE_KEY as `0x${string}`);
const client = x402Client.fromConfig({
schemes: [],
spendControls: { maxAmountPerPayment: "$10" },
});
registerExactEvmScheme(client, { signer: account });
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://caft.dev/api/x402/topup?amount_usd=10", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.CAFT_API_KEY}` },
});
const body = await res.json(); // { credited_usd, status, balance_usd, transaction }| Status | Outcome |
|---|---|
| 200 | Credited. status is credited or crediting — credits land within a minute either way. The body carries the transaction hash. |
| 402 | Refused. Nothing was charged; see the error code. |
| 409 | Replayed: this exact authorization was already used. Nothing was charged. |
| 422 | The amount is outside the band. Pick an amount from $1 to $500. |
| 503 | The settlement outcome is unknown. Check your balance before paying again — the first payment may still have gone through. |
Register by paying
An agent can open an account without signing up: pay $5–$500 of USDC through x402 at POST /api/x402/register and the paying wallet becomes the account. See Wallet accounts.
Rules
- Credits don't expire while your account is open. They lapse after 12 months of inactivity or when the account closes.
- Credits are non-refundable except as the Terms say. Crypto payments are final.
- Requests that fail before any output are free. Report billing disputes within 60 days.
Auto-refill is coming soon.