POST /api/v3/content/validate). You pick a tier with model_engine in the
request body. There is no separate Mini or Max route.
The public name for the default tier is Flagship. The body value is
anchor_3_0. Older internal notes called this Base; that name is not used
in these docs. Pass anchor_3_0 whenever another document says Base or
Anchor 3.0.
Mini
model_engine: "anchor_3_0_mini"
Detection only. The response has result.flagged_rules plus
result.any_violation_detected and result.any_violation_p. There are no
per-line violations, no fix.suggested_text, and no rewrite.
Mini always runs unscoped against its frozen rulebook. It cannot honor
workspace pack toggles or switched-off rules. Sending validation_scope
returns 422 unsupported_scope_for_model; scope a Flagship or Max call
instead.
When to use. High-volume pre-checks, a first-pass flag before a Flagship
or Max call, or any path that only needs “is this clean?” Mini skips the
rewrite pass, so it returns sooner than Flagship or Max on the same input.
When not to use. You need a compliant rewrite, per-line quotes, or a
scoped rule set.
Flagship
model_engine: "anchor_3_0" (default)
Per-line violations plus rewrite. With no validation_scope, Flagship stays on
Flagship and checks the workspace’s active managed catalog only. Activated
custom rules are not evaluated by that scope-less call.
To evaluate an uploaded policy on Flagship, train an
adapter and scope the request to its import.
Training Studio is Flagship-only at launch.
When to use. Chat, email, and agent replies where you will apply
fix.suggested_text or block. Start here unless you have a reason to pick
Mini or Max.
When not to use. You only need a detection flag (use Mini), or you want
uploaded policies evaluated at inference on Max.
Max
model_engine: "anchor_3_0_max"
Per-line violations in the same shape as Flagship, but no rewrite. Max
evaluates the workspace’s active managed and custom rules at inference. There is
no training step and no Training Studio charge. Ask for Max explicitly; merely
activating custom rules does not move a scope-less Flagship request to Max.
Max surfaces a rule’s own fix note when that rule has one, so
fix.suggested_text is empty for most rules and custom rules never return a
rewritten line. Escalate on an empty suggested_text, or run the same content
through Flagship for a rewrite.
To run Max against a policy you uploaded:
- Import the document and wait for extraction.
- Activate the rules.
- Call enforce with
model_engine: "anchor_3_0_max"and the import id invalidation_scope.imports.
Latency
Typical Flagship (Anchor 3.0) latency is 1.63 seconds. Mini is detection only, so it skips the rewrite pass and returns sooner. Flagship runs detection and then rewrite; Max detects without a rewrite pass. Quality, precision, recall, F1, and latency are on the Anchor 3.0 benchmark. These are not SLOs; long content, cold starts, and fallback can take longer. Usemode: "sync" for short content and mode: "async" when you expect to
wait.
Request shape
Same endpoint, same fields, differentmodel_engine:
anchor_3_0 with anchor_3_0_mini or anchor_3_0_max. Read the
verdict from result on a completed job. See
Act on Each Verdict for Pass / Fix / Block /
Escalate.
To evaluate one custom rule on Max, pass its workspace-specific cust_* ID
in validation_scope.rules:
violations and rewrite fields, and Max responses
carry violations without a rewrite. Handlers that read
violations[].fix.suggested_text must branch on those tiers or skip them.
Public responses report billed result.units and result.cost; they do not
return raw input/output token counts.
Next
- Enforce Content — request and response fields
- Anchor 3.0 benchmark — quality and latency
- Pricing — per-validation rates for Mini, Flagship, and Max
- Quickstart — first call
- Train an Adapter — optional Flagship adapter
- Import a Policy — custom rules on Flagship or Max

