Pay with a wallet
Use an installed EVM wallet, or open Coinbase Wallet through a desktop QR code or mobile handoff.
API Acre verifies the exact x402 price, Base network, recipient, and request before any wallet opens. One successful call costs $0.05 USDC.
API Acre never receives your private key; signing stays inside your wallet.
Connecting opens Coinbase Wallet. It does not sign or pay.
Both routes use this exact verified request and one-call price. Nothing is connected, signed, installed, or paid until you continue.
Use an installed EVM wallet, or open Coinbase Wallet through a desktop QR code or mobile handoff.
Copy a command locked to this endpoint, request, and exact USDC cap. Copying is inert; running it may install the official CLI and pay after its authentication and policy checks.
No ETH gas needed. Connecting does not sign or pay. This EIP-3009 payment needs only the displayed USDC on Base because the facilitator submits settlement. Reject any later prompt that differs from the verified amount or recipient.
Running this command may automatically spend up to $0.05 USDC. npx --yes approves package installation. Use a separate low-value wallet and review the verified request first.
npx --yes awal@latest x402 pay https://apiacre.com/v1/developer/code-change-review \
-X POST \
-d '{"before":"def invoice_total(items):\n return sum(item[\"price\"] for item in items)\n","after":"def invoice_total(items, discount=0):\n subtotal = sum(item[\"price\"] for item in items)\n if discount:\n subtotal *= 1 - discount\n return subtotal # TODO: validate discount bounds\n","language":"python","filename":"billing.py"}' \
--max-amount 50000 \
--jsonThe first command checks without paying; running fetch may pay up to the same exact cap.
npx --yes agentcash@latest check https://apiacre.com/v1/developer/code-change-review
npx --yes agentcash@latest fetch https://apiacre.com/v1/developer/code-change-review \
--method POST \
--header 'content-type: application/json' \
--body '{"before":"def invoice_total(items):\n return sum(item[\"price\"] for item in items)\n","after":"def invoice_total(items, discount=0):\n subtotal = sum(item[\"price\"] for item in items)\n if discount:\n subtotal *= 1 - discount\n return subtotal # TODO: validate discount bounds\n","language":"python","filename":"billing.py"}' \
--payment-protocol x402 \
--payment-network base \
--max-amount 0.05Code change review returns structured JSON. This example is static; the paid call returns a fresh result and settlement receipt.
{
"request_id": "018f1f54-7f38-7ba2-8dc3-5f90272d9f1a",
"service": "developer.code-change-review",
"version": "1",
"data": {
"changed": true,
"filename": "billing.py",
"language": "python",
"before": {
"source": {
"sha256": "69316f24997a9cbf73019f697f3f2373e39da67d1835885998775037c600a624",
"characters": 74,
"utf8Bytes": 74
},
"lines": {
"total": 2,
"code": 2,
"comments": 0,
"blank": 0
},
"functions": 1,
"classes": 0,
"branchPoints": 1,
"estimatedCyclomaticComplexity": 2,
"maximumFunctionComplexity": 2,
"maintainabilitySignal": 94,
"syntax": {
"engine": "python-ast",
"valid": true,
"error": null
}
},
"after": {
"source": {
"sha256": "f37990278fe5bda7fdae643ec96f54997271ed3992cefdd5f407736c2e843d00",
"characters": 194,
"utf8Bytes": 194
},
"lines": {
"total": 5,
"code": 5,
"comments": 0,
"blank": 0
},
"functions": 1,
"classes": 0,
"branchPoints": 2,
"estimatedCyclomaticComplexity": 3,
"maximumFunctionComplexity": 3,
"maintainabilitySignal": 87,
"syntax": {
"engine": "python-ast",
"valid": true,
"error": null
}
},
"summary": {
"lineDelta": 3,
"codeLineDelta": 3,
"functionDelta": 0,
"classDelta": 0,
"branchPointDelta": 1,
"complexityDelta": 1,
"maximumFunctionComplexityDelta": 1,
"maintainabilityDelta": -7,
"longLineDelta": 0,
"workMarkerDelta": 1
},
"functionChanges": {
"addedCount": 0,
"removedCount": 0,
"changedCount": 1,
"added": [],
"removed": [],
"changed": [
{
"name": "invoice_total",
"sourceChanged": true,
"sourceSha256Before": "69316f24997a9cbf73019f697f3f2373e39da67d1835885998775037c600a624",
"sourceSha256After": "f37990278fe5bda7fdae643ec96f54997271ed3992cefdd5f407736c2e843d00",
"complexityBefore": 2,
"complexityAfter": 3,
"complexityDelta": 1,
"linesBefore": 2,
"linesAfter": 5,
"lineDelta": 3,
"parametersBefore": 1,
"parametersAfter": 2,
"parameterDelta": 1
}
],
"truncated": false
},
"reviewDecision": "review",
"attentionScore": 2,
"attentionLevel": "medium",
"findings": [
{
"id": "new-work-markers",
"severity": "low",
"message": "The change adds TODO, FIXME, HACK, or XXX markers.",
"evidence": {
"added": 1
}
}
],
"execution": {
"codeExecuted": false,
"networkAccessed": false
},
"analysis": {
"version": "apiacre-code-change-review/1",
"method": "two deterministic code-metrics snapshots plus Python function-level deltas",
"limitations": [
"Static heuristics do not prove runtime behavior, correctness, test coverage, or production safety.",
"Function-level deltas are complete only when both Python snapshots parse and neither function list is truncated.",
"Renamed functions appear as one removal and one addition."
]
}
},
"meta": {
"duration_ms": 42,
"cached": false,
"sources": [],
"warnings": [],
"next_actions": [
{
"service": "document.diff",
"title": "Document diff",
"reason": "Inspect exact line additions, removals, and a bounded unified diff after reviewing the static syntax, complexity, function, and maintainability deltas. The diff route accepts snapshots up to 500,000 characters each.",
"method": "POST",
"path": "/v1/document/diff",
"price": "$0.01",
"input_template": {
"before": "$request.before",
"after": "$request.after",
"context_lines": 3
},
"use_output": "Review result.data.diff and added/removed counts as caller-supplied line evidence; it does not prove runtime correctness or safety.",
"authorization_required": true
}
]
}
}Connected wallet:
Signing authorizes only the verified amount and recipient for this request. Reject the wallet prompt if anything differs.
The default request is verified automatically. Editing it invalidates the quote and requires this no-payment verification again.
Prefer your own client? Use the official x402 SDK examples. Browser checkout requires an EVM wallet with USDC on Base; command-line buyers require their own separately configured wallet and spending policy.