curl -X POST "https://api.credprotocol.com/api/v2/agents/18/reputation" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}'
const response = await fetch('https://api.credprotocol.com/api/v2/agents/18/reputation', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
})
});
const data = await response.json();
console.log(`Submission ${data.submission_id} — status: ${data.status}`);
console.log(`Poll: ${data.status_url}`);
import requests
response = requests.post(
'https://api.credprotocol.com/api/v2/agents/18/reputation',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={'address': '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'}
)
data = response.json()
print(f"Submission {data['submission_id']} — status: {data['status']}")
print(f"Poll: {data['status_url']}")
{
"submission_id": "550e8400-e29b-41d4-a716-446655440000",
"agent_id": 18,
"status": "pending",
"estimated_completion_seconds": 45,
"status_url": "/api/v2/agents/18/reputation/status/550e8400-e29b-41d4-a716-446655440000",
"tags": ["creditScore", "sybilRisk", "identityCount"]
}
{
"detail": "address is required in the request body — the Ethereum address to score for this agent"
}
{
"detail": "Agent 999 does not exist in the Identity Registry"
}
Agents
Submit Reputation Feedback
Submit on-chain reputation feedback for an AI agent
POST
/
api
/
v2
/
agents
/
{agent_id}
/
reputation
curl -X POST "https://api.credprotocol.com/api/v2/agents/18/reputation" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}'
const response = await fetch('https://api.credprotocol.com/api/v2/agents/18/reputation', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
})
});
const data = await response.json();
console.log(`Submission ${data.submission_id} — status: ${data.status}`);
console.log(`Poll: ${data.status_url}`);
import requests
response = requests.post(
'https://api.credprotocol.com/api/v2/agents/18/reputation',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={'address': '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'}
)
data = response.json()
print(f"Submission {data['submission_id']} — status: {data['status']}")
print(f"Poll: {data['status_url']}")
{
"submission_id": "550e8400-e29b-41d4-a716-446655440000",
"agent_id": 18,
"status": "pending",
"estimated_completion_seconds": 45,
"status_url": "/api/v2/agents/18/reputation/status/550e8400-e29b-41d4-a716-446655440000",
"tags": ["creditScore", "sybilRisk", "identityCount"]
}
{
"detail": "address is required in the request body — the Ethereum address to score for this agent"
}
{
"detail": "Agent 999 does not exist in the Identity Registry"
}
Overview
Computes Cred Protocol credit score, sybil risk, and identity attestations for the given agent, then submits the results as on-chain feedback to the ERC-8004 Reputation Registry on Base. The submission happens asynchronously — this endpoint returns immediately with a tracking ID. Use the status endpoint to poll for completion.This endpoint costs 10 Cred Units per submission (covers computation + on-chain gas on Base).
Authentication
| Method | Header | Cost |
|---|---|---|
| API Token | Authorization: Bearer YOUR_API_KEY | 10 Cred Units |
| x402 Payment | X-PAYMENT: <signed_payment> | $0.10 USDC |
Path Parameters
integer
required
ERC-8004 agent ID from the Identity Registry. Must be >= 1.
Request Body
string
required
Ethereum address to score for this agent (e.g.,
0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045)array
Which feedback types to submit. Defaults to all three if omitted.Options:
creditScore, sybilRisk, identityCountFeedback Tags
| Tag | Description | Value Range |
|---|---|---|
creditScore | Andromeda 1.0 credit score | 300–1000 |
sybilRisk | Sybil detection risk score | 0 (human) – 100 (bot) |
identityCount | Number of verified identity attestations | 0+ |
Response
Returns HTTP 202 Accepted with a tracking ID.string
UUID tracking this submission
integer
The ERC-8004 agent ID
string
Initial status (always
pending)integer
Estimated time to on-chain confirmation (typically ~45 seconds)
string
Relative URL to poll for submission status
array
Feedback types being submitted
curl -X POST "https://api.credprotocol.com/api/v2/agents/18/reputation" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}'
const response = await fetch('https://api.credprotocol.com/api/v2/agents/18/reputation', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
})
});
const data = await response.json();
console.log(`Submission ${data.submission_id} — status: ${data.status}`);
console.log(`Poll: ${data.status_url}`);
import requests
response = requests.post(
'https://api.credprotocol.com/api/v2/agents/18/reputation',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={'address': '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'}
)
data = response.json()
print(f"Submission {data['submission_id']} — status: {data['status']}")
print(f"Poll: {data['status_url']}")
{
"submission_id": "550e8400-e29b-41d4-a716-446655440000",
"agent_id": 18,
"status": "pending",
"estimated_completion_seconds": 45,
"status_url": "/api/v2/agents/18/reputation/status/550e8400-e29b-41d4-a716-446655440000",
"tags": ["creditScore", "sybilRisk", "identityCount"]
}
{
"detail": "address is required in the request body — the Ethereum address to score for this agent"
}
{
"detail": "Agent 999 does not exist in the Identity Registry"
}
Submission Lifecycle
The submission progresses through these statuses:| Status | Description |
|---|---|
pending | Submission received, queued for processing |
scoring | Computing credit score, sybil risk, and identity attestations |
uploading | Uploading feedback JSON to IPFS |
submitting | Sending giveFeedback transaction to Base |
confirmed | Transaction confirmed on-chain |
failed | An error occurred (check the error field) |
Performance
- Response Time: Immediate (HTTP 202)
- End-to-End Completion: ~45 seconds (scoring + IPFS upload + on-chain confirmation)