> ## 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 message

Erstellt eine Nachricht im Anthropic Messages API-Format. Unterstützt Text, Bilder, PDFs, Tools und erweitertes Denken.

## 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 Nachricht 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 Eingabenachrichten für die Konversation.

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

    <ParamField body="content" type="string | object[]" required>
      Der Inhalt der Nachricht. Kann ein String oder ein Array von Inhaltsblöcken für multimodale Eingabe sein.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="max_tokens" type="integer" required>
  Die maximale Anzahl der zu generierenden Tokens vor dem Stoppen.
</ParamField>

<ParamField body="system" type="string">
  System-Prompt. Gibt Anweisungen, denen das Modell folgen soll.
</ParamField>

<ParamField body="stream" type="boolean" default={false}>
  Ob die Antwort mittels Server-Sent Events (SSE) gestreamt werden soll.
</ParamField>

<ParamField body="temperature" type="number">
  Grad der Zufälligkeit in der Antwort. Bereich von 0.0 bis 1.0.
</ParamField>

<ParamField body="top_p" type="number">
  Nucleus-Sampling-Parameter. Verwenden Sie einen Wert zwischen 0 und 1.
</ParamField>

<ParamField body="top_k" type="integer">
  Sampelt nur aus den Top-K-Optionen für jedes nachfolgende Token. Wird verwendet, um Antworten mit geringer Wahrscheinlichkeit aus dem "Long Tail" zu entfernen.
</ParamField>

<ParamField body="stop_sequences" type="string[]">
  Benutzerdefinierte Textsequenzen, die das Modell dazu veranlassen, die Generierung zu stoppen.
</ParamField>

<ParamField body="metadata" type="object">
  Ein Objekt, das Metadaten über die Anfrage beschreibt.

  <Expandable title="Eigenschaften">
    <ParamField body="user_id" type="string">
      Ein externer Bezeichner für den Benutzer, der mit der Anfrage verknüpft ist.
    </ParamField>
  </Expandable>
</ParamField>

## Antwort

Erfolgreiche Nachrichtenantwort.

<ResponseField name="id" type="string">
  Eindeutiger Nachrichtenbezeichner.
</ResponseField>

<ResponseField name="type" type="string">
  Objekttyp. Immer `message`.
</ResponseField>

<ResponseField name="role" type="string">
  Die Rolle der generierten Nachricht. Immer `assistant`.
</ResponseField>

<ResponseField name="content" type="object[]">
  Liste der Inhaltsblöcke in der Antwort.

  <Expandable title="Eigenschaften">
    <ResponseField name="type" type="string">
      Der Typ des Inhaltsblocks. z.B. `text`.
    </ResponseField>

    <ResponseField name="text" type="string">
      Der generierte Textinhalt.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="model" type="string">
  Das Modell, das die Anfrage bearbeitet hat.
</ResponseField>

<ResponseField name="stop_reason" type="string">
  Der Grund, warum das Modell die Generierung gestoppt hat. Kann `end_turn`, `max_tokens`, `stop_sequence` oder `tool_use` sein.
</ResponseField>

<ResponseField name="stop_sequence" type="string | null">
  Die Stoppsequenz, die das Modell zum Stoppen veranlasst hat, falls zutreffend.
</ResponseField>

<ResponseField name="usage" type="object">
  Token-Nutzungsstatistiken. Die drei Eingabe-Buckets schließen sich gegenseitig aus – siehe [Token-Nutzung](/de/llm/token-usage).

  <Expandable title="Eigenschaften">
    <ResponseField name="input_tokens" type="integer">
      Anzahl der verarbeiteten frischen Eingabe-Tokens. Schließt beide Cache-Buckets aus.
    </ResponseField>

    <ResponseField name="output_tokens" type="integer">
      Anzahl der generierten Ausgabe-Tokens.
    </ResponseField>

    <ResponseField name="total_tokens" type="integer">
      Alle Eingabe-Buckets plus `output_tokens`. Wird bei gestreamten Antworten weggelassen.
    </ResponseField>

    <ResponseField name="sunra_usage_semantics" type="string | null">
      Vorhanden als `anthropic.exclusive.v1`, wenn Sunra diese Antwort normalisiert hat. Prüfen Sie auf diesen Wert, anstatt die Konvention aus den Zahlen abzuleiten. Siehe [Token-Nutzung](/de/llm/token-usage).
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api-llm.sunra.ai/v1/messages \
    -H "Authorization: Bearer <SUNRA_KEY>" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "anthropic/claude-sonnet-4-20250514",
      "max_tokens": 1024,
      "messages": [
        {
          "role": "user",
          "content": "Hello, how are you?"
        }
      ]
    }'
  ```

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

  response = requests.post(
      "https://api-llm.sunra.ai/v1/messages",
      headers={
          "Authorization": "Bearer <SUNRA_KEY>",
          "Content-Type": "application/json"
      },
      json={
          "model": "anthropic/claude-sonnet-4-20250514",
          "max_tokens": 1024,
          "messages": [
              {"role": "user", "content": "Hello, how are you?"}
          ]
      }
  )
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api-llm.sunra.ai/v1/messages", {
    method: "POST",
    headers: {
      "Authorization": "Bearer <SUNRA_KEY>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "anthropic/claude-sonnet-4-20250514",
      max_tokens: 1024,
      messages: [
        { role: "user", content: "Hello, how are you?" }
      ]
    })
  });
  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "msg_abc123",
    "type": "message",
    "role": "assistant",
    "content": [
      {
        "type": "text",
        "text": "Hello! I'm doing well, thank you for asking."
      }
    ],
    "model": "anthropic/claude-sonnet-4-20250514",
    "stop_reason": "end_turn",
    "stop_sequence": null,
    "usage": {
      "input_tokens": 12,
      "output_tokens": 15,
      "total_tokens": 27,
      "sunra_usage_semantics": "anthropic.exclusive.v1"
    }
  }
  ```
</ResponseExample>
