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

# Nachricht senden

> Sendet eine Nachricht und streamt die Antwort des Assistenten. Modell, Unternehmenseinstellungen und Metriken werden aus dem Token ermittelt.

Die Antwort ist ein **AI SDK UI Message Stream**: ein JSON-Objekt pro `data:`-Zeile, am Ende `data: [DONE]`, `Content-Type: text/plain`. Details unter [Streaming](/partner-api/streaming_de).

<Note>Der Assistent kann vor der Antwort mehrere Tool-Runden machen. Eine Antwort kann über eine Minute dauern. Der Playground zeigt den Stream erst nach Abschluss.</Note>



## OpenAPI

````yaml /api-reference/partner-api.json post /chats/{id}/messages
openapi: 3.1.0
info:
  title: Delicious AI Partner-API
  version: 1.0.0
  description: >-
    Delicious AI als Chat-Backend für ein eigenes Frontend.


    Alle Pfade liegen unter `/api/public/v1`. Jeder Request braucht das Access
    Token des Nutzers als Bearer Token.
servers:
  - url: >-
      https://delicious-ai-app.wonderfulgrass-3eed3e5c.westeurope.azurecontainerapps.io/api/public/v1
    description: Produktion
security:
  - bearerAuth: []
tags:
  - name: Sitzung
    description: Angemeldeter Nutzer
  - name: Prompts
    description: Prompts des Nutzers
  - name: Chats
    description: Chats anlegen, auflisten, laden, löschen
  - name: Nachrichten
    description: Nachricht senden, Antwort streamen
paths:
  /chats/{id}/messages:
    parameters:
      - $ref: '#/components/parameters/ChatId'
    post:
      tags:
        - Nachrichten
      summary: Nachricht senden
      description: >-
        Sendet eine Nachricht und streamt die Antwort des Assistenten. Modell,
        Unternehmenseinstellungen und Metriken werden aus dem Token ermittelt.


        Die Antwort ist ein **AI SDK UI Message Stream**: ein JSON-Objekt pro
        `data:`-Zeile, am Ende `data: [DONE]`, `Content-Type: text/plain`.
        Details unter [Streaming](/partner-api/streaming_de).


        <Note>Der Assistent kann vor der Antwort mehrere Tool-Runden machen.
        Eine Antwort kann über eine Minute dauern. Der Playground zeigt den
        Stream erst nach Abschluss.</Note>
      operationId: sendMessage
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendMessage'
            examples:
              text:
                summary: Freitext
                value:
                  text: Wie haben sich die Verkäufe letzte Woche entwickelt?
              prompt:
                summary: Aus einem Prompt
                value:
                  promptId: ab12cd34ef56gh78ij90klmn
              transcript:
                summary: Ganzer Verlauf (useChat)
                value:
                  messages:
                    - id: u1
                      role: user
                      parts:
                        - type: text
                          text: Welche Artikel liefen gestern am besten?
      responses:
        '200':
          description: 'Antwort-Stream (Server-Sent Events, `Content-Type: text/plain`)'
          content:
            text/plain:
              schema:
                type: string
              example: |
                data: {"type":"start","messageId":"msg_1"}

                data: {"type":"start-step"}

                data: {"type":"text-start","id":"t1"}

                data: {"type":"text-delta","id":"t1","delta":"Letzte Woche "}

                data: {"type":"text-end","id":"t1"}

                data: {"type":"finish-step"}

                data: {"type":"finish"}

                data: [DONE]
        '400':
          description: >-
            `empty_message`: Body enthält weder `text`, `promptId` noch
            `messages`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: empty_message
                message: Send `text`, a `promptId` or `messages`
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: '`prompt_not_found`: Prompt ist für diesen Nutzer nicht verfügbar'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: prompt_not_found
                message: Prompt not found
        '503':
          description: >-
            `no_model_preset`: kein Modell für dieses Unternehmen konfiguriert.
            Oder `Product backend unavailable` (nur `message`): Backend nicht
            erreichbar, Request wiederholen.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: no_model_preset
                message: No model preset is available
components:
  parameters:
    ChatId:
      name: id
      in: path
      required: true
      description: Chat-ID aus `POST /chats` oder der Liste
      schema:
        type: string
        example: Q7xk2mVb9pLw
  schemas:
    SendMessage:
      type: object
      description: >-
        Genau eine der drei Varianten: `text`, `promptId` oder `messages`.
        `messages` hat Vorrang vor `text`. `promptId` allein sendet den
        Prompt-Text.
      properties:
        text:
          type: string
          description: Nachricht des Nutzers. Wird an den gespeicherten Verlauf angehängt.
          example: Wie haben sich die Verkäufe letzte Woche entwickelt?
        promptId:
          type: string
          description: >-
            Chat aus einem Prompt starten. Der Prompt-Text wird zur Nachricht
            (falls `text` und `messages` fehlen), der Chat wird mit dem Prompt
            verknüpft.
          example: ab12cd34ef56gh78ij90klmn
        messages:
          type: array
          description: >-
            Der ganze Verlauf, wie `useChat` ihn sendet. Nötig für
            Tool-Freigaben und Fortsetzungen. Hat Vorrang vor `text`.
          items:
            $ref: '#/components/schemas/UIMessage'
        language:
          type: string
          enum:
            - de-DE
            - en-US
          default: de-DE
          description: Sprache der Antwort
    Error:
      type: object
      required:
        - message
      properties:
        code:
          type: string
          description: >-
            Fehlercode. Fehlt bei den beiden Antworten der Auth-Schicht
            (`Invalid API token`, `Product backend unavailable`).
          example: chat_not_found
        message:
          type: string
          example: Chat not found
    UIMessage:
      type: object
      description: >-
        Nachricht im `UIMessage`-Format des Vercel AI SDK. `parts` enthält Text,
        Tool Calls mit Input und Output sowie Freigabe-Anfragen.
      required:
        - id
        - role
        - parts
      properties:
        id:
          type: string
          example: m2
        role:
          type: string
          enum:
            - user
            - assistant
            - system
        parts:
          type: array
          items:
            type: object
            required:
              - type
            properties:
              type:
                type: string
                example: text
            additionalProperties: true
          example:
            - type: tool-createReport
              toolCallId: call_1
              state: output-available
              input: {}
              output: {}
            - type: text
              text: Letzte Woche …
        createdAt:
          type: string
          format: date-time
  responses:
    Unauthorized:
      description: >-
        Kein oder ungültiges Token. `Invalid API token`: abgelaufen oder
        widerrufen, neues Token holen.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Invalid API token
    Forbidden:
      description: '`forbidden`: Der Assistent ist für diesen Nutzer nicht freigeschaltet'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: forbidden
            message: The AI assistant is not enabled for this user
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Access Token des Nutzers aus der Delicious Data App (Einstellungen →
        Benutzerkonto → API-Token). Gilt bis zu sechs Tage, endet mit dem
        Logout.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.