curl --request POST \
--url https://api.opper.ai/v3/roundtable \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"input": "<string>",
"models": [
{
"name": "<string>",
"max_tokens": 123,
"reasoning": "<string>",
"temperature": 123,
"top_p": 123
}
]
}
'import requests
url = "https://api.opper.ai/v3/roundtable"
payload = {
"input": "<string>",
"models": [
{
"name": "<string>",
"max_tokens": 123,
"reasoning": "<string>",
"temperature": 123,
"top_p": 123
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
input: '<string>',
models: [
{
name: '<string>',
max_tokens: 123,
reasoning: '<string>',
temperature: 123,
top_p: 123
}
]
})
};
fetch('https://api.opper.ai/v3/roundtable', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": "<string>",
"id": "<string>",
"meta": {
"models_used": [
"<string>"
],
"resolution": "<string>",
"total_cost": 123,
"total_duration_ms": 123,
"summary_model": "<string>",
"summary_usage": {
"input_tokens": 123,
"output_tokens": 123,
"cache_creation_1h_tokens": 123,
"cache_creation_tokens": 123,
"cache_read_tokens": 123,
"code_interpreter_sessions": 123,
"extra": {},
"file_search_calls": 123,
"google_search_prompts": 123,
"google_search_queries": 123,
"image_generation_calls": 123,
"input_audio_tokens": 123,
"input_image_tokens": 123,
"output_audio_tokens": 123,
"output_image_tokens": 123,
"reasoning_tokens": 123,
"url_context_requests": 123,
"web_fetch_requests": 123,
"web_search_calls": 123,
"web_search_requests": 123,
"x_search_calls": 123
},
"trace_uuid": "<string>"
},
"model_results": [
{
"data": "<string>",
"duration_ms": 123,
"index": 123,
"model": "<string>",
"cost": 123,
"error": "<string>",
"schema_error": "<string>",
"schema_valid": true,
"usage": {
"input_tokens": 123,
"output_tokens": 123,
"cache_creation_1h_tokens": 123,
"cache_creation_tokens": 123,
"cache_read_tokens": 123,
"code_interpreter_sessions": 123,
"extra": {},
"file_search_calls": 123,
"google_search_prompts": 123,
"google_search_queries": 123,
"image_generation_calls": 123,
"input_audio_tokens": 123,
"input_image_tokens": 123,
"output_audio_tokens": 123,
"output_image_tokens": 123,
"reasoning_tokens": 123,
"url_context_requests": 123,
"web_fetch_requests": 123,
"web_search_calls": 123,
"web_search_requests": 123,
"x_search_calls": 123
}
}
]
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"meta": {}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"meta": {}
}Roundtable
Send a query to multiple models in parallel and combine results using a configurable resolution strategy (summary, fast, multiple_choice).
curl --request POST \
--url https://api.opper.ai/v3/roundtable \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"input": "<string>",
"models": [
{
"name": "<string>",
"max_tokens": 123,
"reasoning": "<string>",
"temperature": 123,
"top_p": 123
}
]
}
'import requests
url = "https://api.opper.ai/v3/roundtable"
payload = {
"input": "<string>",
"models": [
{
"name": "<string>",
"max_tokens": 123,
"reasoning": "<string>",
"temperature": 123,
"top_p": 123
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
input: '<string>',
models: [
{
name: '<string>',
max_tokens: 123,
reasoning: '<string>',
temperature: 123,
top_p: 123
}
]
})
};
fetch('https://api.opper.ai/v3/roundtable', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": "<string>",
"id": "<string>",
"meta": {
"models_used": [
"<string>"
],
"resolution": "<string>",
"total_cost": 123,
"total_duration_ms": 123,
"summary_model": "<string>",
"summary_usage": {
"input_tokens": 123,
"output_tokens": 123,
"cache_creation_1h_tokens": 123,
"cache_creation_tokens": 123,
"cache_read_tokens": 123,
"code_interpreter_sessions": 123,
"extra": {},
"file_search_calls": 123,
"google_search_prompts": 123,
"google_search_queries": 123,
"image_generation_calls": 123,
"input_audio_tokens": 123,
"input_image_tokens": 123,
"output_audio_tokens": 123,
"output_image_tokens": 123,
"reasoning_tokens": 123,
"url_context_requests": 123,
"web_fetch_requests": 123,
"web_search_calls": 123,
"web_search_requests": 123,
"x_search_calls": 123
},
"trace_uuid": "<string>"
},
"model_results": [
{
"data": "<string>",
"duration_ms": 123,
"index": 123,
"model": "<string>",
"cost": 123,
"error": "<string>",
"schema_error": "<string>",
"schema_valid": true,
"usage": {
"input_tokens": 123,
"output_tokens": 123,
"cache_creation_1h_tokens": 123,
"cache_creation_tokens": 123,
"cache_read_tokens": 123,
"code_interpreter_sessions": 123,
"extra": {},
"file_search_calls": 123,
"google_search_prompts": 123,
"google_search_queries": 123,
"image_generation_calls": 123,
"input_audio_tokens": 123,
"input_image_tokens": 123,
"output_audio_tokens": 123,
"output_image_tokens": 123,
"reasoning_tokens": 123,
"url_context_requests": 123,
"web_fetch_requests": 123,
"web_search_calls": 123,
"web_search_requests": 123,
"x_search_calls": 123
}
}
]
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"meta": {}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"meta": {}
}Authorizations
API key authentication. Pass your API key as a Bearer token.
Body
The question or prompt sent to all models
Models to query in parallel
Show child attributes
Show child attributes
Literal options for multiple_choice resolution
System prompt shared across all model calls
Per-model retry count on transient errors (default 1 / max 3)
JSON Schema for structured output — applied to all model calls and the consolidation call
Resolution mode: summary (default) / fast / multiple_choice
Enable SSE streaming
Override the model used for consolidation in summary mode
Per-model timeout in milliseconds covering all retries (default 120000 / max 300000)
Response
Successful response
Final consolidated output. Null in fast mode (no consolidation runs).
Stable identifier for this roundtable call.
Aggregated call metadata.
Show child attributes
Show child attributes
Per-model fan-out results in the order they appeared in the request.
Show child attributes
Show child attributes