OpenAI compatible API. Attested gateway. Public status.

TrustedRouter Synth

Run a panel of models inside the attested gateway, then use judge and final fallbacks to return one OpenAI-compatible answer.

Verify gateway
1 URLbase_url migration
100smodels and routes
0prompt logs by default

Run a panel of models inside the attested gateway.

trustedrouter/synth fans one request across several models, asks a judge model to evaluate the panel, and returns one OpenAI-compatible chat completion. Use it for hard prompts, evals, and prompts where one provider's refusal or error should not decide the whole result.

  • Panel calls, judge calls, and final synthesis calls stay in the attested gateway.
  • Judge and final models can each have up to 8 fallbacks.
  • Default quality mode judges with Kimi K2.7 Code, falls back to MiniMax M3, synthesizes with GLM 5.2, then falls back to MiniMax M3.
  • synthesize_non_refusals is the default and removes panel refusals before synthesis.
  • TrustedRouter stores billing and route metadata, not prompt/output content by default.
Synthcurl
curl https://api.trustedrouter.com/v1/chat/completions \
  -H "Authorization: Bearer $TRUSTEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "trustedrouter/synth",
    "messages": [
      {"role": "user", "content": "Compare the best options and answer plainly."}
    ],
    "tools": [{
      "type": "trustedrouter:synth",
      "parameters": {
        "preset": "quality",
        "max_completion_tokens": 800
      }
    }]
  }'

How it works

1. Panel

The gateway runs analysis_models in order, with normal provider fallback for each route. A failed or empty panel member is recorded as a panel failure, not a client-visible failure. The quality preset uses MiniMax M3, Kimi latest, GLM latest, Gemma 4 31B, and DeepSeek V4 Pro unless you supply a custom panel.

2. Judge

The judge sees the panel outputs and produces an internal assessment. judge_models, fallback_judges, and judges are aliases for the same ordered fallback list. If omitted, Kimi K2.7 Code is the first judge and MiniMax M3 is the fallback.

3. Final

The final model writes the visible answer. final_models, fallback_final_models, synthesis_models, and synthesizer_models are aliases for that ordered fallback list. If omitted, GLM 5.2 is the first final synthesizer and MiniMax M3 is the fallback.

Parameters

NameUse
presetquality or budget. Sets a built-in panel unless analysis_models is supplied. Quality defaults to an open-model panel: MiniMax M3, Kimi latest, GLM latest, Gemma 4 31B, and DeepSeek V4 Pro.
analysis_modelsPanel model IDs. Must contain 1 to 8 models.
modelLegacy shorthand for the judge/final model when specific fallback lists are not supplied.
selection_strategysynthesize, synthesize_non_refusals, first_success, or first_non_refusal. The default is synthesize_non_refusals.
judge_modelsOrdered judge fallback list. Also accepts fallback_judges or judges. Defaults to Kimi K2.7 Code, then MiniMax M3.
final_modelsOrdered final-answer fallback list. Also accepts fallback_final_models, synthesis_models, or synthesizer_models. Defaults to GLM 5.2, then MiniMax M3.
max_completion_tokensCaps each internal panel, judge, and final completion.
max_tool_callsReserved compatibility field, accepted from 1 to 16.

Exact model IDs are accepted. The gateway also resolves ~anthropic/claude-latest, ~openai/gpt-latest, ~google/gemini-pro-latest, ~google/gemini-flash-latest, ~kimi/latest, and ~zai/glm-latest aliases. The built-in quality panel uses minimax/minimax-m3, ~kimi/latest, ~zai/glm-latest, google/gemma-4-31b-it, and deepseek/deepseek-v4-pro. Default judging resolves to moonshotai/kimi-k2.7-code, then minimax/minimax-m3; default final synthesis resolves to z-ai/glm-5.2, then minimax/minimax-m3.

SDK examples

PythonOpenAI SDK
import os

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["TRUSTEDROUTER_API_KEY"],
    base_url="https://api.trustedrouter.com/v1",
)

result = client.chat.completions.create(
    model="trustedrouter/synth",
    messages=[{"role": "user", "content": "Give the best answer."}],
)

print(result.choices[0].message.content)
TypeScriptOpenAI SDK
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.TRUSTEDROUTER_API_KEY,
  baseURL: "https://api.trustedrouter.com/v1"
});

const result = await client.chat.completions.create({
  model: "trustedrouter/synth",
  messages: [{ role: "user", content: "Give the best answer." }],
});

console.log(result.choices[0].message.content);

Operational notes

Cost

Synth is multiple model calls. Budget it as panel calls plus judge attempts plus final attempts. Use preset="budget" and max_completion_tokens for cheaper eval loops.

Streaming

Streaming runs the panel and judge first, then streams the final answer. Final fallback can switch before the first byte. After bytes are sent, the stream cannot safely switch to a different final model.

Privacy

The intermediate panel, judge, and final prompts live in enclave memory. Durable storage keeps request IDs, route metadata, usage, cost, and status, not prompt or output text by default.

Need an agent to wire it in?

Use the agent setup guide and ask the agent to call trustedrouter/synth only for hard prompts or evals.

Sign in

Choose a sign in method.