x402 upto vs exact: how each maps to a Sume spend cap
Apify's x402 upto charges actual usage up to an allowance; exact takes a fixed $1.00 deposit and refunds the rest. Sume's analogue is a per-call spend cap.

In Apify's x402 setup, upto sets an allowance and charges what the run actually used, while exact takes a fixed $1.00 deposit and refunds the unused balance. Sume has no on-chain payment step; the closest controls are max_spend_usd on a paid MCP call and the required generation_spend_cap_usd on an Agent Completion.
The details come from Apify's launch post, published June 30, 2026, which describes more than 20,000 Actors settling in USDC on Base. Its own warning is worth repeating: treat an agent wallet like a low-balance hot wallet.
Side by side
| Model | How the limit works | Source |
|---|---|---|
x402 upto | Allowance, then charge for actual usage | Apify blog |
x402 exact | Fixed $1.00 deposit, unused balance refunded | Apify blog |
| Sume paid MCP call | Optional max_spend_usd, enforced only when sent; dry_run previews | Sume tools and gates |
| Sume Agent Completion | Required generation_spend_cap_usd; 400 if missing | Sume Agent Completions |
What carries over and what does not
The shared idea is a ceiling set before work starts. The difference is who holds the money. With x402 the agent's wallet signs a payment. With Sume, your account balance pays, and the ceiling is a field in the request, so a leaked key can spend only up to what each call allows plus whatever calls the key may make.
Sume enforces max_spend_usd only when you provide it, which is the opposite of the Agent Completion rule. Make your client library add it by default.
Rules of thumb
- Prefer a cap per call over a large shared allowance.
- Use
dry_runto see the estimate before the real call. - Keep API keys scoped and rotate them; docs list the scopes for Agent Completions.
- Do not mix the models: a 402 from Sume means add credits, not send a payment header.
Sources
Related posts
More in Agents
- 200 from an Action run call: replay or skipped? Read the receipt
A 200 on POST /v1/actions/:id/runs means an idempotency replay or a skipped run. Branch on status, idempotency_hit and skip_reason, not on the HTTP code.
- 402 automation_generation_spend_cap_exceeded in a scheduled run
The per-run generation cap rejected one job before it reserved credits. Only that job fails; the run is not canceled. Raise the cap or trim the plan.
- Agent Completion or three API calls for a render-trim-caption chain
If the steps are fixed, call the endpoints. If the task changes on every call, an Agent Completion with a required spend cap fits. How the two compare.
- Agent Completions input: JSON data the agent reads from a file
Send caller data in input, not in instruction. Sume writes it to /workspace/inputs/sume-action-input.json and tells the agent to read it as data. curl sample.
Written by Sume