Quick Start
Submit your first agent action for authorization in under 5 minutes.
Prerequisites
- Python 3.9+ or Node.js 18+
- An ASCEND account with API key
Step 1: Get Your API Key
- Log in to the ASCEND Dashboard
- Navigate to Settings → API Keys
- Click Generate New Key
- Copy the key (shown only once)
Important
API keys are shown only once during generation. Store them securely in environment variables or a secrets manager.
Step 2: Install the SDK
- Python
- Node.js
pip install ascend-ai-sdk
npm install @ascend-ai/sdk
Step 3: Submit Your First Action
- Python
- Node.js
from ascend import AscendClient, Decision, FailMode
# Initialize client
client = AscendClient(
api_key="owkai_your_api_key_here",
agent_id="my-agent-001",
agent_name="My AI Agent",
fail_mode=FailMode.CLOSED
)
# Register agent
client.register(
agent_type="automation",
capabilities=["database.query", "api.call"]
)
# Submit an action for authorization
decision = client.evaluate_action(
action_type="database.query",
resource="customer_database",
parameters={"query": "SELECT name FROM customers WHERE id = 123"}
)
# Handle the decision
if decision.decision == Decision.ALLOWED:
print(f"Approved (risk: {decision.risk_score})")
# Execute your action here
client.log_action_completed(
action_id=decision.action_id,
result={"rows_returned": 1},
duration_ms=45
)
elif decision.decision == Decision.PENDING:
print(f"Awaiting approval: {decision.approval_request_id}")
elif decision.decision == Decision.DENIED:
print(f"Denied: {decision.reason}")
print(f"Policy violations: {decision.policy_violations}")
import { AscendClient } from '@ascend-ai/sdk';
// Initialize client
const client = new AscendClient({
apiKey: 'owkai_your_api_key_here',
agentId: 'my-agent-001',
agentName: 'My AI Agent',
failMode: 'closed',
});
// Submit an action for authorization
const decision = await client.evaluateAction({
actionType: 'database.query',
resource: 'customer_database',
parameters: { query: 'SELECT name FROM customers WHERE id = 123' },
});
if (decision.decision === 'allowed') {
console.log(`Approved (risk: ${decision.riskScore})`);
} else if (decision.decision === 'pending') {
console.log(`Awaiting approval: ${decision.approvalRequestId}`);
} else {
console.log(`Denied: ${decision.reason}`);
}
Step 4: Handle Responses
Every action evaluation returns an AuthorizationDecision with these key fields:
| Field | Type | Description |
|---|---|---|
decision | Decision | ALLOWED, DENIED, or PENDING |
action_id | str | Unique action identifier |
risk_score | int | Risk score (0–100) |
reason | str | Explanation of decision |
policy_violations | list | Violated policies (if denied) |
approval_request_id | str | Approval tracking ID (if pending) |
Complete Example
"""Customer service agent with ASCEND governance"""
from ascend import AscendClient, Decision, FailMode
import time
client = AscendClient(
api_key="owkai_prod_xxxxxxxxxxxx",
agent_id="customer-service-agent",
agent_name="Customer Service Bot",
fail_mode=FailMode.CLOSED,
)
client.register(
agent_type="automation",
capabilities=["transaction.refund", "customer.lookup"],
allowed_resources=["stripe_api", "customer_db"],
)
def process_refund(customer_id: str, amount: float) -> dict:
"""Process a refund with governance."""
decision = client.evaluate_action(
action_type="transaction.refund",
resource="stripe_api",
parameters={"customer_id": customer_id, "amount": amount, "currency": "USD"},
risk_indicators={"financial_data": True, "amount_threshold": "normal"},
)
if decision.decision == Decision.ALLOWED:
start = time.time()
result = {"refund_id": "ref_123", "status": "processed", "amount": amount}
client.log_action_completed(
action_id=decision.action_id,
result=result,
duration_ms=int((time.time() - start) * 1000),
)
return result
elif decision.decision == Decision.PENDING:
return {"status": "pending_approval", "approval_id": decision.approval_request_id}
else:
return {"status": "denied", "reason": decision.reason}
result = process_refund("cust_123", 150.00)
print(result)
What's Next?
- Python SDK Installation — Setup and configuration
- Node.js SDK Installation — Node.js setup
- Client Configuration — Advanced client options
- Agent Actions — Action submission patterns
Need Help?
- Enterprise Support: support@ascendowkai.com
- Documentation: docs.ascendowkai.com