Surfil

Credits

The Credit is Surfil's metering unit: one server-signed value-output equals one Credit. Running your agent through the pipeline is unmetered - the only thing ever metered is the signed output.

Why it exists

Per-request pricing punishes you for using your agents; seat pricing punishes you for having colleagues. Metering the signed output prices the one moment Surfil provably created value - a savings receipt, a benchmark, an attestation - and leaves everything else unmetered. It also keeps the anti-bypass story honest: the metered thing can only be produced by the edge, so there is no client-side counter to game.

Execution is unmetered

Interception, the five pipeline stages, Weave writes, blocking a risky call - none of it consumes a Credit. A Credit is consumed only when the pipeline produces a signed output. If you never request one, you never spend one.

How consumption works

Every consume call carries an idempotency key, and decrements are atomic - a retried or duplicated request never double-charges. Consumption draws from four sources, in a fixed order:

  1. Window allowance (resets on a rolling window)
  2. Monthly allowance
  3. Paid Credits
  4. Granted Credits

The cheapest, most perishable source is always spent first, so paid Credits are only touched after both allowances are exhausted. The edge endpoint behind this is /v1/meter/consume - see the API reference.

What it means for you

  • Your balance and allowances are readable at any time from the Hub dashboard, backed by /v1/entitlement.
  • Every Credit spent maps to a signed output you can point at - the receipt is the line item.
  • Interrupted requests are safe: if a consume call is retried, the idempotency key makes it a no-op, not a second charge.
If a signed output you expected never arrived but you believe a Credit was consumed, check the Hub's Credit history first - the idempotency guarantee means a missing output and a decremented balance cannot silently coexist for the same operation key.