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

# GLM Schnittstelle für alle Modelle - Chat Completions vollständige Parameter

> - GLM-Modelle über das OpenAI-Chat-Completions-Protokoll aufrufen, das konkrete Modell wird über den Parameter `model` gewählt
- Synchrone Verarbeitung, die den Gesprächsinhalt in Echtzeit zurückgibt
- **Textgespräch**: Kontextgespräche mit einer oder mehreren Runden; `glm-5.3-flash` unterstützt zusätzlich Bildeingabe
- **System-Prompt**: Rolle und Verhalten der KI über eine `role=system`-Nachricht anpassen
- **Tiefes Denken**: `thinking.type` steuert die Gedankenkette, `reasoning_effort` regelt die Denktiefe; der Denkprozess wird über `reasoning_content` zurückgegeben
- **Streaming**: SSE-Streaming-Antworten werden unterstützt (`stream=true`)
- **Werkzeugaufrufe**: Function Calling und Websuche werden unterstützt (`web_search`, bis zu 128 Werkzeuge)
- **Strukturierte Ausgabe**: JSON-Modus über `response_format` aktivieren

**Hinweis zu Streaming-Antworten**: Bei `stream=true` erfolgt die Rückgabe über Server-Sent Events; jede Nachricht hat das Format `data: {JSON}`, und am Ende wird `data: [DONE]` gesendet. Jeder Datenblock (`ChatCompletionChunk`) enthält `id`, `created`, `model`, `choices` sowie optional `usage` und `content_filter`; darin liefert `choices[].delta` inkrementell `role` / `content` / `reasoning_content` / `tool_calls`, und `choices[].finish_reason` gibt im letzten Block den Abbruchgrund an.

<Note>
  **BaseURL**: Die Standard-BaseURL ist `https://direct.evolink.ai`, die Textmodelle und langlebige Verbindungen besser unterstützt. `https://api.evolink.ai` ist der primäre Endpunkt für multimodale Dienste und dient als Ausweichadresse für Textmodelle.
</Note>

<Note>
  **Die Denksteuerung unterscheidet sich je Modell**: `glm-5.3` und `glm-5.3-flash` denken immer und sind nicht abschaltbar; bei `reasoning_effort` wirken die drei Stufen `low` / `high` / `max`, die übrigen werden automatisch auf die nächstgelegene verfügbare Stufe herabgestuft (`xhigh` → `max`, `medium` → `high`, `minimal` / `none` → `low` — es wird weiterhin gedacht und als Ausgabe abgerechnet). `glm-5.2` kann das Denken mit `thinking.type: "disabled"` abschalten und unterstützt mehr Reasoning-Stufen. Einzelheiten finden Sie in den Beschreibungen der Felder `thinking` und `reasoning_effort`.
</Note>

<Note>
  **Bildeingabe**: Nur von `glm-5.3-flash` unterstützt, über `image_url`-Inhaltsblöcke innerhalb von `messages[].content[]`. Werden Bildblöcke an ein anderes Modell gesendet, gibt es einen Fehler.
</Note>


## OpenAPI

````yaml de/api-manual/language-series/glm/chat-completions/chat-completions-reference.json POST /v1/chat/completions
openapi: 3.1.0
info:
  title: GLM Schnittstelle für alle Modelle - Chat Completions vollständige Parameter
  description: >-
    Vollständige API-Referenz für den Aufruf von Zhipu-GLM-Textmodellen über die
    OpenAI-kompatible Chat-Completions-API.


    **Enthaltene Modelle**: `glm-5.3`, `glm-5.3-flash`, `glm-5.2` (Auswahl über
    den Parameter `model`)


    **Gemeinsame Fähigkeiten**:

    - Kontextfenster von 1M Token, bis zu **131.072 Tokens** (128K) Ausgabe,
    empfohlen werden mindestens **1.024 Tokens**

    - Tiefes Denken: `thinking` steuert die Gedankenkette, `reasoning_effort`
    regelt die Denktiefe; der Denkprozess wird über `reasoning_content`
    zurückgegeben

    - Werkzeugaufrufe: Function Calling und Websuche (bis zu 128 Werkzeuge)

    - Streaming: SSE-Streaming-Antworten

    - Strukturierte Ausgabe: die Antwortformate `text` und `json_object`

    - Kontext-Cache: impliziter Präfix-Cache, den wiederholte Anfragen mit
    demselben Präfix automatisch treffen; der Treffer erscheint in
    `usage.prompt_tokens_details.cached_tokens`


    **Unterschiede zwischen den Modellen** (Denksteuerung, Bildeingabe) sind
    unten bei den Feldern `model` sowie `thinking` / `reasoning_effort`
    beschrieben.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://direct.evolink.ai
    description: Produktion (empfohlen)
  - url: https://api.evolink.ai
    description: Alternative URL
security:
  - bearerAuth: []
tags:
  - name: Chat-Vervollständigung
    description: Endpunkte für KI-Chat-Vervollständigung
