Skip to main content

Actions API

FieldValue
Document IDASCEND-API-001
Version1.0.0
Last UpdatedDecember 19, 2025
AuthorAscend Engineering Team
PublisherOW-KAI Technologies Inc.
ClassificationEnterprise Client Documentation
ComplianceSOC 2 CC6.1/CC6.2, PCI-DSS 7.1/8.3, HIPAA 164.312, NIST 800-53 AC-2/SI-4

Reading Time: 10 minutes | Skill Level: Intermediate

Overview

The Actions API is the core of ASCEND governance. Use it to submit actions for evaluation, check action status, and manage approvals.

Base URL

https://pilot.owkai.app/api/v1/actions

Submit Action

Submit an action for governance evaluation.

Request

POST /api/v1/actions/submit
Content-Type: application/json
X-API-Key: owkai_...
{
"agent_id": "trading-bot-001",
"action_type": "trade_execution",
"description": "Execute stock trade for portfolio rebalancing",
"parameters": {
"symbol": "AAPL",
"quantity": 100,
"side": "buy",
"order_type": "market"
},
"metadata": {
"portfolio_id": "port_123",
"strategy": "rebalance"
}
}

Parameters

FieldTypeRequiredDescription
agent_idstringYesRegistered agent identifier
action_typestringYesType of action being performed
descriptionstringNoHuman-readable description
parametersobjectNoAction-specific parameters
metadataobjectNoAdditional context
require_approvalbooleanNoForce approval regardless of risk
callback_urlstringNoWebhook for async notification

Response: Approved

{
"status": "success",
"data": {
"action_id": "act_abc123",
"decision": "approved",
"risk_assessment": {
"score": 35,
"level": "medium",
"factors": [
{"name": "financial_impact", "score": 20},
{"name": "operation_type", "score": 10},
{"name": "agent_trust", "score": 5}
]
},
"policy_result": {
"matched_rule": "auto-approve-low-risk",
"action": "AUTO_APPROVE"
},
"timestamp": "2025-12-15T10:30:00Z"
}
}

Response: Pending Approval

HTTP/1.1 202 Accepted
{
"status": "success",
"data": {
"action_id": "act_xyz789",
"decision": "pending_approval",
"risk_assessment": {
"score": 75,
"level": "high",
"factors": [
{"name": "financial_impact", "score": 40},
{"name": "operation_type", "score": 20},
{"name": "data_sensitivity", "score": 15}
]
},
"approval_required": {
"level": 3,
"role": "manager",
"timeout_minutes": 60
},
"poll_url": "/api/v1/actions/act_xyz789/status",
"timestamp": "2025-12-15T10:30:00Z"
}
}

Response: Denied

{
"status": "success",
"data": {
"action_id": "act_denied123",
"decision": "denied",
"risk_assessment": {
"score": 95,
"level": "critical"
},
"denial_reason": "Action violates policy 'no-large-trades-after-hours'",
"policy_result": {
"matched_rule": "no-large-trades-after-hours",
"action": "DENY"
},
"timestamp": "2025-12-15T22:30:00Z"
}
}

Get Action Status

Check the status of a submitted action.

Request

GET /api/v1/actions/{action_id}
X-API-Key: owkai_...

Response

{
"status": "success",
"data": {
"action_id": "act_xyz789",
"agent_id": "trading-bot-001",
"action_type": "trade_execution",
"description": "Execute stock trade",
"parameters": {
"symbol": "AAPL",
"quantity": 100
},
"current_status": "pending_approval",
"risk_assessment": {
"score": 75,
"level": "high"
},
"approval_status": {
"required_level": 3,
"current_approvals": [],
"timeout_at": "2025-12-15T11:30:00Z"
},
"created_at": "2025-12-15T10:30:00Z",
"updated_at": "2025-12-15T10:30:00Z"
}
}

List Actions

Query actions with filtering and pagination.

Request

GET /api/v1/actions?status=pending_approval&agent_id=trading-bot-001&limit=20
X-API-Key: owkai_...

Query Parameters

