AI Policy

Replace the AI policy

Replace the policy wholesale. Every field is optional in the body, but an omitted field is CLEARED, which makes this the route to use when the policy is generated from the customer's own source of truth. To change one field while keeping the rest, use PATCH instead.

The write defaults to status: active, so the satisfiability gate binds: a policy that would leave a registered operation with no compliant route is refused with 400 policy_unsatisfiable and nothing is stored. Only active policies are enforced at routing time; draft and shadow versions are stored without taking effect.

Naming asymmetry, deliberate: top-level fields are snake_case, but values INSIDE model_classes (chain, requiredCapabilities, fallback) and the keys of features (dataCapture, markdownExtraction, assetVision, assetAnnotation, classificationEscalation, richSummary, documentClassification) stay camelCase because they pass straight to the shared policy validator.

put/v1/ai/policy

Request

  • Base URL: https://api.talonic.com
  • URL: https://api.talonic.com/v1/ai/policy
  • Auth: HTTP bearer

Request body

region_pin'us' | 'eu' | 'null' nullable

Hard residency constraint. A deployment in any other region is rejected, including globally-routed ones.

allowed_providersstring[] nullable

Providers permitted to process this workspace's data. Null or omitted means every provider the platform permits.

denied_modelsstring[] nullable

Models this workspace may never be routed to, whatever else permits them. Applies to explicit requests and every fallback chain step alike.

model_substitutionsobject

Remap one model onto another wherever the first would be chosen.

default_modelsobject

Preferred model per speed tier where no class governs the call. Keys are fast, default, powerful.

max_attemptsinteger

Ceiling on provider attempts for one logical call.

image_attachment_quality'low' | 'medium' | 'high' | 'null' nullable

How much the vision model spends rasterising an attached PDF page (Gemini media resolution; medium = 560 tokens per page, high = 1120). Image attachments are unaffected. Null = the deployment default. Omitting it on PUT clears it.

model_classesobject

Named model lineage overrides. Values are camelCase: { description, chain: [{ model, deployments: [{ provider, region }] }], requiredCapabilities, fallback: chain | primary_only }.

operation_classesobject

Per-operation class overrides, keyed by operation type.

featuresobject

Feature toggles, camelCase keys. Absent toggles stay on.

status'draft' | 'shadow' | 'active'

Lifecycle state to save under. Only active is enforced at runtime.

change_reasonstring

Why this change is being made. Recorded on the stored version.

Response

The saved version plus the resulting effective policy view (the GET response body).

Changes

No recorded changes to this operation across all 1 revision of this API.