paths:
  /v1/chat/completions:
    post:
      tags:
        - Chat-Vervollständigung
      summary: GLM Chat-Vervollständigung (alle Modelle, OpenAI-kompatibel)
      description: >-
        - GLM-Modelle über das OpenAI-Chat-Completions-Protokoll aufrufen, das
        konkrete Modell wird über den Parameter `model` gewählt

        - Synchrone Verarbeitung, die den Gesprächsinhalt in Echtzeit zurückgibt

        - **Textgespräch**: Kontextgespräche mit einer oder mehreren Runden;
        `glm-5.3-flash` unterstützt zusätzlich Bildeingabe

        - **System-Prompt**: Rolle und Verhalten der KI über eine
        `role=system`-Nachricht anpassen

        - **Tiefes Denken**: `thinking.type` steuert die Gedankenkette,
        `reasoning_effort` regelt die Denktiefe; der Denkprozess wird über
        `reasoning_content` zurückgegeben

        - **Streaming**: SSE-Streaming-Antworten werden unterstützt
        (`stream=true`)

        - **Werkzeugaufrufe**: Function Calling und Websuche werden unterstützt
        (`web_search`, bis zu 128 Werkzeuge)

        - **Strukturierte Ausgabe**: JSON-Modus über `response_format`
        aktivieren


        **Hinweis zu Streaming-Antworten**: Bei `stream=true` erfolgt die
        Rückgabe über Server-Sent Events; jede Nachricht hat das Format `data:
        {JSON}`, und am Ende wird `data: [DONE]` gesendet. Jeder Datenblock
        (`ChatCompletionChunk`) enthält `id`, `created`, `model`, `choices`
        sowie optional `usage` und `content_filter`; darin liefert
        `choices[].delta` inkrementell `role` / `content` / `reasoning_content`
        / `tool_calls`, und `choices[].finish_reason` gibt im letzten Block den
        Abbruchgrund an.
      operationId: createChatCompletionGLM
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChatCompletionRequest'
            examples:
              simple_text:
                summary: Einzelrunden-Textkonversation
                value:
                  model: glm-5.3
                  messages:
                    - role: user
                      content: Bitte stelle dich vor
              multi_turn:
                summary: Mehrrundengespräch (Kontextverständnis)
                value:
                  model: glm-5.3
                  messages:
                    - role: user
                      content: Was ist Python?
                    - role: assistant
                      content: Python ist eine höhere Programmiersprache...
                    - role: user
                      content: Welche Vorteile hat es?
              system_prompt:
                summary: System-Prompts verwenden
                value:
                  model: glm-5.3
                  messages:
                    - role: system
                      content: >-
                        Du bist ein professioneller Python-Programmierassistent
                        und beantwortest Fragen in knapper Sprache.
                    - role: user
                      content: Wie liest man eine Datei ein?
              deep_thinking:
                summary: >-
                  Tiefes Nachdenken aktivieren und Intensität des
                  Schlussfolgerns regulieren
                value:
                  model: glm-5.3
                  messages:
                    - role: user
                      content: >-
                        Ein Bauer muss einen Wolf, eine Ziege und einen Kohlkopf
                        über einen Fluss bringen und kann jeweils nur eines
                        mitnehmen. Wie kommt er sicher hinüber?
                  thinking:
                    type: enabled
                  reasoning_effort: max
              function_calling:
                summary: Werkzeugaufruf (Function Calling)
                value:
                  model: glm-5.3
                  messages:
                    - role: user
                      content: Wie ist das Wetter heute in Peking?
                  tools:
                    - type: function
                      function:
                        name: get_weather
                        description: Das aktuelle Wetter einer angegebenen Stadt abfragen
                        parameters:
                          type: object
                          properties:
                            city:
                              type: string
                              description: 'Stadtname, z. B.: Peking'
                          required:
                            - city
                  tool_choice: auto
              web_search:
                summary: Websuche-Werkzeug aktivieren
                value:
                  model: glm-5.3
                  messages:
                    - role: user
                      content: >-
                        Suche mir die Nachrichten zur künstlichen Intelligenz
                        der letzten Woche heraus
                  tools:
                    - type: web_search
                      web_search:
                        enable: true
                        count: 10
                        search_recency_filter: oneWeek
                description: >-
                  Wenn das Modell entscheidet, dass es das Internet benötigt,
                  sucht es automatisch, und die Ergebnisse werden in den Kontext
                  übernommen. Die Suchergebnisse werden als Eingabe-Token
                  abgerechnet, der Suchdienst selbst zusätzlich pro Aufruf
                  (siehe Preisseite); löst das Modell keine Suche aus, fallen
                  keine Suchkosten an.
              json_mode:
                summary: Strukturierte JSON-Ausgabe
                value:
                  model: glm-5.3
                  messages:
                    - role: system
                      content: >-
                        Bitte gib die Ausgabe im JSON-Format aus und enthalte
                        die beiden Felder name und age.
                    - role: user
                      content: Max Mustermann, 28 Jahre alt
                  response_format:
                    type: json_object
              streaming:
                summary: Streaming-Ausgabe (SSE)
                value:
                  model: glm-5.3
                  messages:
                    - role: user
                      content: Schreibe ein kurzes Gedicht über den Frühling
                  stream: true
              disable_thinking_glm52_only:
                summary: Tiefes Denken deaktivieren (nur glm-5.2)
                value:
                  model: glm-5.2
                  messages:
                    - role: user
                      content: Fasse die Relativitätstheorie in einem Satz zusammen.
                  thinking:
                    type: disabled
                description: >-
                  Nur `glm-5.2` kann das Denken abschalten. Wird `thinking.type:
                  "disabled"` an `glm-5.3` oder `glm-5.3-flash` gesendet, gibt
                  es einen Fehler — verwenden Sie stattdessen `reasoning_effort:
                  "low"`.
              low_effort:
                summary: >-
                  Denkaufwand senken (Alternative zum Deaktivieren des Denkens
                  bei der glm-5.3-Serie)
                description: >-
                  Die `glm-5.3`-Serie kann das Denken nicht abschalten; senken
                  Sie die Denktiefe mit `reasoning_effort: "low"` auf das
                  Minimum.
                value:
                  model: glm-5.3
                  messages:
                    - role: user
                      content: Erkläre HTTP in einem Satz
                  thinking:
                    type: enabled
                  reasoning_effort: low
                  max_tokens: 1024
              vision_flash:
                summary: Bildeingabe (nur glm-5.3-flash)
                description: >-
                  `glm-5.3-flash` unterstützt Vision nativ; Bilder werden über
                  `image_url`-Inhaltsblöcke übergeben, entweder als öffentliche
                  URL oder als Base64-Data-URL.
                value:
                  model: glm-5.3-flash
                  messages:
                    - role: user
                      content:
                        - type: text
                          text: Was ist auf diesem Bild zu sehen?
                        - type: image_url
                          image_url:
                            url: https://example.com/photo.jpg
                  max_tokens: 1024
      responses:
        '200':
          description: Chat-Vervollständigung erfolgreich generiert
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatCompletionResponse'
        '400':
          description: Ungültige Anfrageparameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 400
                  message: Invalid request parameters
                  type: invalid_request_error
        '401':
          description: Nicht autorisiert, ungültiges oder abgelaufenes Token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 401
                  message: Invalid or expired token
                  type: authentication_error
        '402':
          description: Unzureichendes Kontingent, Aufladung erforderlich
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 402
                  message: Insufficient quota
                  type: insufficient_quota_error
                  fallback_suggestion: https://evolink.ai/dashboard/billing
        '403':
          description: Zugriff verweigert
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 403
                  message: Access denied for this model
                  type: permission_error
                  param: model
        '404':
          description: Ressource nicht gefunden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 404
                  message: Specified model not found
                  type: not_found_error
                  param: model
                  fallback_suggestion: glm-5.3
        '429':
          description: Ratenlimit überschritten
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 429
                  message: Rate limit exceeded
                  type: rate_limit_error
                  fallback_suggestion: retry after 60 seconds
        '500':
          description: Interner Serverfehler
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 500
                  message: Internal server error
                  type: internal_server_error
                  fallback_suggestion: try again later
        '502':
          description: Upstream-Dienstfehler
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 502
                  message: Upstream AI service unavailable
                  type: upstream_error
                  fallback_suggestion: try different model
        '503':
          description: Dienst vorübergehend nicht verfügbar
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 503
                  message: Service temporarily unavailable
                  type: service_unavailable_error
                  fallback_suggestion: retry after 30 seconds
