> ## Documentation Index
> Fetch the complete documentation index at: https://wiki.another-horizon.eu/llms.txt
> Use this file to discover all available pages before exploring further.

# Mensaje del assistant

> Genera un mensaje de respuesta del assistant para el dominio especificado.

<div id="integration-with-usechat">
  ## Integración con `useChat`
</div>

El hook `useChat` del AI SDK de Vercel es la forma recomendada de integrar la API del assistant en tu aplicación.

<Note>
  La API del assistant de Mintlify es compatible con **AI SDK v4**. Si utilizas AI SDK v5 o posterior, debes configurar un transporte personalizado.
</Note>

<Steps>
  <Step title="Instalar el AI SDK v4">
    ```bash theme={null}
    npm i ai@^4.1.15
    ```
  </Step>

  <Step title="Usar el hook">
    ```tsx theme={null}
    import { useChat } from 'ai/react';

    function MyComponent({ domain }) {
      const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat({
        api: `https://api.mintlify.com/discovery/v1/assistant/${domain}/message`,
        headers: {
          'Authorization': `Bearer ${process.env.MINTLIFY_TOKEN}`,
        },
        body: {
          fp: 'anonymous',
          retrievalPageSize: 5,
          context: [
            {
              type: 'code',
              value: 'const example = "code snippet";',
              elementId: 'code-block-1',
            },
          ],
        },
        streamProtocol: 'data',
        sendExtraMessageFields: true,
      });

      return (
        <div>
          {messages.map((message) => (
            <div key={message.id}>
              {message.role === 'user' ? 'Usuario: ' : 'Assistant: '}
              {message.content}
            </div>
          ))}
          <form onSubmit={handleSubmit}>
            <input value={input} onChange={handleInputChange} />
            <button type="submit">Enviar</button>
          </form>
        </div>
      );
    }
    ```

    **Configuración obligatoria para Mintlify:**

    * `streamProtocol: 'data'` - Obligatorio para respuestas en streaming.
    * `sendExtraMessageFields: true` - Obligatorio para enviar metadatos de los mensajes.
    * `body.fp` - Identificador de huella digital (usa 'anonymous' o un identificador de usuario).
    * `body.retrievalPageSize` - Número de resultados de búsqueda que se usarán (recomendado: 5).

    **Configuración opcional:**

    * `body.context` - Array de información contextual que se proporciona al assistant. Cada objeto de contexto incluye:
      * `type` - Puede ser `'code'` o `'textSelection'`.
      * `value` - El fragmento de código o el contenido de texto seleccionado.
      * `elementId` (opcional) - Identificador del elemento de la interfaz de usuario que contiene el contexto.
  </Step>
</Steps>

Consulta [useChat](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat) en la documentación del AI SDK para obtener más información.

<div id="rate-limits">
  ## Límites de uso
</div>

La API del assistant tiene los siguientes límites:

* 10,000 usos por key al mes
* 10,000 solicitudes por organización de Mintlify por hora
* 10,000 solicitudes por IP al día


## OpenAPI

````yaml es/discovery-openapi.json post /assistant/{domain}/message
openapi: 3.0.1
info:
  title: Mintlify Assistant API
  description: >-
    Una API para integrar las funciones de descubrimiento de Mintlify en tu
    producto.
  version: 1.0.0
servers:
  - url: https://api.mintlify.com/discovery/v1
security:
  - bearerAuth: []
paths:
  /assistant/{domain}/message:
    post:
      summary: Mensaje del assistant
      description: >-
        Genera un mensaje de respuesta del assistant para el dominio
        especificado.
      parameters:
        - name: domain
          in: path
          required: true
          schema:
            type: string
          description: >-
            El identificador de dominio de tu URL `domain.mintlify.app`. Puedes
            encontrarlo al final de la URL de tu dashboard. Por ejemplo,
            `dashboard.mintlify.com/organization/domain` tiene como
            identificador de dominio `domain`.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - fp
                - messages
              properties:
                fp:
                  type: string
                  description: >-
                    Identificador de huella digital para rastrear sesiones de
                    conversación. Usa 'anonymous' para usuarios anónimos o
                    proporciona un identificador de usuario único.
                threadId:
                  default: null
                  type: string
                  description: >-
                    Un identificador opcional que se utiliza para mantener la
                    continuidad de la conversación a lo largo de varios
                    mensajes. Cuando se proporciona, permite que el sistema
                    asocie los mensajes posteriores con el mismo hilo de
                    conversación. El threadId se devuelve en la respuesta como
                    event.threadId cuando event.type === 'finish'.
                messages:
                  type: array
                  default:
                    - id: foobar
                      role: user
                      content: how do i get started
                      parts:
                        - type: text
                          text: How do I get started
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: Identificador único del mensaje
                      role:
                        type: string
                        enum:
                          - system
                          - assistant
                          - data
                          - user
                        description: El rol del remitente del mensaje
                      createdAt:
                        type: string
                        format: date-time
                        description: Marca de tiempo de creación del mensaje
                      content:
                        type: string
                        description: El contenido del mensaje
                      annotations:
                        type: array
                        items: {}
                        description: Arreglo opcional de anotaciones para el mensaje
                      parts:
                        type: array
                        items:
                          oneOf:
                            - type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - text
                                text:
                                  type: string
                              required:
                                - type
                                - text
                            - type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - reasoning
                                reasoning:
                                  type: string
                                details:
                                  type: array
                                  items:
                                    oneOf:
                                      - type: object
                                        properties:
                                          type:
                                            type: string
                                            enum:
                                              - text
                                          text:
                                            type: string
                                          signature:
                                            type: string
                                        required:
                                          - type
                                          - text
                                      - type: object
                                        properties:
                                          type:
                                            type: string
                                            enum:
                                              - redacted
                                          data:
                                            type: string
                                        required:
                                          - type
                                          - data
                              required:
                                - type
                                - reasoning
                                - details
                            - type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - step-start
                              required:
                                - type
                            - type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - source
                                source:
                                  type: object
                                  properties:
                                    sourceType:
                                      type: string
                                      enum:
                                        - url
                                    id:
                                      type: string
                                    url:
                                      type: string
                                    title:
                                      type: string
                                  required:
                                    - sourceType
                                    - id
                                    - url
                              required:
                                - type
                                - source
                            - type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - tool-invocation
                                toolInvocation:
                                  oneOf:
                                    - type: object
                                      properties:
                                        state:
                                          type: string
                                          enum:
                                            - partial-call
                                        step:
                                          type: number
                                        toolCallId:
                                          type: string
                                        toolName:
                                          type: string
                                        args: {}
                                      required:
                                        - state
                                        - toolCallId
                                        - toolName
                                        - args
                                    - type: object
                                      properties:
                                        state:
                                          type: string
                                          enum:
                                            - call
                                        step:
                                          type: number
                                        toolCallId:
                                          type: string
                                        toolName:
                                          type: string
                                        args: {}
                                      required:
                                        - state
                                        - toolCallId
                                        - toolName
                                        - args
                                    - type: object
                                      properties:
                                        state:
                                          type: string
                                          enum:
                                            - result
                                        step:
                                          type: number
                                        toolCallId:
                                          type: string
                                        toolName:
                                          type: string
                                        args: {}
                                        result: {}
                                      required:
                                        - state
                                        - toolCallId
                                        - toolName
                                        - args
                                        - result
                              required:
                                - type
                                - toolInvocation
                        description: >-
                          Array de partes de mensaje con distintos tipos,
                          incluidos texto, razonamiento, fuentes e invocaciones
                          de herramientas
                      experimental_attachments:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                            contentType:
                              type: string
                            url:
                              type: string
                          required:
                            - url
                        description: >-
                          Array opcional de archivos adjuntos experimentales
                          para el mensaje
                    required:
                      - id
                      - role
                      - content
                      - parts
                  description: >-
                    Array de mensajes de la conversación. En el frontend,
                    probablemente querrás usar la función handleSubmit del hook
                    useChat del paquete @ai-sdk para agregar los mensajes del
                    usuario y manejar las respuestas en streaming, en lugar de
                    definir manualmente los objetos de este array, ya que tienen
                    tantos parámetros.
                retrievalPageSize:
                  type: number
                  default: 5
                  description: >-
                    Número de resultados de búsqueda en la documentación que se
                    utilizarán para generar la respuesta. Valores más altos
                    proporcionan más contexto, pero pueden aumentar el tiempo de
                    respuesta. Recomendado: 5.
                filter:
                  type: object
                  default: null
                  properties:
                    version:
                      type: string
                      description: Filtro opcional de versión
                    language:
                      type: string
                      description: Filtro de idioma opcional
                  description: Criterios de filtrado opcionales para la búsqueda
      responses:
        '200':
          description: Mensaje generado con éxito
          content:
            application/json:
              schema:
                type: object
                description: >-
                  Objeto de respuesta que transmite partes de un flujo de datos
                  con formato con el estado, los encabezados y el contenido
                  especificados. Esto coincide con lo que se espera del SDK de
                  IA, tal como se documenta en
                  [ai-sdk.dev/docs/ai-sdk-ui/streaming-data](https://ai-sdk.dev/docs/ai-sdk-ui/streaming-data).
                  En lugar de escribir tu propio parser, se recomienda usar el
                  [hook useChat de ai-sdk, tal como se documenta
                  aquí](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat#usechat).
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        El encabezado Authorization requiere un token Bearer. Consulta la
        [documentación de la clave de la Assistant
        API](/api/introduction#assistant-api-key) para saber cómo obtener tu
        clave de API.

````