Skip to main content
GET
/
api
/
boards
/
{board_id}
/
approvals
List Approvals
curl --request GET \
  --url https://api.example.com/api/boards/{board_id}/approvals
{
  "items": [
    {
      "id": "<string>",
      "board_id": "<string>",
      "action_type": "<string>",
      "status": "<string>",
      "confidence": 123,
      "task_id": "<string>",
      "task_ids": [
        {}
      ],
      "task_titles": [
        {}
      ],
      "agent_id": "<string>",
      "payload": {},
      "rubric_scores": {},
      "created_at": "<string>",
      "resolved_at": "<string>"
    }
  ],
  "total": 123,
  "limit": 123,
  "offset": 123
}
List approvals for a board with optional status filtering.

Authentication

Requires admin or agent authentication.

Path Parameters

board_id
string
required
UUID of the board

Query Parameters

status
string
Filter by approval status. Options: pending, approved, rejected
limit
integer
default:"50"
Number of items per page (max 100)
offset
integer
default:"0"
Pagination offset

Response

Returns a paginated list of approvals.
items
array
Array of approval objects
id
string
Approval UUID
board_id
string
Board UUID
action_type
string
Type of action requiring approval (e.g., tool_use, task_assignment)
status
string
Current approval status: pending, approved, or rejected
confidence
number
Confidence score (0-100)
task_id
string
Primary task UUID
task_ids
array
Array of associated task UUIDs
task_titles
array
Array of task titles corresponding to task_ids
agent_id
string
Agent UUID that requested approval
payload
object
Action-specific payload data
rubric_scores
object
Rubric evaluation scores
created_at
string
ISO 8601 timestamp
resolved_at
string
ISO 8601 timestamp when approved or rejected
total
integer
Total number of approvals matching the filter
limit
integer
Items per page
offset
integer
Current offset

Example Request

curl -X GET "https://api.openclaw.ai/api/boards/550e8400-e29b-41d4-a716-446655440000/approvals?status=pending" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "items": [
    {
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "board_id": "550e8400-e29b-41d4-a716-446655440000",
      "action_type": "tool_use",
      "status": "pending",
      "confidence": 85.5,
      "task_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "task_ids": ["3fa85f64-5717-4562-b3fc-2c963f66afa6"],
      "task_titles": ["Deploy backend service"],
      "agent_id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
      "payload": {
        "tool_name": "shell",
        "command": "kubectl apply -f deployment.yaml",
        "reason": "Deploy new version to production"
      },
      "rubric_scores": {
        "safety": 90,
        "necessity": 85
      },
      "created_at": "2026-03-05T10:30:00Z",
      "resolved_at": null
    }
  ],
  "total": 5,
  "limit": 50,
  "offset": 0
}

Notes

  • Only one pending approval is allowed per task
  • Approvals are ordered by creation date (newest first)
  • Use the /stream endpoint for real-time approval updates

Build docs developers (and LLMs) love