AI model family for chat and code

DONNA

Chat endpoint with reasoning, streaming, and tool calling. DONNA Cadenza is a general-purpose assistant, DONNA Coda specialises in code.

Models

All models speak the same API and differ in depth, limits and price.

donna-cadenzaGeneral-purpose assistant

The default for almost everything: knowledge questions, writing, summaries, translation, analysis. Use this unless you have a reason not to.

Price per 1,000 tokens
40 / 200 credits (input / output)
Context window
256.000 tokens
Max output
64.000 tokens
Thinking
configurable, can be switched off
Image input
yes
Tool calling
yes
donna-codaCoding specialist

Same price and same limits as donna-cadenza, but tuned for software work — writing code, debugging, refactoring.

Price per 1,000 tokens
40 / 200 credits (input / output)
Context window
256.000 tokens
Max output
64.000 tokens
Thinking
configurable, can be switched off
Image input
yes
Tool calling
yes
donna-sinfoniaFlagship for complex work

Built for multi-step analysis, very long documents and tasks that chain several steps. Five times the price of donna-cadenza — not worth it for routine requests.

Price per 1,000 tokens
80 / 400 credits (input / output)
Context window
1.000.000 tokens
Max output
128.000 tokens
Thinking
always on, depth configurable
Image input
yes
Tool calling
yes

Pricing

40Credits
donna-cadenza — per 1,000 input tokens
200Credits
donna-cadenza — per 1,000 output tokens

Reasoning tokens (thinking phase) count as output tokens and are billed at the output rate.

40Credits
donna-coda — per 1,000 input tokens
200Credits
donna-coda — per 1,000 output tokens

On donna-coda reasoning tokens are incurred on every request — the model is built for coding work.

80Credits
donna-sinfonia — per 1,000 input tokens
400Credits
donna-sinfonia — per 1,000 output tokens

On donna-sinfonia reasoning tokens are incurred on every request — the model is built for multi-step work.

Thinking and cost

DONNA thinks before answering. That thinking phase produces reasoning tokens, billed as output, and they can outweigh the visible answer several times over. Use reasoning_effort to steer the depth: "none" for short factual lookups, "high" for hard problems.

donna-sinfonia is built for complex work and therefore reasons on every request. reasoning_effort steers the depth there but does not switch the thinking phase off — reasoning tokens are incurred either way. If you need an answer without thinking, use donna-cadenza with reasoning_effort: "none".

Context window and output length

Input and output share the same window. If max_tokens is omitted, the gateway picks a budget that fits whatever space is left — so a long conversation cannot overbook the window.

GET/v1/models

Lists the models your key may use — machine-readable, with type and capabilities per model. The model cards above are rendered from exactly these fields. Add `?type=chat` or `?type=embedding` (comma-separated for several) to narrow the list to one type; without the parameter every model is returned.

Request

curl "https://api.centra.dbpg.io/v1/models" \
  -H "Authorization: Bearer sk_your_api_key"

Response

{
  "object": "list",
  "data": [
    {
      "id": "donna-cadenza",
      "object": "model",
      "type": "chat",
      "created": 1742083200,
      "owned_by": "dbpg",
      "capabilities": {
        "context_window": 256000,
        "max_output_tokens": 64000,
        "reasoning": "configurable",
        "vision": true,
        "tools": true
      }
    },
    {
      "id": "donna-sinfonia",
      "object": "model",
      "type": "chat",
      "created": 1742083200,
      "owned_by": "dbpg",
      "capabilities": {
        "context_window": 1000000,
        "max_output_tokens": 128000,
        "reasoning": "always",
        "vision": true,
        "tools": true
      }
    },
    {
      "id": "donna-chiodi-v20260320",
      "object": "model",
      "type": "embedding",
      "created": 1710892800,
      "owned_by": "dbpg",
      "capabilities": {
        "context_window": 512,
        "vision": false,
        "tools": false
      }
    }
  ]
}
Read capabilities, don't assume them. type separates chat from embedding models — treat any other value as not chattable, so a future type cannot silently appear in a model picker. context_window is what you size compaction or truncation thresholds from; windows differ substantially per model. reasoning is "configurable" when reasoning_effort applies (including "none") and "always" when the model reasons regardless — a UI must not claim otherwise in that case. vision and tools state whether image parts in the content array, and tool definitions, are accepted. Models under evaluation do not appear in the list but can be called by name.
POST/v1/chat/completions

Chat endpoint with model selection via the `model` field. Authentication via Bearer token in the Authorization header.

Parameter

NameTypeStatusDescription
modelstring
Yes
Model id: 'donna-cadenza', 'donna-coda' or 'donna-sinfonia'.
messagesarray
Yes
Conversation history as an array of message objects with the fields role and content. Roles: 'system', 'user', 'assistant', 'tool'.
temperaturenumberOptionalSampling temperature (0–2). 0 = deterministic.
streambooleanOptionalIf true, the response is delivered as Server-Sent Events (SSE).
stream_optionsobjectOptionalOptional, object with field include_usage. When set to true, a final usage chunk is emitted in the stream.
reasoning_effortstringOptionalThinking-phase control: 'none' | 'low' | 'medium' | 'high'. Default: 'high'. On donna-sinfonia the value steers depth only — the thinking phase does not go away there.
toolsarrayOptionalTool definitions for function calling.
tool_choicestring | objectOptional'auto' | 'none' | object with fields type='function' and function.name — controls whether/which tool is called.

Request

curl -X POST "https://api.centra.dbpg.io/v1/chat/completions" \
  -H "Authorization: Bearer sk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "donna-cadenza",
    "messages": [
      { "role": "user", "content": "Was ist die Hauptstadt von Frankreich?" }
    ],
    "reasoning_effort": "low"
  }'

Response

{
  "id": "donna-7c4e5f8a91b3d2e1",
  "object": "chat.completion",
  "created": 1778407200,
  "model": "donna-cadenza",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Paris.",
        "reasoning_content": "The user is asking about the capital of France. That is Paris."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 32,
    "completion_tokens": 18,
    "total_tokens": 50
  }
}
POST/v1/chat/completions

Vision: send an image as a base64 data URI in the `content` array (no remote URLs).

Request

curl -X POST "https://api.centra.dbpg.io/v1/chat/completions" \
  -H "Authorization: Bearer sk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "donna-cadenza",
    "messages": [
      { "role": "user", "content": [
        { "type": "text", "text": "Erkläre, was auf dem Bild zu sehen ist." },
        { "type": "image_url", "image_url": { "url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAA..." } }
      ] }
    ]
  }'

Response

{
  "id": "donna-9f2a7c4e5f8a91b3",
  "object": "chat.completion",
  "model": "donna-cadenza",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Auf dem Bild ist … zu sehen."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 1187, "completion_tokens": 94, "total_tokens": 1281 }
}
Legal. Terms, privacy and additional documentation for the DONNA model family at buehnenproduktionsgesellschaft.de/donna.