Skip to main content
POST
cURL
Check a single Event against the Policies and Metrics selected by active Conditions in your Environment. Use this endpoint for one message, tool output, function call, agent update, reasoning, or inline image artifact.

How It Works

  1. You submit one Event with a type, one content field, and optional metadata
  2. Conditions match the Event’s metadata and select Policies and Metrics.
  3. Event selectors filter them to the submitted type and field
  4. You receive synchronous Policy results, and selected Metrics continue asynchronously.
If you omit all content fields, the request becomes a reference-only Event. White Circle looks up the latest matching result by run_id and event_id.

Example Request

Request Overview

Event Payload

Content Fields

Provide exactly one content field per Event. tool.arguments and function.arguments accept any JSON value, including a string, number, boolean, null, array, or nested object. White Circle preserves the JSON shape for moderation. For an artifact image with raw base64 data, mime_type is optional for JPEG, PNG, WebP, and GIF content. White Circle detects the image type from the decoded bytes.
An Event can include at most one content field for evaluation. To evaluate multiple fields, submit multiple Events.

Response Overview

The verdict is reported once, at the top level. The event object carries identity and status only.
The event object includes: flagged and policies are present only when status is completed. For any other status no check ran, so the response states no verdict rather than reporting false. note explains why: Each Policy object includes:
  • flagged — Whether this Policy was violated
  • name — Human-readable Policy name
  • enabled_by_conditions — The Conditions that selected this Policy for this Event, which is why it was evaluated. Absent when no Condition was involved.

Conditions and Metadata

White Circle evaluates active Conditions against the metadata object on this Event. Matching Conditions select the applicable Policies and Metrics. Event selectors then filter them to this Event’s type, field, and direction.
If no active Condition matches, the Event completes without evaluating any Policies and queues no Metrics. Conditions do not fall back to every Policy or Metric in the Environment.
Selected Metrics run asynchronously and are not returned in the synchronous policies map. View Metric results in the dashboard after processing completes. See Conditions for expression syntax and Policy or Metric attachments. Use one parent_event_id for the Event’s structural place in the run. Use links when an Event consumes multiple outputs or depends on Events from other runs:
Parents and links are used for auditing and navigation in this API version. White Circle does not automatically add target content to moderation context. Reference-only Events cannot declare parent_event_id or links because references are read-only lookups. White Circle returns 400 for self-parenting, direct mutual parents such as A → B → A, and parent cycles contained in one batch. It does not recursively traverse all prior cross-request ancestors on the write path.

Event Identity and Retries

run_id and event_id help you connect Events to your own application data. They are not retry keys. If you submit the same run_id and event_id again, White Circle may run another check. The latest durable attempt (completed or failed) defines the current graph relationships. Each retry replaces the complete parent/link declaration set; omitted relationships are cleared from the current graph. Use internal_event_id to refer to one saved result.

Reference an Existing Event

To reference an existing Event, send the type and event_id without a content field:
White Circle returns referenced when the latest matching result has the same Event type. Otherwise, it returns not_found.

Tool Output Example

Authorizations

Authorization
string
header
required

API Key required. Format: Bearer wc-your-api-key

Headers

whitecircle-version
string
required

API Version

Body

application/json
environment_id
string
required
event
object
required
run_id
string | null
external_session_id
string | null
role
string | null

Response

Success

event
object
required

The Event a single check was run against. Identity and status only; the verdict lives on the response so it is stated exactly once.

run_id
string
required
flagged
boolean | null

Absent when no check ran, such as a reference, a failure, or an Event no Condition selected policies for.

policies
object | null
note
string | null