Authenticated API
ACP (AI Cost & Performance) endpoints require a valid JWT Bearer token. Accessible via the API gateway.
HITL Approval Workflow
Human-in-the-loop approvals for sensitive agent actions. When agents attempt high-risk operations, approval requests are created and must be reviewed by authorized personnel before execution.
Create Approval Request
POST /acp/approvals
Content-Type: application/json
Request Body:
{
"agent_id": "agent_abc123",
"action": "bulk_inventory_adjustment",
"reason": "Weekly inventory reconciliation",
"risk_level": "high",
"context": {
"items_affected": 45,
"total_value_change": 2500.00,
"location_id": "loc_123"
},
"expires_in_minutes": 60,
"notify": ["manager@restaurant.com"],
"callback_url": "https://api.example.com/approval-callback"
}
Response (201 Created):
{
"approval_id": "appr_ghi789",
"agent_id": "agent_abc123",
"action": "bulk_inventory_adjustment",
"status": "pending",
"risk_level": "high",
"expires_at": "2026-01-19T15:30:00Z",
"approval_url": "https://cockpit.olympuscloud.ai/approvals/appr_ghi789",
"created_at": "2026-01-19T14:30:00Z"
}
List Approval Requests
GET /acp/approvals?status=pending&agent_id=agent_abc123
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
status | string | Filter: pending, approved, denied, expired |
agent_id | string | Filter by requesting agent |
risk_level | string | Filter: low, medium, high, critical |
limit | integer | Results per page |
offset | integer | Pagination offset |
Response (200 OK):
{
"approvals": [
{
"approval_id": "appr_ghi789",
"agent_id": "agent_abc123",
"agent_name": "restaurant-assistant",
"action": "bulk_inventory_adjustment",
"status": "pending",
"risk_level": "high",
"context": {
"items_affected": 45,
"total_value_change": 2500.00
},
"expires_at": "2026-01-19T15:30:00Z",
"created_at": "2026-01-19T14:30:00Z"
}
],
"total": 3,
"pending_count": 3
}
Get Approval Details
GET /acp/approvals/{approval_id}
Response (200 OK):
{
"approval_id": "appr_ghi789",
"agent_id": "agent_abc123",
"agent_name": "restaurant-assistant",
"action": "bulk_inventory_adjustment",
"reason": "Weekly inventory reconciliation",
"status": "pending",
"risk_level": "high",
"context": {
"items_affected": 45,
"total_value_change": 2500.00,
"location_id": "loc_123",
"location_name": "Downtown Restaurant"
},
"history": [],
"expires_at": "2026-01-19T15:30:00Z",
"created_at": "2026-01-19T14:30:00Z"
}
Approve Request
POST /acp/approvals/{approval_id}/approve
Content-Type: application/json
Request Body:
{
"notes": "Reviewed and approved. Values match physical count.",
"conditions": {
"max_adjustment_per_item": 50
}
}
Response (200 OK):
{
"approval_id": "appr_ghi789",
"status": "approved",
"approved_by": "user_manager123",
"approved_at": "2026-01-19T14:45:00Z",
"notes": "Reviewed and approved. Values match physical count."
}
Deny Request
POST /acp/approvals/{approval_id}/deny
Content-Type: application/json
Request Body:
{
"notes": "Values exceed acceptable variance. Manual review required.",
"reason_code": "VARIANCE_EXCEEDED"
}
Response (200 OK):
{
"approval_id": "appr_ghi789",
"status": "denied",
"denied_by": "user_manager123",
"denied_at": "2026-01-19T14:45:00Z",
"notes": "Values exceed acceptable variance. Manual review required.",
"reason_code": "VARIANCE_EXCEEDED"
}
Related Pages
- Tool Permissions - Control which tools require approvals
- Audit Logging - Track approval decisions in audit logs
- Overview - ACP Integration overview