> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sunra.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a chat completion

Sendet eine Anfrage für eine Modellantwort für die gegebene Chat-Konversation. Unterstützt sowohl Streaming- als auch Nicht-Streaming-Modi. Kompatibel mit dem OpenAI Chat Completions API-Format.

## Authentifizierung

<ParamField header="Authorization" type="string" required>
  Bearer-Token. Verwenden Sie Ihren API-Schlüssel als Bearer-Token im Authorization-Header.

  Format: `Bearer <SUNRA_KEY>`
</ParamField>

## Anfrage

Dieser Endpunkt erwartet ein JSON-Objekt.

<ParamField body="model" type="string" required>
  Das Modell, das für die Vervollständigung verwendet werden soll. Verfügbare Modelle finden Sie unter [sunra.ai/models](https://sunra.ai/models).
</ParamField>

<ParamField body="messages" type="object[]" required>
  Liste der Nachrichten für die Konversation.

  <Expandable title="Eigenschaften">
    <ParamField body="role" type="string" required>
      Die Rolle des Nachrichtenautors. Unterstützte Werte: `system`, `user`, `assistant`.
    </ParamField>

    <ParamField body="content" type="string" required>
      Der Inhalt der Nachricht.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="stream" type="boolean" default={false}>
  Wenn auf `true` gesetzt, werden partielle Nachrichtendeltas als Server-Sent Events (SSE) gesendet.
</ParamField>

<ParamField body="max_tokens" type="integer">
  Die maximale Anzahl der zu generierenden Tokens in der Vervollständigung.
</ParamField>

<ParamField body="temperature" type="number">
  Sampling-Temperatur zwischen 0 und 2. Höhere Werte wie 0.8 machen die Ausgabe zufälliger, niedrigere Werte wie 0.2 machen sie fokussierter und deterministischer.
</ParamField>

<ParamField body="top_p" type="number">
  Nucleus-Sampling-Parameter (0-1). Eine Alternative zum Temperatur-Sampling, bei der das Modell die Tokens mit der top\_p-Wahrscheinlichkeitsmasse berücksichtigt.
</ParamField>

<ParamField body="frequency_penalty" type="number">
  Zahl zwischen -2.0 und 2.0. Positive Werte bestrafen neue Tokens basierend auf ihrer bestehenden Häufigkeit im bisherigen Text und verringern die Wahrscheinlichkeit, dass das Modell dieselbe Zeile wörtlich wiederholt.
</ParamField>

<ParamField body="presence_penalty" type="number">
  Zahl zwischen -2.0 und 2.0. Positive Werte bestrafen neue Tokens basierend darauf, ob sie im bisherigen Text vorkommen, und erhöhen die Wahrscheinlichkeit, dass das Modell über neue Themen spricht.
</ParamField>

<ParamField body="stop" type="string | string[]">
  Bis zu 4 Sequenzen, bei denen die API die weitere Token-Generierung stoppt.
</ParamField>

## Antwort

Erfolgreiche Chat-Vervollständigungs-Antwort.

<ResponseField name="id" type="string">
  Eindeutiger Vervollständigungs-Bezeichner.
</ResponseField>

<ResponseField name="object" type="string">
  Objekttyp. Immer `chat.completion`.
</ResponseField>

<ResponseField name="created" type="integer">
  Unix-Zeitstempel der Erstellung.
</ResponseField>

<ResponseField name="model" type="string">
  Das für die Vervollständigung verwendete Modell.
</ResponseField>

<ResponseField name="choices" type="object[]">
  Liste der Vervollständigungsoptionen.

  <Expandable title="Eigenschaften">
    <ResponseField name="index" type="integer">
      Index der Option in der Liste.
    </ResponseField>

    <ResponseField name="message" type="object">
      Die generierte Nachricht.

      <Expandable title="Eigenschaften">
        <ResponseField name="role" type="string">
          Die Rolle des Nachrichtenautors. Immer `assistant`.
        </ResponseField>

        <ResponseField name="content" type="string">
          Der Inhalt der Nachricht.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="finish_reason" type="string">
      Der Grund, warum das Modell die Generierung gestoppt hat. Kann `stop`, `length` oder `content_filter` sein.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="usage" type="object">
  Token-Nutzungsstatistiken.

  <Expandable title="Eigenschaften">
    <ResponseField name="prompt_tokens" type="integer">
      Anzahl der Tokens im Prompt.
    </ResponseField>

    <ResponseField name="completion_tokens" type="integer">
      Anzahl der Tokens in der generierten Vervollständigung.
    </ResponseField>

    <ResponseField name="total_tokens" type="integer">
      Gesamtanzahl der verwendeten Tokens (Prompt + Vervollständigung).
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api-llm.sunra.ai/v1/chat/completions \
    -H "Authorization: Bearer <SUNRA_KEY>" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "openai/gpt-4o",
      "messages": [
        {
          "role": "system",
          "content": "You are a helpful assistant."
        },
        {
          "role": "user",
          "content": "What is the capital of France?"
        }
      ]
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api-llm.sunra.ai/v1/chat/completions",
      headers={
          "Authorization": "Bearer <SUNRA_KEY>",
          "Content-Type": "application/json"
      },
      json={
          "model": "openai/gpt-4o",
          "messages": [
              {"role": "system", "content": "You are a helpful assistant."},
              {"role": "user", "content": "What is the capital of France?"}
          ]
      }
  )
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api-llm.sunra.ai/v1/chat/completions", {
    method: "POST",
    headers: {
      "Authorization": "Bearer <SUNRA_KEY>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "openai/gpt-4o",
      messages: [
        { role: "system", content: "You are a helpful assistant." },
        { role: "user", content: "What is the capital of France?" }
      ]
    })
  });
  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "chatcmpl-abc123",
    "object": "chat.completion",
    "created": 1677652288,
    "model": "openai/gpt-4o",
    "choices": [
      {
        "index": 0,
        "message": {
          "role": "assistant",
          "content": "The capital of France is Paris."
        },
        "finish_reason": "stop"
      }
    ],
    "system_fingerprint": "fp_44709d6fcb",
    "usage": {
      "prompt_tokens": 25,
      "completion_tokens": 8,
      "total_tokens": 33
    }
  }
  ```
</ResponseExample>
