---
title: "Message Security Completed"
method: POST
path: "webhooks_events_messageSecurityCompleted"
---

# Message Security Completed

`POST webhooks_events_messageSecurityCompleted` (webhook)

## Headers

- `svix-id` string, required: ID of webhook message.
- `svix-signature` string, required: Signature of webhook message.
- `svix-timestamp` string, date-time, required: Timestamp of webhook message.

## Payload

- EventsMessageSecurityCompletedEvent: Agent Armor reached a verdict on a received message. Sent only in monitor mode, and only for `complete` results: an `unavailable` result sends no event. Sent once per message and inbox; `event_id` is stable, so use it to deduplicate. Not sent for messages labeled `spam`, `blocked`, `unauthenticated`, or `trash`: read those through the API.
  - `type` 'event', required
  - `event_type` 'message.security.completed', required
  - `event_id` string, required: ID of the event. It is the same on every retry and redelivery of the event and on every webhook or WebSocket subscription that receives it, so use it to deduplicate. The format varies by event type; treat it as an opaque string.
  - `message` EventsMessageSecurity, required: The message an Agent Armor result is for. Fetch the message for its content.
    - `organization_id` string, required: ID of organization.
    - `inbox_id` string, required: The ID of the inbox.
    - `message_id` string, required: ID of message.
    - `agent_armor` AgentArmorAgentArmorCompletedEventResult, required: The result in a `message.security.completed` or `message.security.review` event, which is always `complete`.
      - `verdict` 'clear' | 'review', required: What the scan concluded. `clear` means Agent Armor found no threat. It is advisory, not a guarantee that the message is safe. `review` means the message may try to manipulate an agent: inspect it before an agent acts on it.
      - `reason` string, required: A short explanation of the verdict.
      - `model` string, required: Identifies the Agent Armor release that produced the verdict. Opaque; it changes when Agent Armor is updated.
      - `completed_at` string, date-time, required: When the scan finished.
      - `manual_override` AgentArmorAgentArmorManualOverride: The record of a release of a message Agent Armor held for review.
        - `override_id` string, required: ID of the release, and the `event_id` of its `message.security.override` event.
        - `actor` union, required: Who released the message.
          - object
            - `kind` 'api_key', required: Discriminator value: api_key
            - `api_key_id` string, required: The API key that released it.
          - object
            - `kind` 'console', required: Discriminator value: console
        - `reason` string, required: Why it was released, as given by whoever released it.
        - `original_verdict` 'review', required: The verdict that held the message.
        - `released_at` string, date-time, required: When it was released.
      - `status` 'complete', required

## Acknowledgement `200`

Webhook received successfully

---

[API](https://skmtc.dev/agentmail-to/apis/api.md) - [All operations](https://skmtc.dev/agentmail-to/apis/api/llms.txt) - [OpenAPI document](https://skmtc.dev/agentmail-to/apis/api/revisions/a9792efe7bdf?raw)
