Skip to main content
POST
Validate Email (v2)
Submit email content to the agentic email validator. By default the request is processed asynchronously: the endpoint returns a job_id you poll via Get Validation Results (v2). Set mode: "sync" to run the validation inline and receive the completed result in a single response.

Request Body

email_text
string
The email content to validate. This is the canonical field; text_snippet (string) and email_bytes (base64-encoded UTF-8) are accepted as aliases. One of email_text, text_snippet, or email_bytes is required.
mode
string
default:"async"
Execution mode: async (default) returns 202 with a job_id to poll; sync runs the agentic graph inline and returns the completed result with 200. Sync requests above the size cap (default 20,000 characters) or that fail inline automatically fall back to async.
metadata
object
Optional metadata merged into the job. document_type is always forced to email so the request routes to the agentic engine.
document_category
string
Explicit scenario id to validate against, e.g. scenario_email_general. When omitted, the validator matches scenarios by metadata: every email matches an audience-agnostic baseline carrying core signals — material non-public information (MNPI), market manipulation, high-pressure sales, and client-data privacy — and audience_hint: retail_US additionally applies retail-disclosure signals. Your account’s active custom rules (from policy imports) are evaluated as well. If no scenario/signals match at all, the job fails rather than returning a false approved.
llm_provider
string
Provider hint (openai, anthropic, gemini). Honored only if the customer is configured to allow provider override; otherwise the customer’s assigned provider is used.
llm_model
string
Model hint, e.g. claude-sonnet-4-6. Subject to the same override rule as llm_provider.

Response

api_version
string
Always v2.
job_id
string
Unique identifier for the validation job.
status
string
queued for async submissions. For sync responses the full status vocabulary applies (completed / failed).
mode
string
Mode the request was actually processed in: async or sync. A sync request that fell back returns async.
submitted_at
string
ISO 8601 UTC timestamp when the job was created, e.g. 2026-06-25T12:00:00.123456+00:00.
poll
object
Where to poll for the result (async only).
usage
object
Billing usage counters (when usage tracking succeeds).
For the sync response body (HTTP 200), the envelope is identical to a completed poll — see Get Validation Results (v2) — with "mode": "sync" added.

Error Responses

Example