Developer Integration v1
Integrate counterparty risk before execution.
ProofLink gives autonomous agents an exposure-aware policy decision before they transfer funds, data, or tasks.
Quick start
One request before value moves.
Send the ERC-8004 Agent ID as a decimal string. The current task type is web-research.
curl -sS https://api.prooflink.site/v1/risk-decisions \
-H 'Content-Type: application/json' \
-d '{
"agent_id": "13294",
"task_type": "web-research",
"exposure_usd": 100
}'const response = await fetch(
"https://api.prooflink.site/v1/risk-decisions",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
agent_id: "13294",
task_type: "web-research",
exposure_usd: 100,
}),
},
);
if (!response.ok) throw new Error(`ProofLink HTTP ${response.status}`);
const decision = await response.json();import json
from urllib.request import Request, urlopen
payload = json.dumps({
"agent_id": "13294",
"task_type": "web-research",
"exposure_usd": 100,
}).encode()
request = Request(
"https://api.prooflink.site/v1/risk-decisions",
data=payload,
headers={"Content-Type": "application/json"},
method="POST",
)
with urlopen(request, timeout=20) as response:
decision = json.load(response)Decision handling
ALLOW
Proceed under the current policy and requested exposure. This is not a guarantee.
ESCROW
Reduce exposure or use an external escrow or equivalent safeguard.
DENY
Stop execution. Missing evidence alone does not produce DENY.
async function beforeExecution(agentId, task, exposureUsd) {
const decision = await prooflinkCheck(agentId, task, exposureUsd);
switch (decision.decision) {
case "ALLOW":
return executeTask(); // Policy recommendation, not a guarantee.
case "ESCROW":
return useSafeguardOrReduceExposure(decision.recommended_exposure_usd);
case "DENY":
return stopExecution();
}
}Risk Report v2
Immutable intelligence for the exact decision.
Fetch the report using the returned decision_id. It includes the economic profile, qualified graph, coverage limitations and exact evidence trace used at decision time.
- • Qualified counterparties and economic events
- • Event-frequency concentration—not dollar exposure
- • Unique ERC-8004 reputation authors
- • Bounded graph, coverage and snapshot trace
const reportResponse = await fetch(
`https://api.prooflink.site/v1/risk-decisions/${decision.decision_id}/report`,
);
if (reportResponse.status === 404) {
// Historical decisions may predate Risk Report v2.
} else if (!reportResponse.ok) {
throw new Error(`Report HTTP ${reportResponse.status}`);
}
const riskReport = await reportResponse.json();Error handling
400 INVALID_JSON / INVALID_REQUESTMalformed JSON or a request that does not match the frozen decision contract.
404 AGENT_NOT_FOUNDThe Agent ID is not present in the canonical Base ERC-8004 Identity Registry.
422 UNSUPPORTED_TASK_TYPEOnly task_type web-research is currently supported.
503 EVIDENCE_SOURCE_UNAVAILABLEA required live evidence source is temporarily unavailable; respect Retry-After.
404 REPORT_NOT_AVAILABLEThe decision exists but predates immutable Risk Report v2 persistence.
Authenticated outcome collection
Report outcomes separately.
Outcome reporting is append-only and separate from the pre-transaction decision. It is designed to support future empirical evaluation; ProofLink does not currently retrain from these reports.
outcome:write. Authentication identifies the submitting integration; records remain CLIENT_REPORTED / UNVERIFIED. Contact ProofLink for v1 provisioning—there is no self-service key generation.curl -sS https://api.prooflink.site/v1/outcomes \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $PROOFLINK_API_KEY" \
-d '{
"decision_id": "YOUR_DECISION_ID",
"outcome": "SUCCESS",
"reported_at": "2026-08-20T10:00:00Z",
"source": "CLIENT_REPORTED",
"task_completed": true
}'Outcome verification
Confirm Base facts independently.
Include a transaction hash in a client-reported outcome, then request verification with an outcome:verify credential. ProofLink confirms normalized Base transaction and receipt facts and whether the analyzed agent wallet was sender or recipient.
ONCHAIN_EVIDENCE_FOUND does not upgrade the reported outcome. A successful EVM receipt confirms execution without revert—it does not prove off-chain task completion, task quality, USD exposure, refund, or dispute.curl -sS -X POST \
https://api.prooflink.site/v1/outcomes/YOUR_OUTCOME_ID/verify \
-H "Authorization: Bearer $PROOFLINK_API_KEY"curl -sS \
https://api.prooflink.site/v1/outcomes/YOUR_OUTCOME_ID/verifications \
-H "Authorization: Bearer $PROOFLINK_API_KEY"Current limitations