All webhooks
AI agents
AI action rejected
ai.action.rejectedFires when an operator rejects an AI-agent-proposed action. The action is not executed — only the rejection is logged; the underlying CRM/contact state stays untouched. The agent receives no automatic feedback about the rejection.
HTTP request
AISAR sends a signed POST request to your webhook_url:
http
POST {webhook_url}
Content-Type: application/json
X-AISAR-Signature: sha256=...
{
"event": "ai.action.rejected",
"event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
"timestamp": "2026-05-11T12:08:00.000000Z",
"company_id": 1,
"data": {
"ai_action": {
"id": 999,
"company_id": 1,
"conversation_id": 45,
"tool_key": "close_conversation",
"ai_agent_instance_id": 7,
"approval_status": "rejected",
"comment": "AI agent proposed to close the conversation",
"reason": "Customer says issue is solved",
"rejected_by_user_id": 22,
"rejected_reason": "Customer asked another question right after",
"approved_by_user_id": null,
"execution_result": null,
"created_at": "2026-05-11T12:00:00.000000Z",
"resolved_at": "2026-05-11T12:08:00.000000Z"
}
}
}The X-AISAR-Signature header carries an HMAC-SHA256 signature of the request body — use it to verify the request came from AISAR.
Example payload
json
{
"event": "ai.action.rejected",
"event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
"timestamp": "2026-05-11T12:08:00.000000Z",
"company_id": 1,
"data": {
"ai_action": {
"id": 999,
"company_id": 1,
"conversation_id": 45,
"tool_key": "close_conversation",
"ai_agent_instance_id": 7,
"approval_status": "rejected",
"comment": "AI agent proposed to close the conversation",
"reason": "Customer says issue is solved",
"rejected_by_user_id": 22,
"rejected_reason": "Customer asked another question right after",
"approved_by_user_id": null,
"execution_result": null,
"created_at": "2026-05-11T12:00:00.000000Z",
"resolved_at": "2026-05-11T12:08:00.000000Z"
}
}
}Payload fields
| Field | Type | Description |
|---|---|---|
ai_action.id | integer | Action ID (same as in `ai.action.pending`) |
ai_action.tool_key | string | Tool the agent invoked |
ai_action.approval_status | string | Always `rejected` |
ai_action.rejected_by_user_id | integer | Operator who rejected |
ai_action.rejected_reason | string|null | Optional note supplied by the operator |
ai_action.execution_result | null | No execution happens on rejection — always `null` |
ai_action.resolved_at | string | When the operator decided (ISO 8601) |