> ## Documentation Index
> Fetch the complete documentation index at: https://docs.opper.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Roundtable quickstart

> Ask three models one question and get a consolidated answer.

<Warning>
  Roundtable is in **beta**. Its request and response shapes may change without the usual deprecation window.
</Warning>

## Ask a panel

Send one `input` to several `models`. With the default `summary` resolution, a consolidation model merges their answers into a single `data`.

<CodeGroup>
  ```bash cURL theme={null}
  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" }
      ]
    }'
  ```

  ```python Python theme={null}
  import os, requests

  r = requests.post(
      "https://api.opper.ai/v3/roundtable",
      headers={"Authorization": f"Bearer {os.environ['OPPER_API_KEY']}"},
      json={
          "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"},
          ],
      },
  )
  r.raise_for_status()
  out = r.json()
  print("consolidated:", out["data"])
  print("total cost:", out["meta"]["total_cost"])
  for m in out["model_results"]:
      print(m["model"], "→", m["data"][:80])
  ```
</CodeGroup>

```json Response theme={null}
{
  "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.

```bash theme={null}
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.

<Tip>
  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](/build/roundtable/overview) and [API reference](/v3-api-reference/roundtable/create-roundtable).
</Tip>
