Submit an agent's intended action through the full five-stage governance pipeline. The pipeline evaluates the intent, enriches context, applies policies, triggers deliberation if needed, and returns an audited decision.
Query Parameters
| Param | Type | Default | Description |
| mode |
string |
live |
live = full enforcement (default). shadow = evaluate without blocking. test = deterministic integration testing. |
Request Body
| Field | Type | Required | Description |
| action |
string |
REQUIRED |
The action the agent intends to perform (e.g. send_email, execute_trade) |
| target |
string |
REQUIRED |
The target of the action (e.g. customer@example.com) |
| risk_level |
string |
OPTIONAL |
Agent's self-declared risk: low, medium, high, critical |
| context |
object |
OPTIONAL |
Additional context about the action (any key-value pairs) |
| agent_id |
string |
OPTIONAL |
Identifier for the agent submitting the intent |
Example Request
curl -X POST "https://api.gaas.is/v1/intents?mode=shadow" \
-H "Authorization: Bearer gaas_live_org_a1b2c3d4e5f6" \
-H "Content-Type: application/json" \
-d '{
"action": "send_email",
"target": "customer@example.com",
"risk_level": "low",
"context": {
"authenticated": true,
"template": "welcome_series"
},
"agent_id": "cx-agent-7"
}'
Example Response (200 — Approved)
{
"approved": true,
"verdict": "APPROVE",
"modified_parameters": null,
"pipeline": {
"intent_declaration_ms": 3,
"context_enrichment_ms": 41,
"policy_evaluation_ms": 7,
"deliberation_ms": null,
"decision_audit_ms": 12,
"total_ms": 63
},
"deliberation_triggered": false,
"audit": {
"hash": "a4f2...e819",
"reason": "Action approved. Low risk, authenticated context, template-based."
},
"shadow": true
}
Example Response (200 — Blocked)
{
"approved": false,
"verdict": "BLOCK",
"modified_parameters": null,
"pipeline": {
"intent_declaration_ms": 2,
"context_enrichment_ms": 23,
"policy_evaluation_ms": 6,
"deliberation_ms": 180,
"decision_audit_ms": 12,
"total_ms": 223
},
"deliberation_triggered": true,
"audit": {
"hash": "7f3a...c291",
"reason": "Stale sensor data. Contradiction between declared and live context."
},
"shadow": false
}
Response Codes
200 Decision Returned
401 Unauthorized
429 Rate Limited