Source: https://ailoot.ai/docs/de-ch/api/chat-completions/
Canonical: https://ailoot.ai/docs/de-ch/api/chat-completions/
Language: de-ch

[API](https://ailoot.ai/docs/de-ch/) 

# Chat Completions

[Markdown](https://ailoot.ai/docs/de-ch/api/chat-completions/index.md)

Modellantwort auf einen Dialog im OpenAI-Format. Das verbreitetste Format: Fast alle Clients unterstützen es.

POST`https://api.ailoot.ai/v1/chat/completions`

Chat Completions

```bash
curl https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5-5",
    "messages": [
      {"role": "user", "content": "Erkläre in zwei Sätzen, was eine API ist."}
    ]
  }' 
```

```python
from openai import OpenAI
import os

client = OpenAI(max_retries=0, 
    base_url="https://api.ailoot.ai/v1",
    api_key=os.environ["AILOOT_API_KEY"],
)

resp = client.chat.completions.create(
    model="claude-sonnet-5-5",
    messages=[{"role": "user", "content": "Erkläre in zwei Sätzen, was eine API ist."}],
)
print(resp.choices[0].message.content)
```

```js
import OpenAI from "openai";

const client = new OpenAI({ maxRetries: 0,
  baseURL: "https://api.ailoot.ai/v1",
  apiKey: process.env.AILOOT_API_KEY,
});

const resp = await client.chat.completions.create({
  model: "claude-sonnet-5-5",
  messages: [{ role: "user", content: "Erkläre in zwei Sätzen, was eine API ist." }],
});
console.log(resp.choices[0].message.content);
```

200 OK

```json
{
  "id": "chatcmpl-8f2c…",
  "object": "chat.completion",
  "created": 1790812800,
  "model": "claude-sonnet-5-5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Eine API legt fest, wie ein Programm ein anderes auffordert, etwas zu tun…"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 21,
    "completion_tokens": 48,
    "total_tokens": 69
  }
}
```

## Authentifizierung

| Parameter | Typ | Erforderlich | Beschreibung |
| --- | --- | --- | --- |
| `Authorization` | header | erforderlich | Schlüssel im Format `Bearer sk-…`. Alternativ funktionieren die Header `x-api-key` oder `x-goog-api-key`. |

## Anfragekörper

| Parameter | Typ | Erforderlich | Beschreibung |
| --- | --- | --- | --- |
| `model` | string | erforderlich | Modell-ID aus dem [Katalog](https://ailoot.ai/models/de-ch/), zum Beispiel `claude-sonnet-5-5`. Das Modell muss das OpenAI-Chat-Format unterstützen. |
| `messages` | array | erforderlich | Dialogverlauf: Objekte mit `role` (`system`, `developer`, `user`, `assistant`, `tool`) und `content` — als Zeichenfolge oder Array von Teilen (Text, `image_url`). |
| `stream` | boolean | optional | Antwort im Format Server-Sent Events. Standardmässig `false`. Kostenpflichtiger Text wird nach der Kostenberechnung als ein Block ausgegeben, nicht Wort für Wort. |
| `stream_options` | object | optional | `{"include_usage": true}` — abschliessende Angabe von `usage` als letztes Ereignis des Streams senden. |
| `max_tokens` | integer | optional | Maximale Anzahl Antworttokens. Neuer Name: `max_completion_tokens`. Wird kein Limit angegeben, setzt Ailoot 4096 ein (oder weniger, falls das Antwortlimit des Modells niedriger ist; Grok hat ein eigenes Limit). Legen Sie für längere Antworten das Limit ausdrücklich fest, sonst endet die Antwort nach 4096 Tokens mit `finish_reason: "length"`. Das Limit fliesst in die Reservierung ein: Je höher es ist, desto mehr frei verfügbares Guthaben ist nötig. |
| `temperature` | number | optional | Zufälligkeit der Antwort, üblicherweise von 0 bis 2. Kann bei Reasoning-Modellen ignoriert werden. |
| `top_p` | number | optional | Alternative zu temperature: Anteil der Wahrscheinlichkeitsmasse für die Tokenauswahl. |
| `stop` | string \| array | optional | Zeichenfolgen, bei denen die Generierung endet. |
| `tools` | array | optional | Beschreibungen der Funktionen, die das Modell aufrufen kann. Format wie bei OpenAI: `{"type": "function", "function": {...}}`. |
| `tool_choice` | string \| object | optional | `auto`, `none`, `required` oder eine bestimmte Funktion. |
| `response_format` | object | optional | `{"type": "json_object"}` oder `{"type": "json_schema", ...}` für eine strukturierte Antwort — sofern das Modell dies unterstützt. |
| `reasoning_effort` | string | optional | Reasoning-Tiefe bei Reasoning-Modellen: `low`, `medium`, `high`. |

Die übrigen OpenAI-Parameter werden unverändert weitergegeben; ob ein bestimmtes Modell sie unterstützt, entscheidet dessen Entwickler.

## Antwort

| Parameter | Typ | Erforderlich | Beschreibung |
| --- | --- | --- | --- |
| `choices[].message` | object |  | Modellantwort: `content`, bei Werkzeugaufrufen `tool_calls`. |
| `choices[].finish_reason` | string |  | `stop` — Antwort abgeschlossen; `length` — Limit erreicht: `max_tokens` (auch diese Antwort gilt als vollständig und wird nach tatsächlicher Nutzung abgerechnet); `tool_calls` — das Modell ruft ein Werkzeug auf. |
| `usage` | object |  | `prompt_tokens`, `completion_tokens`, `total_tokens` — daraus wird die Abbuchung berechnet. |

Noch Fragen? Schicken Sie uns die Request ID und eine Beschreibung — wir helfen Ihnen weiter.[Support kontaktieren](mailto:support@ailoot.ai)

## Ailoot · Das Unternehmen und sein Projektportfolio





Ailoot baut auf bewährte Betriebserfahrung, einen großen Kundenstamm, stabilen Service und kontinuierliche KPI-Kontrolle.





Das Unternehmen und sein Projektportfolio: Millionen von Kunden; monatliche Umsätze in Milliardenhöhe.





Ailoot nutzt diese Betriebserfahrung für den API-Zugang zu KI-Funktionen in Kundenprodukten, Agenten, Anwendungen und Automatisierungen.
