Code change review
Compare caller-supplied before and after source snapshots without execution or network access, returning source fingerprints, syntax regressions, structural deltas, function-level changes, and bounded review findings.
$0.05 USDCBasex402 v2POST
Endpoint
https://apiacre.com/v1/developer/code-change-reviewSend the JSON body below. An unpaid request returns HTTP 402 with a PAYMENT-REQUIRED header; an x402-compatible buyer signs the requirement and retries with PAYMENT-SIGNATURE.
Agent one-call path
Optional third-party AgentCash can inspect this route and handle the x402 retry. Its fetch command may automatically pay, so this example caps the call at exactly $0.05 USDC. Copying the command does not pay; review the local wallet and request before running it.
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.050AgentCash CLI documentation · Official SDK and wallet-safety alternatives
Input example
{
"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"
}Response shape
{
"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": []
}
}Try the payment challenge
curl -i -X POST 'https://apiacre.com/v1/developer/code-change-review' \
-H 'content-type: application/json' \
--data '{"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"}'