components:
  schemas:
    ChatCompletionRequest:
      type: object
      required:
        - model
        - messages
      properties:
        model:
          type: string
          description: >
            Aufzurufendes Modell:


            | Modell-ID | Positionierung | Denksteuerung | Bildeingabe |

            |---|---|---|---|

            | `glm-5.3` | Flaggschiffmodell mit durchgängigen Fortschritten bei
            komplexer Softwareentwicklung und Agentenaufgaben sowie deutlich
            stärkerer Programmierleistung als in der Vorgängergeneration; 1M
            Kontext | Denkt immer und ist nicht abschaltbar; bei
            `reasoning_effort` wirken nur `low` / `high` / `max`, andere Stufen
            werden automatisch herabgestuft | Nicht unterstützt |

            | `glm-5.3-flash` | Leichtgewichtiges multimodales Modell mit
            hybrider Architektur aus Sparse- und Linear-Attention, äußerst
            günstig und mit nativer Vision; 1M Kontext | Wie `glm-5.3` |
            **Unterstützt**, siehe Feld `messages` |

            | `glm-5.2` | Flaggschiff der vorigen Generation, komplexes
            Reasoning und sehr langer Kontext; 1M Kontext | Mit `thinking.type:
            "disabled"` abschaltbar; `reasoning_effort` unterstützt alle 7
            Stufen | Nicht unterstützt |
          enum:
            - glm-5.3
            - glm-5.3-flash
            - glm-5.2
          default: glm-5.3
          example: glm-5.3
        messages:
          type: array
          description: >-
            Liste der Konversationsnachrichten, enthält die vollständigen
            Kontextinformationen des aktuellen Gesprächs


            Unterstützt vier Rollen: `system`, `user`, `assistant`, `tool`.
            Nachrichten mit unterschiedlichen Rollen haben unterschiedliche
            Feldstrukturen; wählen Sie die entsprechende Rolle zur Ansicht aus.
            Mindestens 1 Nachricht erforderlich, und es dürfen nicht
            ausschließlich System- oder Assistentennachrichten enthalten sein.
          items:
            oneOf:
              - $ref: '#/components/schemas/SystemMessage'
              - $ref: '#/components/schemas/UserMessage'
              - $ref: '#/components/schemas/AssistantRequestMessage'
              - $ref: '#/components/schemas/ToolMessage'
            discriminator:
              propertyName: role
              mapping:
                system:
                  $ref: '#/components/schemas/SystemMessage'
                user:
                  $ref: '#/components/schemas/UserMessage'
                assistant:
                  $ref: '#/components/schemas/AssistantRequestMessage'
                tool:
                  $ref: '#/components/schemas/ToolMessage'
          minItems: 1
        stream:
          type: boolean
          description: >-
            Ob der Streaming-Ausgabemodus aktiviert wird


            - `false`: Das Modell gibt die vollständige Antwort nach der
            Generierung auf einmal zurück (Standard), geeignet für kurze Texte
            und Stapelverarbeitung

            - `true`: Gibt über Server-Sent Events (SSE) in Echtzeit blockweise
            zurück, geeignet für Chat und lange Texte; am Ende des Streams wird
            `data: [DONE]` zurückgegeben
          default: false
          example: false
        thinking:
          type: object
          description: Steuert, ob die Gedankenkette (Chain of Thought) aktiviert wird
          properties:
            type:
              type: string
              description: >-
                Schalter für die Gedankenkette


                - `enabled`: tiefes Denken aktivieren (Standardverhalten aller
                Modelle)

                - `disabled`: tiefes Denken deaktivieren, das Modell antwortet
                direkt


                **Nur `glm-5.2` unterstützt `disabled`.** `glm-5.3` und
                `glm-5.3-flash` denken immer; wird `disabled` gesendet, gibt es
                einen Fehler.


                Um den Denkaufwand bei der `glm-5.3`-Serie zu senken, verwenden
                Sie stattdessen `reasoning_effort: "low"`.


                **Migration von `glm-5.2`**: Ist `thinking.type: "disabled"` im
                Code fest verdrahtet, muss es vor dem Wechsel zu `glm-5.3` auf
                `"enabled"` geändert werden (bei Bedarf zusätzlich
                `reasoning_effort: "low"` für weniger Denkaufwand), sonst
                schlägt die Anfrage unmittelbar fehl.


                Beachten Sie, dass die beiden Felder **unterschiedlich**
                behandelt werden: Eine von der Serie nicht unterstützte
                `reasoning_effort`-Stufe wird automatisch herabgestuft, ohne
                Fehler; `thinking.type` ist dagegen ein expliziter Schalter —
                `disabled` führt immer zu einem Fehler und wird nie
                stillschweigend umgeschrieben. `reasoning_effort` von `none` auf
                `low` zu ändern genügt daher nicht, `thinking.type` muss
                ebenfalls angepasst werden.
              enum:
                - enabled
                - disabled
              default: enabled
            clear_thinking:
              type: boolean
              description: >-
                Ob das `reasoning_content` aus historischen Gesprächsrunden
                entfernt wird


                - `true` (Standard): Ignoriert/entfernt das `reasoning_content`
                historischer Runden und verwendet nur nicht-schlussfolgernde
                Inhalte (für Benutzer/Assistent sichtbarer Text, Werkzeugaufrufe
                und Ergebnisse usw.) als Kontext, was Kontextlänge und Kosten
                senken kann

                - `false`: Behält das `reasoning_content` historischer Runden
                bei und stellt es zusammen mit dem Kontext dem Modell bereit
                (Preserved Thinking); in diesem Fall muss das historische
                `reasoning_content` in `messages` **vollständig, unverändert und
                in ursprünglicher Reihenfolge** durchgereicht werden, da Fehlen,
                Kürzen, Umschreiben oder Umordnen zu Wirkungsverlust führt oder
                die Funktion außer Kraft setzt

                - Hinweis: Dieser Parameter beeinflusst nur das
                rundenübergreifende historische Nachdenken und ändert nicht, ob
                in der aktuellen Runde Nachdenken erzeugt wird
              default: true
              example: true
        reasoning_effort:
          type: string
          description: >-
            Steuert, wie stark das Modell schlussfolgert; wirkt nur bei aktivem
            `thinking`, Standard `max`


            **Die unterstützten Werte unterscheiden sich je Modell**:


            | Wert | `glm-5.3` / `glm-5.3-flash` | `glm-5.2` |

            |---|---|---|

            | `max` | Tiefes Reasoning (Standard) | Tiefes Reasoning |

            | `high` | Verstärktes Reasoning | Verstärktes Reasoning |

            | `low` | Leichtes Reasoning | Wie `high` |

            | `xhigh` | Herabgestuft auf `max` | Wie `max` |

            | `medium` | Herabgestuft auf `high` | Wie `high` |

            | `minimal` | Herabgestuft auf `low` (denkt weiterhin) | Verzichtet
            auf das Denken |

            | `none` | Herabgestuft auf `low` (denkt weiterhin) | Verzichtet auf
            das Denken |


            Die `glm-5.3`-Serie denkt immer, und wirklich wirksam sind nur die
            drei Stufen `low` / `high` / `max`; die übrigen vier führen nicht zu
            einem Fehler, sondern werden automatisch auf die nächstgelegene
            verfügbare Stufe herabgestuft (`xhigh` → `max`, `medium` → `high`,
            `minimal` / `none` → `low`).


            **Die `glm-5.3`-Serie kann das Denken nicht abschalten.** `minimal`
            oder `none` senken es lediglich auf die unterste Stufe `low`; das
            Modell erzeugt weiterhin Denk-Token, die **zum Ausgabetarif
            abgerechnet** werden. Wenn Sie diese beiden Stufen zum Sparen
            verwenden, beachten Sie den Unterschied zu `glm-5.2` — bei `glm-5.2`
            wird tatsächlich auf das Denken verzichtet.


            Für komplexe Aufgaben wie das Programmieren wird `max` empfohlen.
          enum:
            - max
            - xhigh
            - high
            - medium
            - low
            - minimal
            - none
          default: max
          example: max
        do_sample:
          type: boolean
          description: >-
            Ob eine Sampling-Strategie aktiviert wird


            - `true` (Standard): Verwendet `temperature` / `top_p` für
            zufälliges Sampling, vielfältigere Ausgabe

            - `false`: Wählt stets das Wort mit der höchsten Wahrscheinlichkeit
            (Greedy Decoding), deterministischere Ausgabe; in diesem Fall werden
            `temperature` und `top_p` ignoriert


            Für Aufgaben, die Konsistenz und Reproduzierbarkeit erfordern (z. B.
            Codegenerierung, Übersetzung), wird `false` empfohlen
          default: true
          example: true
        temperature:
          type: number
          format: float
          description: >-
            Sampling-Temperatur, steuert Zufälligkeit und Kreativität der
            Ausgabe


            **Hinweise**:

            - Wertebereich: `[0.0, 1.0]`, auf zwei Dezimalstellen begrenzt

            - Höhere Werte (z. B. 0,8): Zufälliger und kreativer, geeignet für
            kreatives Schreiben

            - Niedrigere Werte (z. B. 0,2): Stabiler und deterministischer,
            geeignet für faktenbasierte Fragen und Codegenerierung

            - Standardwert: `1.0`


            **Empfehlung**: Passen Sie `temperature` und `top_p` nicht
            gleichzeitig an
          minimum: 0
          maximum: 1
          default: 1
          example: 1
        top_p:
          type: number
          format: float
          description: >-
            Nucleus-Sampling-Parameter, eine Alternative zum
            `temperature`-Sampling


            **Hinweise**:

            - Wertebereich: `[0.01, 1.0]`, auf zwei Dezimalstellen begrenzt

            - Das Modell berücksichtigt nur Kandidatenwörter, deren kumulative
            Wahrscheinlichkeit `top_p` erreicht; z. B. bedeutet 0,1, dass nur
            die wahrscheinlichsten 10 % der Wörter berücksichtigt werden

            - Kleinere Werte erzeugen fokussiertere, konsistentere Ausgabe;
            größere Werte erhöhen die Vielfalt

            - Standardwert: `0.95`


            **Empfehlung**: Passen Sie `temperature` und `top_p` nicht
            gleichzeitig an
          minimum: 0.01
          maximum: 1
          default: 0.95
          example: 0.95
        max_tokens:
          type: integer
          description: >-
            Obergrenze für die Anzahl der Ausgabe-Token des Modells


            **Hinweis**:

            - Die GLM-Serie unterstützt bis zu **131.072 Tokens** (128K)
            Ausgabelänge; empfohlen wird ein Wert von mindestens `1024`

            - Ist `thinking` aktiv, zählen auch die Token der Gedankenkette zu
            dieser Grenze

            - Wird die Generierung mit `length` abgeschnitten, erhöhen Sie
            diesen Wert
          minimum: 1
          maximum: 131072
          example: 1024
        tools:
          type: array
          description: >-
            Liste der Werkzeuge, die das Modell aufrufen kann


            **Hinweis**:

            - Unterstützt werden Funktionsaufrufe (`function`) und Websuche
            (`web_search`)

            - Maximal 128 Funktionen

            - Davon wird `web_search` **pro Aufruf separat abgerechnet**, wenn
            tatsächlich gesucht wird; für die übrigen Werkzeuge fallen keine
            zusätzlichen Kosten an
          items:
            oneOf:
              - $ref: '#/components/schemas/FunctionTool'
              - $ref: '#/components/schemas/WebSearchTool'
            discriminator:
              propertyName: type
              mapping:
                function:
                  $ref: '#/components/schemas/FunctionTool'
                web_search:
                  $ref: '#/components/schemas/WebSearchTool'
          maxItems: 128
        tool_choice:
          type: string
          description: >-
            Steuert, wie das Modell auswählt, welche Funktion aufgerufen wird


            **Hinweise**: Nur wirksam, wenn der Werkzeugtyp `function` ist;
            standardmäßig und ausschließlich wird `auto` unterstützt (das Modell
            entscheidet automatisch, ob ein Werkzeug aufgerufen wird)
          enum:
            - auto
          default: auto
          example: auto
        stop:
          type: array
          description: >-
            Liste der Stoppwörter


            **Hinweise**:

            - Wenn der generierte Text auf eine angegebene Zeichenkette trifft,
            wird die Generierung sofort gestoppt (das Stoppwort selbst ist im
            zurückgegebenen Text nicht enthalten)

            - Derzeit wird nur ein einzelnes Stoppwort unterstützt, im Format
            `["stop_word1"]`, z. B. `["Human:"]`
          items:
            type: string
          maxItems: 4
          example:
            - 'Human:'
        response_format:
          type: object
          description: >-
            Gibt das Ausgabeformat der Modellantwort an, Standard ist `text`


            **Hinweise**:

            - `{ "type": "json_object" }` aktiviert den JSON-Modus, das Modell
            gibt gültige Daten im JSON-Format zurück, geeignet für Szenarien wie
            strukturierte Datenextraktion

            - Bei Verwendung des JSON-Modus wird empfohlen, in der `system`-
            oder `user`-Nachricht ausdrücklich JSON-Ausgabe zu verlangen
          required:
            - type
          properties:
            type:
              type: string
              description: |-
                Typ des Ausgabeformats

                - `text`: Normale Textausgabe (Standard)
                - `json_object`: Ausgabe im JSON-Format
              enum:
                - text
                - json_object
              default: text
        request_id:
          type: string
          description: >-
            Eindeutige Kennung der Anfrage


            **Hinweise**:

            - Wird von der Clientseite übergeben, Länge 6-64 Zeichen, zur
            Sicherstellung der Eindeutigkeit wird das UUID-Format empfohlen

            - Wird sie nicht angegeben, generiert die Plattform sie automatisch
          minLength: 6
          maxLength: 64
          example: req-7f3a2c1e8b9d4f0a
        user_id:
          type: string
          description: >-
            Eindeutige Kennung des Endbenutzers


            **Hinweise**: Länge 6-128 Zeichen, empfohlen wird eine eindeutige
            Kennung ohne sensible Informationen; sie hilft der Plattform,
            Missbrauch zu überwachen und zu erkennen
          minLength: 6
          maxLength: 128
          example: user-abc123456
    ChatCompletionResponse:
      type: object
      properties:
        id:
          type: string
          description: Aufgaben-`ID`
          example: chatcmpl-a6613b56-c61c-94ba-9a9f-43d4cdc7d77a
        object:
          type: string
          description: Antworttyp
          enum:
            - chat.completion
          example: chat.completion
        request_id:
          type: string
          description: >-
            Anfrage-`ID` (wird zurückgegeben, wenn in der Anfrage `request_id`
            angegeben wurde)
          example: req-7f3a2c1e8b9d4f0a
        created:
          type: integer
          description: Erstellungszeit der Anfrage, `Unix`-Zeitstempel (Sekunden)
          example: 1777021417
        model:
          type: string
          description: Modellname
          example: glm-5.3
        choices:
          type: array
          description: Liste der Modellantworten
          items:
            $ref: '#/components/schemas/Choice'
        usage:
          $ref: '#/components/schemas/Usage'
        web_search:
          type: array
          description: >-
            Informationen zur Websuche, werden zurückgegeben, wenn das
            `web_search`-Werkzeug verwendet wird und eine Suche getroffen wird
          items:
            $ref: '#/components/schemas/WebSearchResult'
        content_filter:
          type: array
          description: Informationen zur Inhaltssicherheit
          items:
            $ref: '#/components/schemas/ContentFilter'
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: integer
              description: HTTP-Statusfehlercode
            message:
              type: string
              description: Fehlerbeschreibung
            type:
              type: string
              description: Fehlertyp
            param:
              type: string
              description: Zugehöriger Parametername
            fallback_suggestion:
              type: string
              description: Vorschlag bei Fehlerauftreten
    SystemMessage:
      title: System Message
      type: object
      required:
        - role
        - content
      properties:
        role:
          type: string
          enum:
            - system
          description: Rollenkennung, fest auf `system` gesetzt
        content:
          type: string
          description: >-
            Inhalt des System-Prompts, dient zum Festlegen der Rolle und des
            Verhaltens der KI
    UserMessage:
      title: User Message
      type: object
      required:
        - role
        - content
      properties:
        role:
          type: string
          enum:
            - user
          description: Rollenkennung, fest auf `user` gesetzt
        content:
          description: >-
            Inhalt der Benutzernachricht.


            - **Zeichenkette**: reiner Text, von allen Modellen unterstützt

            - **Array von Inhaltsblöcken**: Text und Bilder gemischt, **nur von
            `glm-5.3-flash` unterstützt**


            Werden Bildinhaltsblöcke an `glm-5.3` oder `glm-5.2` gesendet, gibt
            es einen Fehler.
          oneOf:
            - type: string
              title: Reiner Text
              description: Nachrichteninhalt als reiner Text
              example: Hallo, bitte stelle dich vor
            - type: array
              title: Array von Inhaltsblöcken (nur glm-5.3-flash)
              description: >-
                Text und Bilder gemischt. Bilder werden über `image_url`-Blöcke
                übergeben, entweder als öffentliche URL (empfohlen) oder als
                Base64-Data-URL; für mehrere Bilder mehrere `image_url`-Blöcke
                verwenden.
              items:
                $ref: '#/components/schemas/ContentPart'
    AssistantRequestMessage:
      title: Assistant Message
      type: object
      description: Assistentennachricht, kann Werkzeugaufrufe enthalten
      required:
        - role
      properties:
        role:
          type: string
          enum:
            - assistant
          description: Rollenkennung, fest auf `assistant` gesetzt
        content:
          type:
            - string
            - 'null'
          description: >-
            Inhalt der Assistentennachricht


            **Hinweise**: Dient zum Übergeben historischer Assistentenantworten
            in Mehrrundengesprächen; bei Vorhandensein von `tool_calls`
            üblicherweise `null`
        reasoning_content:
          type:
            - string
            - 'null'
          description: >-
            Inhalt der historischen Gedankenkette


            **Hinweise**: Nur erforderlich, wenn `thinking.clear_thinking=false`
            (Preserved Thinking); dabei wird das `reasoning_content` der
            vorherigen Antwort unverändert zurückgereicht; standardmäßig
            (`clear_thinking=true`) ist keine Rückgabe nötig
        tool_calls:
          type: array
          description: >-
            Liste der Werkzeugaufrufe


            Dient zum Übergeben historischer Werkzeugaufruf-Informationen in
            Mehrrundengesprächen; wird dieses Feld angegeben, ist `content`
            üblicherweise leer
          items:
            type: object
            required:
              - id
              - type
            properties:
              id:
                type: string
                description: Werkzeugaufruf-ID
              type:
                type: string
                enum:
                  - function
                  - web_search
                description: Werkzeugtyp
              function:
                type: object
                description: >-
                  Informationen zum Funktionsaufruf, nicht leer, wenn `type`
                  `function` ist
                required:
                  - name
                  - arguments
                properties:
                  name:
                    type: string
                    description: Funktionsname
                  arguments:
                    type: string
                    description: Funktionsargumente (Zeichenkette im JSON-Format)
    ToolMessage:
      title: Tool Message
      type: object
      required:
        - role
        - content
      properties:
        role:
          type: string
          enum:
            - tool
          description: Rollenkennung, fest auf `tool` gesetzt
        content:
          type: string
          description: Inhalt des Rückgabeergebnisses des Werkzeugaufrufs
        tool_call_id:
          type: string
          description: >-
            Gibt die `ID` des Werkzeugaufrufs an, dem diese Nachricht entspricht
            (entspricht dem in `tool_calls` der Assistentennachricht
            zurückgegebenen `id`)
    FunctionTool:
      title: Function-Werkzeug
      type: object
      required:
        - type
        - function
      additionalProperties: false
      properties:
        type:
          type: string
          enum:
            - function
          default: function
          description: Werkzeugtyp, fest auf `function` gesetzt
        function:
          type: object
          required:
            - name
            - description
            - parameters
          properties:
            name:
              type: string
              description: >-
                Name der aufzurufenden Funktion


                **Hinweise**: Muss aus den Zeichen `a-z`, `A-Z`, `0-9` bestehen
                oder Unterstriche und Bindestriche enthalten; maximale Länge 64
                Zeichen
              minLength: 1
              maxLength: 64
              pattern: ^[a-zA-Z0-9_-]+$
            description:
              type: string
              description: >-
                Beschreibung der Funktionalität der Funktion, damit das Modell
                auswählen kann, wann und wie die Funktion aufgerufen wird
            parameters:
              type: object
              description: >-
                Eingabeparameter der Funktion, beschrieben als
                JSON-Schema-Objekt
    WebSearchTool:
      title: Web-Search-Werkzeug (Websuche)
      type: object
      required:
        - type
        - web_search
      additionalProperties: false
      properties:
        type:
          type: string
          enum:
            - web_search
          default: web_search
          description: Werkzeugtyp, fest auf `web_search` gesetzt
        web_search:
          type: object
          required:
            - enable
          properties:
            enable:
              type: boolean
              description: >-
                Ob die Suchfunktion aktiviert wird; zum Aktivieren auf `true`
                setzen
              default: false
            search_query:
              type: string
              description: >-
                Benutzerdefiniertes Schlüsselwort, das die Suche zwingend
                auslöst
            search_intent:
              type: boolean
              description: >-
                Ob eine Erkennung der Suchabsicht durchgeführt wird,
                standardmäßig aktiv


                - `true`: Führt die Erkennung der Suchabsicht durch und sucht
                erst, wenn eine Suchabsicht vorliegt

                - `false`: Überspringt die Absichtserkennung und sucht direkt
            count:
              type: integer
              description: >-
                Anzahl der zurückgegebenen Ergebnisse, Bereich `1-50`, Standard
                `10`.


                Die Anzahl wirkt sich unmittelbar auf die Kosten aus: Die
                Suchergebnisse fließen in `prompt_tokens` ein und werden zum
                Eingabetarif abgerechnet; bei `50` kann eine einzelne Anfrage in
                den Bereich von zwanzigtausend Eingabe-Token gelangen. Behalten
                Sie den Standard bei, sofern Sie nicht wirklich eine breitere
                Abdeckung benötigen.
              minimum: 1
              maximum: 50
              default: 10
            search_domain_filter:
              type: string
              description: >-
                Beschränkt die Suchergebnisse auf eine Domain-Whitelist (z. B.
                `www.example.com`)
            search_recency_filter:
              type: string
              description: Beschränkt den Zeitraum der Suchergebnisse, Standard `noLimit`
              enum:
                - oneDay
                - oneWeek
                - oneMonth
                - oneYear
                - noLimit
              default: noLimit
            content_size:
              type: string
              description: >-
                Steuert die Wortanzahl der Webseiten-Zusammenfassung, Standard
                `medium`


                - `medium`: Gibt zusammenfassende Informationen zurück, deckt
                grundlegenden Schlussfolgerungsbedarf ab

                - `high`: Maximiert den Kontext, detailliertere Informationen
              enum:
                - medium
                - high
              default: medium
            result_sequence:
              type: string
              description: >-
                Position, an der die Suchergebnisse zurückgegeben werden (vor
                oder nach der Modellantwort), Standard `after`
              enum:
                - before
                - after
              default: after
            search_result:
              type: boolean
              description: >-
                Ob Details zu den Suchquellen in der Antwort zurückgegeben
                werden, Standard `false`.


                Bei `true` enthält die Antwort auf oberster Ebene ein
                `web_search`-Array mit den für diese Anfrage gefundenen Quellen
                (Titel, Link, Medienquelle, Veröffentlichungszeitpunkt,
                Zusammenfassung usw.); beim Standardwert fehlt das Feld in der
                Antwort.


                Dieser Parameter wirkt sich nur auf den Inhalt der Antwort aus —
                weder darauf, ob gesucht wird, noch auf die Abrechnung.
              default: false
              example: true
            require_search:
              type: boolean
              description: >-
                Ob eine Antwort nur auf Basis der Suchergebnisse zurückgegeben
                werden muss, Standard `false`
              default: false
            search_prompt:
              type: string
              description: >-
                `Prompt` zur Anpassung der Verarbeitung der Suchergebnisse; ohne
                Angabe wird die Standardvorlage verwendet
      description: >-
        Websuche-Werkzeug. Ist es aktiviert, kann das Modell bei Bedarf im Web
        suchen und die Ergebnisse in den Kontext übernehmen.


        **Abrechnung**: Der in den Kontext übernommene Teil der Suchergebnisse
        zählt als `prompt_tokens` zum Eingabetarif; der Suchdienst selbst wird
        **pro Aufruf separat abgerechnet** und getrennt von der Token-Nutzung
        verrechnet — siehe Preisseite. Ob gesucht wird, entscheidet das Modell
        anhand der Suchabsicht; wird keine Suche ausgelöst, fallen diese Kosten
        nicht an.
    Choice:
      type: object
      properties:
        index:
          type: integer
          description: Ergebnisindex
          example: 0
        message:
          $ref: '#/components/schemas/AssistantMessage'
        finish_reason:
          type: string
          description: >-
            Grund für den Abschluss des Schlussfolgerns


            - `stop`: Natürlicher Abschluss oder Stoppwort ausgelöst

            - `tool_calls`: Das Modell hat eine Funktion getroffen
            (Werkzeugaufruf)

            - `length`: Token-Längengrenze erreicht

            - `sensitive`: Inhalt durch die Sicherheitsprüfung blockiert (bitte
            prüfen und entscheiden, ob öffentlicher Inhalt zurückgezogen werden
            soll)

            - `network_error`: Anomalie bei der Modellinferenz

            - `model_context_window_exceeded`: Kontextfenster des Modells
            überschritten
          enum:
            - stop
            - tool_calls
            - length
            - sensitive
            - network_error
            - model_context_window_exceeded
          example: stop
    Usage:
      type: object
      description: >-
        Token-Nutzungsstatistik, die bei Abschluss des Aufrufs zurückgegeben
        wird
      properties:
        prompt_tokens:
          type: integer
          description: Anzahl der vom Benutzer eingegebenen Tokens
          example: 24
        completion_tokens:
          type: integer
          description: >-
            Anzahl der ausgegebenen Tokens (einschließlich des Anteils der
            Gedankenkette `reasoning_tokens`)
          example: 346
        total_tokens:
          type: integer
          description: Gesamtanzahl der Tokens = prompt_tokens + completion_tokens
          example: 370
        prompt_tokens_details:
          type: object
          description: Detaillierte Aufschlüsselung der Eingabe-Tokens
          properties:
            cached_tokens:
              type: integer
              description: >-
                Anzahl der Eingabe-Token, die aus dem Kontext-Cache bedient
                wurden.


                Die GLM-Serie verwendet einen **impliziten Präfix-Cache**:
                Wiederholte Anfragen mit demselben Präfix treffen ihn
                automatisch, ohne zusätzliche Parameter; der getroffene Anteil
                wird zum Cache-Tarif abgerechnet, der deutlich unter dem
                Eingabetarif ohne Treffer liegt. Die erste Anfrage liefert 0,
                danach treffen Anfragen mit demselben Präfix.
              example: 0
        completion_tokens_details:
          type: object
          description: Detaillierte Aufschlüsselung der Ausgabe-Tokens
          properties:
            reasoning_tokens:
              type: integer
              description: >-
                Anzahl der von der Gedankenkette (tiefes Nachdenken) erzeugten
                Tokens, zählt zu `completion_tokens`
              example: 321
    WebSearchResult:
      type: object
      description: Einzelnes Websuche-Ergebnis
      properties:
        icon:
          type: string
          description: Symbol der Quellwebsite
        title:
          type: string
          description: Titel des Suchergebnisses
        link:
          type: string
          description: Webseiten-Link des Suchergebnisses
        media:
          type: string
          description: Name der Medienquelle der Suchergebnis-Webseite
        publish_date:
          type: string
          description: Veröffentlichungszeit der Website
        content:
          type: string
          description: Vom Suchergebnis zitierter Textinhalt der Webseite
        refer:
          type: string
          description: Fußnotennummer
    ContentFilter:
      type: object
      description: Informationen zur Inhaltssicherheit
      properties:
        role:
          type: string
          description: |-
            Phase, in der die Sicherheit wirksam wird

            - `assistant`: Modellinferenz
            - `user`: Benutzereingabe
            - `history`: Historischer Kontext
          enum:
            - assistant
            - user
            - history
        level:
          type: integer
          description: >-
            Schweregrad `0-3`, `0` bedeutet am schwerwiegendsten, `3` bedeutet
            geringfügig
          minimum: 0
          maximum: 3
    ContentPart:
      title: Content Part
      type: object
      description: >-
        Multimodaler Inhaltsblock. **Nur `glm-5.3-flash` unterstützt
        Bildblöcke.**
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - text
            - image_url
          description: |-
            Typ des Inhaltsblocks

            - `text`: Text
            - `image_url`: Bild (nur `glm-5.3-flash`)
        text:
          type: string
          description: Textinhalt, erforderlich bei `type=text`
          example: Was ist auf diesem Bild zu sehen?
        image_url:
          type: object
          description: Bildinhalt, erforderlich bei `type=image_url`
          required:
            - url
          properties:
            url:
              type: string
              description: >-
                Bildadresse. Unterstützt werden eine öffentliche HTTPS-URL
                (empfohlen) oder eine Base64-Data-URL
                (`data:image/png;base64,...`)
              example: https://example.com/photo.jpg
    AssistantMessage:
      type: object
      properties:
        role:
          type: string
          description: Aktuelle Konversationsrolle, Standard `assistant`
          enum:
            - assistant
          example: assistant
        content:
          type:
            - string
            - 'null'
          description: >-
            Textinhalt der Konversation


            **Hinweise**: Beim Werkzeugaufruf (`tool_calls`) möglicherweise
            `null`, andernfalls wird der Antwortinhalt des Modells zurückgegeben
          example: >-
            Hallo! Ich bin GLM-5.3 und kann dir bei Konversation,
            Schlussfolgern, Schreiben, Programmieren und vielen weiteren
            Aufgaben helfen.
        reasoning_content:
          type: string
          description: >-
            Inhalt der Gedankenkette


            **Hinweise**: Wird bei aktiviertem `thinking` zurückgegeben und
            protokolliert den Schlussfolgerungsprozess des Modells
          example: Lass mich dieses Problem zunächst analysieren...
        tool_calls:
          type: array
          description: >-
            Generierte Werkzeugaufruf-Informationen (werden zurückgegeben, wenn
            das Modell beschließt, ein Werkzeug aufzurufen)
          items:
            type: object
            properties:
              id:
                type: string
                description: Eindeutiger Bezeichner des Tool-Aufrufs
              type:
                type: string
                description: Typ des Werkzeugaufrufs
                enum:
                  - function
              function:
                type: object
                description: >-
                  Informationen zum Funktionsaufruf (enthält den generierten
                  Funktionsnamen und Argumente im JSON-Format)
                properties:
                  name:
                    type: string
                    description: Generierter Funktionsname
                  arguments:
                    type: string
                    description: >-
                      Zeichenkette der Funktionsaufruf-Argumente im JSON-Format;
                      bitte validieren Sie die Argumente vor dem Funktionsaufruf
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ##Alle APIs erfordern eine Bearer-Token-Authentifizierung##


        **API-Schlüssel abrufen:**


        Besuchen Sie die
        [API-Schlüsselverwaltung](https://evolink.ai/dashboard/keys), um Ihren
        API-Schlüssel abzurufen


        **Zum Anfrage-Header hinzufügen:**

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````