ParameterTypeDescription
statusstringFilter by status (approved, denied, pending_approval)
agent_idstringFilter by agent
action_typestringFilter by action type
risk_levelstringFilter by risk level (low, medium, high, critical)
from_dateISO8601Start date filter
to_dateISO8601End date filter
limitintegerResults per page (max 100)
offsetintegerPagination offset

Response

{
"status": "success",
"data": {
"actions": [
{
"action_id": "act_xyz789",
"agent_id": "trading-bot-001",
"action_type": "trade_execution",
"status": "pending_approval",
"risk_score": 75,
"created_at": "2025-12-15T10:30:00Z"
}
],
"pagination": {
"total": 45,
"limit": 20,
"offset": 0,
"has_more": true
}
}
}

Approve Action

Approve a pending action (requires appropriate role).

Request

POST /api/v1/actions/{action_id}/approve
Authorization: Bearer <jwt_token>
X-CSRF-Token: <csrf_token>
Content-Type: application/json
{
"comment": "Approved after reviewing trade parameters",
"conditions": {
"max_slippage": "0.5%"
}
}

Response

{
"status": "success",
"data": {
"action_id": "act_xyz789",
"decision": "approved",
"approved_by": "manager@company.com",
"approved_at": "2025-12-15T10:45:00Z",
"comment": "Approved after reviewing trade parameters"
}
}

Reject Action

Reject a pending action.

Request

POST /api/v1/actions/{action_id}/reject
Authorization: Bearer <jwt_token>
X-CSRF-Token: <csrf_token>
Content-Type: application/json
{
"reason": "Trade amount exceeds daily limit",
"recommendation": "Split into smaller trades"
}

Response

{
"status": "success",
"data": {
"action_id": "act_xyz789",
"decision": "denied",
"rejected_by": "manager@company.com",
"rejected_at": "2025-12-15T10:45:00Z",
"reason": "Trade amount exceeds daily limit"
}
}

Cancel Action

Cancel a pending action.

Request

POST /api/v1/actions/{action_id}/cancel
X-API-Key: owkai_...

Response

{
"status": "success",
"data": {
"action_id": "act_xyz789",
"decision": "cancelled",
"cancelled_at": "2025-12-15T10:50:00Z"
}
}

Action Types Reference

Common Action Types

TypeDescriptionTypical Risk
data_readRead data from sourceLow
data_writeWrite/update dataMedium
data_deleteDelete dataHigh
data_exportExport data externallyHigh
api_callExternal API callMedium
file_readRead file systemLow
file_writeWrite to file systemMedium
trade_executionFinancial tradeHigh
payment_initiatePayment processingCritical
user_modifyModify user dataHigh
config_changeSystem configurationCritical

Custom Action Types

Register custom action types for your use case:

curl -X POST "https://pilot.owkai.app/api/action-types" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"name": "inventory_update",
"description": "Update inventory levels",
"default_risk_score": 40,
"required_parameters": ["sku", "quantity"],
"category": "operations"
}'

SDK Examples

Python

from ascend import AscendClient

client = AscendClient(api_key="owkai_...")

# Submit action
result = client.submit_action(
agent_id="my-agent",
action_type="data_read",
parameters={"query": "SELECT * FROM customers"}
)

if result.decision == "approved":
execute_query()
elif result.decision == "pending_approval":
# Wait for approval
final = client.wait_for_approval(result.action_id, timeout=60)
if final.decision == "approved":
execute_query()

Node.js

const { AscendClient } = require('@owkai/ascend-sdk');

const client = new AscendClient({ apiKey: 'owkai_...' });

const result = await client.submitAction({
agentId: 'my-agent',
actionType: 'data_read',
parameters: { query: 'SELECT * FROM customers' }
});

if (result.decision === 'approved') {
await executeQuery();
} else if (result.decision === 'pending_approval') {
const final = await client.waitForApproval(result.actionId, { timeout: 60000 });
if (final.decision === 'approved') {
await executeQuery();
}
}

Next Steps


Document Version: 1.0.0 | Last Updated: December 2025