Skip to main content
Roundtable is in beta. Its request and response shapes may change without the usual deprecation window.

Ask a panel

Send one input to several models. With the default summary resolution, a consolidation model merges their answers into a single data.
curl -sX POST https://api.opper.ai/v3/roundtable \
  -H "Authorization: Bearer $OPPER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input": "What is the best database for a multi-tenant SaaS, and why?",
    "models": [
      { "name": "openai/gpt-5.5" },
      { "name": "anthropic/claude-sonnet-4-6" },
      { "name": "gemini/gemini-2.5-pro" }
    ]
  }'
Response
{
  "id": "rt_...",
  "data": "The panel broadly favors PostgreSQL with row-level security...",
  "meta": {
    "resolution": "summary",
    "models_used": ["openai/gpt-5.5", "anthropic/claude-sonnet-4-6", "gemini/gemini-2.5-pro"],
    "total_cost": 0.021,
    "total_duration_ms": 5210,
    "summary_model": "openai/gpt-5.5"
  },
  "model_results": [
    { "index": 0, "model": "openai/gpt-5.5", "data": "...", "cost": 0.006 },
    { "index": 1, "model": "anthropic/claude-sonnet-4-6", "data": "...", "cost": 0.008 },
    { "index": 2, "model": "gemini/gemini-2.5-pro", "data": "...", "cost": 0.007 }
  ]
}

Vote on a choice

For classification or voting, set resolution to multiple_choice and pass the options in choices. Each model picks one and the result is the consolidated winner.
curl -sX POST https://api.opper.ai/v3/roundtable \
  -H "Authorization: Bearer $OPPER_API_KEY" -H "Content-Type: application/json" \
  -d '{
    "input": "Is this review positive, negative, or neutral? \"It works, but support was slow.\"",
    "models": [
      { "name": "openai/gpt-5-mini" },
      { "name": "anthropic/claude-haiku-4-5" },
      { "name": "gemini/gemini-2.5-flash" }
    ],
    "resolution": "multiple_choice",
    "choices": ["positive", "negative", "neutral"]
  }'

Compare without consolidating

To read each model’s answer yourself with no consolidation step, set resolution to fast. data comes back null and you use model_results directly.
Add an output_schema to constrain every model — and the consolidation — to the same JSON Schema, and pass instructions as a system prompt shared across the panel. Set stream: true to receive per-model deltas over SSE. See the overview and API reference.