Skip to main content
All three models share Enforce Content (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:
  1. Import the document and wait for extraction.
  2. Activate the rules.
  3. Call enforce with model_engine: "anchor_3_0_max" and the import id in validation_scope.imports.
When to use. Custom policies you do not want to train, or a mix of managed rulepacks and uploaded rule text on one call. When not to use. You only need detection (use Mini), you need a compliant rewrite, or you already have a Flagship adapter and want that adapter’s judgment (use Flagship).

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. Use mode: "sync" for short content and mode: "async" when you expect to wait.

Request shape

Same endpoint, same fields, different model_engine:
Replace 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:
Get the rule ID from List Rules. See Enforce Content for runnable cURL, Python, and JavaScript examples. Mini responses omit per-line 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