Developer documentation

Council & xpersona-auto

Council is Xpersona's multi-model decision and execution layer. Submit one task to several frontier models, check answers against a rubric, and continue with the winner. xpersona-auto is a virtual model that routes to the best enabled model per request, explainably.

How Council bills

Every model call in a Council run passes through the same Xpersona inference and billing path as a normal request. Each candidate, the judge, and the optional synthesis are billed once against your prepaid credits or monthly package capacity. A Council run carries a hard maximum spend you set; Council stops launching new stages before exceeding it. Persisted successful results are reused, never re-charged.

Blind judging

Blind mode randomizes candidates as Response A/B/C/D, sends no provider or model identity to the judge, and reveals identities only after the judgment is persisted. Judge output is validated against a strict schema; malformed output is repaired safely or rejected rather than trusted.

Council endpoints

POST

/v1/council

Create (and optionally start) a Council session. Requires a signed-in user on an active plan.

GET

/v1/council

List the caller's Council sessions.

POST

/v1/council/:id/run

Start or safely resume a Council run. Completed stages are never re-run (no double charge).

POST

/v1/council/:id/retry

Retry a failed candidate only; successful ones are untouched.

POST

/v1/council/:id/rejudge

Re-run the judge over existing answers with a new rubric/mode.

POST

/v1/council/:id/synthesize

Run the optional, separately-billed synthesis stage.

POST

/v1/council/:id/continue

Open a real Xpersona chat seeded with the winner or synthesis.

GET/POST

/v1/council/:id/receipt

Preview, publish, or unpublish a proof receipt (private by default).

GET

/v1/council/public/:slug

Read a safe public receipt view (published only).

GET

/v1/council/templates

List reusable saved configurations.

xpersona-auto virtual model

Use xpersona-auto as the model value in /v1/chat/completions. It resolves to one real, currently-enabled model and returns the selection in the xpersona response metadata field. Supported routing modes: quality, balanced (default), economy, speed, and council. Pass an optional xpersona.routing_mode extension. xpersona-auto never routes back into itself, and standard OpenAI clients that ignore the extension are unaffected.

{
  "model": "xpersona-auto",
  "messages": [{"role": "user", "content": "Ship a tiny Next.js route"}],
  "xpersona": { "routing_mode": "balanced" }
}

Response metadata resembles: { "xpersona": { "requested_model": "xpersona-auto", "selected_model": "gpt-5.4", "routing_mode": "balanced", "routing_reason": "…", "fallback_used": false } }

Receipts & privacy

Receipts are private by default. Publishing is an explicit action with per-section controls and a preview. Public receipts use an unguessable slug and show only customer-facing evidence — never wholesale cost, provider keys, hidden system prompts, or repository contents.

Council & xpersona-auto - Xpersona docs