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 assistantThe 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 specialistSame 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 workBuilt 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
Reasoning tokens (thinking phase) count as output tokens and are billed at the output rate.
On donna-coda reasoning tokens are incurred on every request — the model is built for coding work.
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.
/v1/modelsLists 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
}
}
]
}/v1/chat/completionsChat endpoint with model selection via the `model` field. Authentication via Bearer token in the Authorization header.
Parameter
| Name | Type | Status | Description |
|---|---|---|---|
model | string | Yes | Model id: 'donna-cadenza', 'donna-coda' or 'donna-sinfonia'. |
messages | array | Yes | Conversation history as an array of message objects with the fields role and content. Roles: 'system', 'user', 'assistant', 'tool'. |
temperature | number | Optional | Sampling temperature (0–2). 0 = deterministic. |
stream | boolean | Optional | If true, the response is delivered as Server-Sent Events (SSE). |
stream_options | object | Optional | Optional, object with field include_usage. When set to true, a final usage chunk is emitted in the stream. |
reasoning_effort | string | Optional | Thinking-phase control: 'none' | 'low' | 'medium' | 'high'. Default: 'high'. On donna-sinfonia the value steers depth only — the thinking phase does not go away there. |
tools | array | Optional | Tool definitions for function calling. |
tool_choice | string | object | Optional | '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
}
}/v1/chat/completionsVision: 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 }
}