caft/docs
Dashboard

Pricing and credits

Prepaid credits, charged per token.

Token prices

Token typeGLM 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:

Shell
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.

TypeScript
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 }
StatusOutcome
200Credited. status is credited or crediting — credits land within a minute either way. The body carries the transaction hash.
402Refused. Nothing was charged; see the error code.
409Replayed: this exact authorization was already used. Nothing was charged.
422The amount is outside the band. Pick an amount from $1 to $500.
503The 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.