📝Base URL: http://localhost:3006 (local). All endpoints require Authorization: Bearer YOUR_API_KEY header plus user scope headers (x-opacus-user-email or x-opacus-wallet).
Kinetic Templates
| Method | Path | Description |
| GET | /api/kinetic/templates | List all available agent templates |
| POST | /api/kinetic/launch-template | Launch agent from template. Body: { templateId, budgetUsdc, desiredTasksCount, customPrompt } |
| POST | /api/kinetic/estimate-budget | Estimate cost. Body: { templateId, desiredTasksCount } |
Agent Management
| Method | Path | Description |
| GET | /api/kinetic/agents | List all agents for authenticated user |
| GET | /api/kinetic/agents/:agentId | Get single agent details |
| POST | /api/agents | Create agent with full policy. Body: agent policy object |
| DELETE | /api/agents/:agentId | Delete agent |
Balance & Deposits
| Method | Path | Description |
| GET | /api/kinetic/balance | Get USDC balance for user scope |
| POST | /api/kinetic/deposit | Record deposit. Body: { amountUsdc, txHash } |
| POST | /api/kinetic/withdraw | Withdraw USDC. Body: { amountUsdc, toAddress } |
Payments (OpacusPay)
| Method | Path | Description |
| POST | /api/store/payments | Record API credit payment. Body: { wallet, payment: { provider, amountUsdc, reference } } |
| GET | /api/payments | List payment history. Query: ?limit=50 |
| POST | /api/kinetic/fiat-purchase | Initiate fiat USDC purchase. Body: { amountUsdc } |
| POST | /api/kinetic/api-payment | API bill payment via OpacusPay |
Escrow
| Method | Path | Description |
| POST | /api/escrows | Create escrow. Body: { amountUsdc, agentDid, deliveryCondition } |
| GET | /api/escrows | List all escrows for user |
| GET | /api/escrows/:id | Get escrow by ID |
| POST | /api/escrows/:id/proof | Submit delivery proof. Body: { outputHash, txHash, delivered } |
| POST | /api/escrows/:id/release | Manually release escrow (admin) |
| POST | /api/escrows/:id/refund | Request refund |
| POST | /api/escrows/:id/dispute | Open dispute. Body: { reason } |
0G Storage
| Method | Path | Description |
| POST | /api/0g-storage/upload | Upload file. Body: { filePath } or multipart file |
| GET | /api/0g-storage/download/:rootHash | Download file by rootHash |
| GET | /api/0g-storage/verify/:rootHash | Verify Merkle proof |
0G Compute (Inference)
| Method | Path | Description |
| POST | /api/0g-inference/request | Run inference. Body: { prompt, model, stream } |
Discovery & Reputation
| Method | Path | Description |
| GET | /api/discovery/search | Search agents. Query: ?latitude=&longitude=&capability=&minScore= |
| GET | /api/reputation/:did | Get Kinetic Score + full breakdown + ZK proof for agent DID. Query: ?minScore=N (default 80) |
Kinetic Score breakdown fields
| Field | Weight | Description |
reputation | 40% | Base reputation adjusted with 0G compute quality |
escrowSuccessRate | 30% | % escrows released (vs refunded) |
taskCompletionRate | 20% | % tasks completed |
teeUsageRate | 10% | % tasks run inside TEE |
ogComputeSuccessRate | 10% | % 0G compute jobs succeeded (default 50) |
weightedScore | — | Final 0–100 integer score |
ZK Proof fields (returned in zkProof)
| Field | Description |
kind | reputation-threshold |
backend | groth16-fallback |
publicSignals.scoreGteMin | true if score ≥ minScore — verifiable without revealing raw score |
proof.commitment | Keccak-256 of (did, score, nonce) |
proof.nonce | 128-bit random nonce |
Health check
GET /health
# Returns: { status: "ok", version: "x.x.x", uptime: 12345 }
# No auth required