SUMMA

Developer Platform

cURL

Every endpoint and every mode straight from the terminal — no SDK required. Covers both the OpenAI-compatible and Anthropic-compatible surfaces.

1

Connect

There is nothing to install — Summa speaks two HTTP dialects and you hit them directly. Every request carries your key. On the OpenAI-compatible surface use the Authorization: Bearer header; the Anthropic-compatible endpoint accepts x-api-key as well. Create a key on the API Keys page, then export it so the snippets below run as-is.

terminal

# Export your key once; every snippet below reads it.
export SUMMA_API_KEY="YOUR_API_KEY"

# OpenAI-compatible base — Chat Completions, Responses, GET /models
export OPENAI_BASE="https://alpha.backend.summachat.com/api/v1"

# Anthropic-compatible base — the SDK appends /v1/messages
export ANTHROPIC_BASE="https://alpha.backend.summachat.com/api"
  • The base URLs above are already pointed at this deployment — copy them verbatim.

  • 401 means a missing or invalid key. 402 means you are out of API credit — top up on the Credits page.

2

Single mode

The model string is the only thing that changes between modes. Start with summa-fast — one fast model with full tool support, the best default for agentic work. Any single catalog model works too: pass summa/<slug>, e.g. summa/openai/gpt-5.

POST /chat/completions

curl -X POST "$OPENAI_BASE/chat/completions" \
  -H "Authorization: Bearer $SUMMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "summa-fast",
    "messages": [{ "role": "user", "content": "Hello!" }]
  }'
3

Debate mode

Swap the model to summa-debate and a panel of models each answers, then a moderator synthesizes one final answer. Debate is slower and pricier — a 3-model debate costs roughly 3x a single model — and tools are accepted but not invoked. Add "stream": true and run curl -N so the terminal renders the live transcript as it arrives instead of buffering.

POST /chat/completions (streaming)

curl -N -X POST "$OPENAI_BASE/chat/completions" \
  -H "Authorization: Bearer $SUMMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "summa-debate",
    "stream": true,
    "messages": [{ "role": "user", "content": "Design a rate limiter. Trade-offs?" }]
  }'

Watch the panel deliberate, then synthesize: with -N you see the header, each model's labeled turn as it finishes, the ## Synthesized answer divider, and then the final answer stream in. Drop the flag (or "stream": false) and you get the synthesized answer only — no transcript.

You'll feel the debate. On a summa-debate request the panel streams a live transcript — a short header, then each model's turn as it finishes, then a ── Synthesized answer ── divider before the moderator's final answer streams token by token. No more staring at a frozen stream while the panel thinks.

  • Two curated panels ship ready to use: summa-debate-coding (Claude Sonnet 4.5 moderating GPT-5 + Gemini 2.5 Pro) and summa-debate-reasoning (GPT-5 moderating Claude Opus 4.1 + Gemini 2.5 Pro).

  • Streaming is required to watch the debate — non-streaming returns the answer alone.

  • Switching modes is just editing the model string (or the summa block) — nothing else in your request changes.

4

Custom panel

To pick the models yourself, expand the summa block into the JSON body. It overrides the model string and works on /chat/completions, /v1/messages, and /responses alike.

POST /chat/completions (custom panel)

curl -N -X POST "$OPENAI_BASE/chat/completions" \
  -H "Authorization: Bearer $SUMMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "summa-debate",
    "stream": true,
    "messages": [{ "role": "user", "content": "Hello!" }],
    "summa": {
  "panel": ["openai/gpt-5", "anthropic/claude-sonnet-4.5"],
  "moderator": "anthropic/claude-sonnet-4.5"
}
  }'
  • panel is 2 to 8 distinct slugs — the same ids as summa/<slug> without the summa/ prefix.

  • moderator is optional and must be one of the slugs in panel; it reads every panelist's turn and writes the single synthesized answer. Omit it and panel[0] moderates — so ordering matters when you leave it out.

  • A malformed summa block returns 400 — usually fewer than 2 panelists, duplicate slugs, or a moderator that is not in panel.

Get models

List and search the catalog with GET /models. It paginates via limit and offset and filters via search. Take any id from data[] and use it as your model — for a summa panel, drop the summa/ prefix.

GET /models

curl "$OPENAI_BASE/models?search=claude&limit=50&offset=0" \
  -H "Authorization: Bearer $SUMMA_API_KEY"

# -> { "object": "list", "data": [{ "id": "summa/anthropic/claude-sonnet-4.5", ... }], "has_more": true }
# Use "summa/anthropic/claude-sonnet-4.5" as a single model,
# or "anthropic/claude-sonnet-4.5" inside a summa panel.

The Anthropic surface

The same modes are available on the Anthropic-compatible endpoint, which streams debate as native thinking blocks rather than a visible transcript.

POST /v1/messages (Anthropic protocol)

curl -X POST "$ANTHROPIC_BASE/v1/messages" \
  -H "x-api-key: $SUMMA_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "summa-debate",
    "max_tokens": 1024,
    "messages": [{ "role": "user", "content": "Hello!" }]
  }'

On /v1/messages a summa-debate request streams each panelist's turn as a thinking block, then the synthesized answer as text. To go single, change the model to summa-fast or summa/<slug>; to customize the panel, add the same summa block shown above.

You'll feel the debate. On a summa-debate request each panelist's turn streams as a thinking block as it lands — you watch the models deliberate in real time — and then the moderator's synthesized answer streams as normal text. In Claude Code, press Ctrl+O to expand the live thinking.

Next

Browse the full catalog on the Models page and manage your prepaid balance on the Credits page (billing is model token cost plus a 30% platform fee). Building an agent that needs to integrate Summa itself? Point it at the machine-readable llms.txt at https://summachat.com/llms.txt.