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

# Gemini Decisions - Referencia completa de parámetros

> - Usa `gemini-decision-1` para evaluar texto, imágenes, audio, vídeo y PDF con probabilidades de sí/no, elección única y puntuaciones
- Devuelve todas las respuestas de forma síncrona; no admite streaming, Batch API ni caché de contexto
- Solo se facturan los tokens de entrada; la salida es gratuita. Cada solicitud tiene un cargo mínimo. Consulta los [Precios de los modelos](https://evolink.ai/pricing)
- Para conversaciones o generación de texto, usa la [API nativa de Gemini](/es/api-manual/language-series/gemini/native-api/native-api-reference)

> [!NOTE]
>
> **BaseURL**: usa `https://direct.evolink.ai` de forma predeterminada; `https://api.evolink.ai` es la dirección de respaldo.


## OpenAPI

````yaml es/api-manual/language-series/gemini/decisions/decisions-reference.json POST /v1beta/decisions
openapi: 3.1.0
info:
  title: Gemini Decisions - Referencia completa de parámetros
  description: >-
    Usa la API Gemini Decisions para que Gemini Decision 1 responda preguntas
    tipadas sobre texto, imágenes, audio, vídeo y documentos PDF: probabilidades
    de sí/no, una opción de una lista fija o una puntuación en niveles
    ordenados.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://direct.evolink.ai
    description: Producción (recomendado)
  - url: https://api.evolink.ai
    description: Dirección de respaldo
security:
  - bearerAuth: []
tags:
  - name: Decisions
    description: 'Decisiones estructuradas: clasificación, asignación y puntuación'
paths:
  /v1beta/decisions:
    post:
      tags:
        - Decisions
      summary: Gemini Decision 1 (decisiones estructuradas)
      description: >-
        - Usa `gemini-decision-1` para evaluar texto, imágenes, audio, vídeo y
        PDF con probabilidades de sí/no, elección única y puntuaciones

        - Devuelve todas las respuestas de forma síncrona; no admite streaming,
        Batch API ni caché de contexto

        - Solo se facturan los tokens de entrada; la salida es gratuita. Cada
        solicitud tiene un cargo mínimo. Consulta los [Precios de los
        modelos](https://evolink.ai/pricing)

        - Para conversaciones o generación de texto, usa la [API nativa de
        Gemini](/es/api-manual/language-series/gemini/native-api/native-api-reference)
      operationId: createDecision
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DecisionRequest'
            examples:
              noul:
                summary: Pregunta de sí/no
                value:
                  model: gemini-decision-1
                  input: >-
                    The blue mug I ordered on Monday arrived cracked on
                    Wednesday.
                  questions:
                    is_damaged:
                      type: noul
                      instructions: Did the item arrive damaged?
              choice:
                summary: Selección única (asignación)
                value:
                  model: gemini-decision-1
                  input: I was charged twice for my order.
                  questions:
                    department:
                      type: choice
                      instructions: Which department should handle this request?
                      criteria:
                        billing: Payments, invoices, and refunds.
                        technical: Problems using the product.
                        shipping: Delivery and tracking.
                        other: Anything outside these categories.
              score:
                summary: Puntuación en niveles ordenados
                value:
                  model: gemini-decision-1
                  input: Export fails in Safari but works in Chrome.
                  questions:
                    severity:
                      type: score
                      instructions: How severe is this issue for the user?
                      criteria:
                        - 'Cosmetic: appearance only, no lost functionality.'
                        - >-
                          Workaround available: a task fails, but another way
                          works.
                        - 'Fully blocked: a task fails with no workaround.'
              multiple:
                summary: Varias preguntas en una solicitud
                value:
                  model: gemini-decision-1
                  input:
                    - type: text
                      text: >
                        {"order": {"id": "8821", "item": "headphones",
                        "price_usd": 240}, "tier": "Gold"}
                    - type: text
                      text: >-
                        {"message": "Audio cuts out on the left earcup. Fix it
                        today or I cancel my membership."}
                  questions:
                    is_defect:
                      type: noul
                      instructions: Does `message` describe a hardware defect?
                    next_action:
                      type: choice
                      instructions: What is the right resolution given `tier` and `order`?
                      criteria:
                        instant_refund: Refund without return. Low value or clear fault.
                        replacement_shipment: Ship a replacement. Customer returns the original.
                        troubleshooting_flow: The issue may be fixable by the customer.
                        human_escalation: ''
                    churn_risk:
                      type: score
                      instructions: >-
                        How likely is the customer to churn if the issue is not
                        resolved now?
                      criteria:
                        - No churn signal
                        - Mild frustration
                        - Mentions alternatives
                        - Threatens to cancel
              image_base64:
                summary: Evaluar una imagen integrada (base64)
                value:
                  model: gemini-decision-1
                  input:
                    - type: text
                      text: Look at the image.
                    - type: image
                      data: >-
                        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKklEQVR42mM4ISdHU8QwasGoBaMWjFowasGoBaMWjFowasGoBaMWDBULACXLED1gHZEpAAAAAElFTkSuQmCC
                      mime_type: image/png
                      resolution: low
                  questions:
                    is_red:
                      type: noul
                      instructions: Is the image mostly red?
              image_url:
                summary: Evaluar una imagen desde una URL
                value:
                  model: gemini-decision-1
                  input:
                    - type: text
                      text: Product photo.
                    - type: image
                      uri: https://www.gstatic.com/webp/gallery/1.jpg
                      mime_type: image/jpeg
                      resolution: low
                  questions:
                    outdoor:
                      type: noul
                      instructions: Is this photo taken outdoors?
                    quality:
                      type: score
                      instructions: How sharp is the photo?
                      criteria:
                        - blurry
                        - ok
                        - sharp
              audio_url:
                summary: Evaluar audio desde una URL
                value:
                  model: gemini-decision-1
                  input:
                    - type: audio
                      uri: >-
                        https://storage.googleapis.com/generativeai-downloads/data/Apollo-11_Day-01-Highlights-10s.mp3
                      mime_type: audio/mp3
                  questions:
                    mentions_launch:
                      type: noul
                      instructions: >-
                        Is the speaker talking about spaceflight or a rocket
                        launch?
      responses:
        '200':
          description: >-
            Una respuesta por pregunta, con las mismas claves que las preguntas
            de la solicitud
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DecisionResponse'
              example:
                answers:
                  is_defect:
                    type: noul
                    noul: 0.94
                    confidence: 0.94
                  next_action:
                    type: choice
                    choice: human_escalation
                    probabilities:
                      human_escalation: 0.76
                      replacement_shipment: 0.18
                      troubleshooting_flow: 0.04
                      instant_refund: 0.02
                    confidence: 0.76
                  churn_risk:
                    type: score
                    score: 2.99
                    legend:
                      '0': No churn signal
                      '1': Mild frustration
                      '2': Mentions alternatives
                      '3': Threatens to cancel
                    probabilities:
                      '0': 0
                      '1': 0
                      '2': 0.01
                      '3': 0.99
                    confidence: 0.99
                usage:
                  total_input_tokens: 324
                  input_tokens_by_modality:
                    - modality: text
                      tokens: 324
                  total_output_tokens: 0
                  total_tokens: 324
        '400':
          description: >-
            Solicitud no válida. Cuando el contenido de la solicitud no es
            válido, `code` es `invalid_request` y `message` indica el campo y la
            regla incumplida. Causas habituales: un `type` de pregunta no
            admitido, una pregunta `choice` o `score` sin `criteria`, menos de 2
            opciones o niveles, una clave de pregunta no válida, un `input`
            vacío, un campo desconocido (como `stream`), un `mime_type` que no
            coincide con el contenido, o una URI `gs://` o un nombre
            `files/...`. Una entrada bloqueada por los filtros de seguridad
            devuelve `safety`, `prohibited_content`, `blocklist`, `image_safety`
            o `content_blocked`. Usar este modelo en otro endpoint devuelve
            `model_endpoint_mismatch`. Las respuestas de error HTTP no se
            facturan. Los avisos de seguridad en una respuesta HTTP 200 siguen
            siendo facturables; consulta `usage`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalid_question_type:
                  summary: Tipo de pregunta no admitido
                  value:
                    error:
                      message: >-
                        The value 'bool' is not supported for 'type' at
                        'questions.q'. Supported values: 'choice', 'noul',
                        'score'. (request id: 20261112194236591724000xVRbpAJk)
                      type: ''
                      param: ''
                      code: invalid_request
                safety_blocked:
                  summary: Entrada bloqueada por los filtros de seguridad
                  value:
                    error:
                      message: >-
                        Request blocked due to safety violations (harmful
                        content). Please modify your input and retry. (request
                        id: 20261112194253810462000pRk2HvTe)
                      type: ''
                      param: ''
                      code: safety
                model_endpoint_mismatch:
                  summary: Modelo enviado al endpoint equivocado
                  value:
                    error:
                      allowed_endpoints:
                        - /v1beta/decisions
                      code: model_endpoint_mismatch
                      expected_endpoint: /v1beta/decisions
                      message: >-
                        The model 'gemini-decision-1' cannot be used with
                        /v1/decisions. Allowed endpoints: /v1beta/decisions.
                        (request id: 20261112194245600264000oIU8uBcu)
                      param: null
                      retryable: false
                      type: invalid_request_error
        '401':
          description: 'No autorizado: API Key ausente o no válido'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: unauthorized
                  message: >-
                    API key is required (request id:
                    202611121942512304710006r9sjD0r)
                  param: null
                  type: authentication_error
        '402':
          description: Saldo insuficiente
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Permiso denegado. `permission_denied`: `input` hace referencia a un
            archivo de la Google Files API, al que solo puede acceder el
            proyecto de Google que lo subió; envía el archivo como URL HTTPS
            pública o firmada, o en base64 integrado. Este estado también se
            devuelve cuando el API Key tiene una lista de modelos permitidos que
            no incluye este modelo
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                permission_denied:
                  summary: Se usó una URI de la Google Files API
                  value:
                    error:
                      message: >-
                        You do not have permission to access the File abc123xyz
                        or it may not exist. (request id:
                        20261112194238873347000q1Tkqeid)
                      type: ''
                      param: ''
                      code: permission_denied
        '404':
          description: >-
            No encontrado. `not_found`: no se pudo obtener una URL multimedia de
            `input`; comprueba que sea una URL HTTPS accesible públicamente o
            correctamente firmada. `model_not_found`: el modelo no está
            disponible para la API Decisions; actualmente solo se admite
            `gemini-decision-1`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                url_not_found:
                  summary: No se pudo obtener la URL multimedia
                  value:
                    error:
                      message: >-
                        Cannot fetch content from the provided URL. The URL
                        could not be found. Please double-check the URL for any
                        errors. (request id: 20261112194241224738000Vx0uduIQ)
                      type: ''
                      param: ''
                      code: not_found
                model_not_found:
                  summary: Modelo no disponible para Decisions
                  value:
                    error:
                      code: model_not_found
                      message: >-
                        Model 'gemini-3.8-flash' is not available for the
                        Decisions API (POST /v1beta/decisions) with this API
                        key. This error is permanent — do not retry with the
                        same model id. Call GET /v1/models: Decisions models for
                        this endpoint are listed as gemini-decision-*. (request
                        id: 20261112194249376584000tUELY8LN)
                      param: null
                      retryable: false
                      type: invalid_request_error
        '429':
          description: Límite de frecuencia excedido; inténtalo de nuevo más tarde
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Error interno del servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Servicio temporalmente no disponible; inténtalo de nuevo más tarde
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    DecisionRequest:
      type: object
      additionalProperties: false
      required:
        - model
        - input
        - questions
      properties:
        model:
          type: string
          description: >-
            ID del modelo. Usa `gemini-decision-1`.


            Este modelo no es un modelo de conversación y solo funciona en este
            endpoint. Por ejemplo, enviarlo al endpoint GPT Decisions
            `/v1/decisions` devuelve `400 model_endpoint_mismatch`.
          enum:
            - gemini-decision-1
          example: gemini-decision-1
        input:
          description: >-
            Entrada compartida por todas las preguntas: una cadena de texto, un
            solo bloque de contenido o un array de bloques de contenido (texto,
            imagen, audio, vídeo o documento PDF). La entrada no puede estar
            vacía. Los bloques de texto contiguos se concatenan en orden sin
            separador; añade tú mismo espacios o saltos de línea. Para enviar
            datos JSON, serialízalos como cadena y envíalos como texto.
          oneOf:
            - type: string
              minLength: 1
              example: I was charged twice for my order.
            - $ref: '#/components/schemas/InputContent'
            - type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/InputContent'
        questions:
          type: object
          description: >-
            Preguntas que evaluar, como un mapa de clave de pregunta a pregunta:
            de 1 a 1.000 preguntas. Tú eliges las claves (de 1 a 64 caracteres
            que cumplan `[A-Za-z0-9_-]+`) y cada respuesta se devuelve con la
            misma clave. El modelo nunca ve las claves, así que escribe la
            pregunta completa en `instructions`.


            | Tipo | Para qué sirve | Resultado principal |

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

            | `noul` | Comprobar si una afirmación se cumple | `noul`:
            probabilidad de «sí» (0,01 a 0,99) |

            | `choice` | Elegir una opción de una lista fija | `choice`: el ID
            de opción más probable |

            | `score` | Puntuar la entrada en niveles ordenados | `score`:
            puntuación de nivel ponderada por probabilidades |


            Cada pregunta se evalúa de forma independiente sobre la misma
            entrada y no ve las demás; se pueden combinar tipos de pregunta. Si
            las preguntas dependen unas de otras, divídelas en solicitudes
            separadas. La entrada y todas las preguntas comparten una ventana de
            contexto de 262.144 tokens.
          minProperties: 1
          maxProperties: 1000
          propertyNames:
            pattern: ^[A-Za-z0-9_-]{1,64}$
          additionalProperties:
            oneOf:
              - $ref: '#/components/schemas/NoulQuestion'
              - $ref: '#/components/schemas/ChoiceQuestion'
              - $ref: '#/components/schemas/ScoreQuestion'
          example:
            is_damaged:
              type: noul
              instructions: Did the item arrive damaged?
      description: >-
        El cuerpo de la solicitud solo acepta `model`, `input` y `questions`.
        Cualquier otro campo (como `stream`) devuelve `400 invalid_request`.
    DecisionResponse:
      type: object
      properties:
        answers:
          type: object
          description: >-
            Una respuesta por pregunta, con las mismas claves que las preguntas
            de la solicitud; el `type` de cada respuesta coincide con su
            pregunta. Vacío cuando `prompt_feedback.block_reason` está definido
          additionalProperties:
            oneOf:
              - $ref: '#/components/schemas/NoulAnswer'
              - $ref: '#/components/schemas/ChoiceAnswer'
              - $ref: '#/components/schemas/ScoreAnswer'
        usage:
          $ref: '#/components/schemas/DecisionUsage'
        prompt_feedback:
          $ref: '#/components/schemas/PromptFeedback'
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              description: >-
                Descripción del error, terminada en `(request id: ...)`.
                Proporciona este ID al investigar problemas
            type:
              type:
                - string
                - 'null'
              description: Tipo de error; puede estar vacío
            param:
              type:
                - string
                - 'null'
              description: Parámetro relacionado; puede estar vacío
            code:
              type:
                - string
                - 'null'
              description: >-
                Código de error, por ejemplo `invalid_request`,
                `permission_denied`, `not_found`, `safety`, `model_not_found` o
                `model_endpoint_mismatch`
    InputContent:
      description: Un bloque de contenido; `type` determina los demás campos
      oneOf:
        - $ref: '#/components/schemas/TextContent'
        - $ref: '#/components/schemas/ImageContent'
        - $ref: '#/components/schemas/AudioContent'
        - $ref: '#/components/schemas/VideoContent'
        - $ref: '#/components/schemas/DocumentContent'
    NoulQuestion:
      type: object
      description: Pregunta de sí/no
      required:
        - type
        - instructions
      properties:
        type:
          type: string
          enum:
            - noul
        instructions:
          $ref: '#/components/schemas/QuestionInstructions'
        criteria:
          type: object
          description: >-
            Opcional. Define qué significan «sí» y «no» cuando la pregunta por
            sí sola es ambigua
          properties:
            true_description:
              type: string
              description: Cuándo la respuesta es «sí»
            false_description:
              type: string
              description: Cuándo la respuesta es «no»
    ChoiceQuestion:
      type: object
      description: Pregunta de selección única
      required:
        - type
        - instructions
        - criteria
      properties:
        type:
          type: string
          enum:
            - choice
        instructions:
          $ref: '#/components/schemas/QuestionInstructions'
        criteria:
          type: object
          description: >-
            Opciones, como un mapa de ID de opción a una descripción de cuándo
            se aplica (usa una cadena vacía `""` si el ID se explica por sí
            mismo). De 2 a 255 opciones. Los ID de opción tienen de 1 a 128
            caracteres (hasta 512 bytes UTF-8); se permiten espacios ASCII
            internos, pero no espacios al principio o al final ni caracteres de
            control. Antes de evaluar, los ID se ordenan alfabéticamente (orden
            de bytes UTF-8) y los empates exactos se resuelven a favor del
            primer ID en ese orden, así que usa un ID de respaldo que no dependa
            de la posición, como `other`, en lugar de `none_of_the_above`
          minProperties: 2
          maxProperties: 255
          additionalProperties:
            type: string
          example:
            billing: Payments, invoices, and refunds.
            technical: Problems using the product.
            shipping: Delivery and tracking.
            other: Anything outside these categories.
    ScoreQuestion:
      type: object
      description: Pregunta de puntuación
      required:
        - type
        - instructions
        - criteria
      properties:
        type:
          type: string
          enum:
            - score
        instructions:
          $ref: '#/components/schemas/QuestionInstructions'
        criteria:
          type: array
          description: >-
            Descripciones de los niveles, de menor a mayor: de 2 a 255 cadenas
            no vacías (se recomiendan de 2 a 10). El nivel `i` (empezando en 0)
            se describe con `criteria[i]`. Como `score` promedia los índices de
            nivel, mantén una escala lineal y niveles contiguos claramente
            distintos
          minItems: 2
          maxItems: 255
          items:
            type: string
            minLength: 1
          example:
            - 'Cosmetic: appearance only, no lost functionality.'
            - 'Workaround available: a task fails, but another way works.'
            - 'Fully blocked: a task fails with no workaround.'
    NoulAnswer:
      type: object
      properties:
        type:
          type: string
          enum:
            - noul
        noul:
          type: number
          minimum: 0.01
          maximum: 0.99
          description: >-
            Probabilidad calibrada de que la respuesta sea «sí», de 0,01 a 0,99;
            la probabilidad de «no» es `1 - noul`. Define los umbrales dentro de
            este rango con ejemplos etiquetados de tu propio tráfico
        confidence:
          type: number
          minimum: 0
          maximum: 1
          description: >-
            Probabilidad estimada de que la respuesta más probable sea correcta,
            igual a `max(noul, 1 - noul)`
    ChoiceAnswer:
      type: object
      properties:
        type:
          type: string
          enum:
            - choice
        choice:
          type: string
          description: El ID de opción con la probabilidad más alta
        probabilities:
          type: object
          description: >-
            Probabilidad calibrada de cada ID de opción; suman 1. La
            probabilidad siempre se reparte entre tus opciones, aunque ninguna
            encaje
          additionalProperties:
            type: number
        confidence:
          type: number
          minimum: 0
          maximum: 1
          description: >-
            Probabilidad de la opción seleccionada, de 0 a 1. Si es baja,
            considera una revisión humana o una pregunta de sí/no aparte sobre
            el alcance
    ScoreAnswer:
      type: object
      properties:
        type:
          type: string
          enum:
            - score
        score:
          type: number
          description: >-
            Media de los índices de nivel ponderada por probabilidades (`sum(k ×
            probability_k)`), por lo que puede quedar entre dos niveles.
            Divídela entre el índice de nivel más alto para normalizarla entre 0
            y 1
        probabilities:
          type: object
          description: >-
            Probabilidad calibrada de cada índice de nivel (`"0"`, `"1"`, ...);
            suman 1. Para obtener un nivel concreto, toma el índice con mayor
            probabilidad
          additionalProperties:
            type: number
        legend:
          type: object
          description: Descripción de cada índice de nivel, tomada de `criteria`
          additionalProperties:
            type: string
        confidence:
          type: number
          minimum: 0
          maximum: 1
          description: La probabilidad más alta de `probabilities`, de 0 a 1
    DecisionUsage:
      type: object
      description: >-
        Uso de tokens. Solo se facturan los tokens de entrada
        (`total_input_tokens`): los tokens de texto, imagen, audio, vídeo y PDF
        tienen el mismo precio, y la salida siempre es 0. Cada solicitud tiene
        un cargo mínimo. Consulta los [Precios de los
        modelos](https://evolink.ai/pricing) para conocer las tarifas actuales.
        No se admite la caché de contexto; la entrada repetida se factura por
        separado en cada solicitud. Si una respuesta HTTP 200 contiene
        `prompt_feedback.block_reason`, el uso de entrada se sigue facturando.
        Si no se devuelven datos de uso válidos, la facturación se basa en una
        estimación.
      properties:
        total_input_tokens:
          type: integer
          description: >-
            Tokens de entrada facturables de la entrada compartida y de todas
            las preguntas. La entrada compartida se cuenta una vez por
            solicitud, sin importar cuántas preguntas hagas; cada pregunta solo
            añade sus propias instrucciones y criterios
          example: 324
        input_tokens_by_modality:
          type: array
          description: Tokens de entrada por modalidad
          items:
            type: object
            properties:
              modality:
                type: string
                description: >-
                  Modalidad: `text`, `image` o `audio`. Los fotogramas de vídeo
                  y las páginas PDF se cuentan como `image`
              tokens:
                type: integer
                description: Número de tokens de esta modalidad
        total_output_tokens:
          type: integer
          description: Siempre 0; este modelo no genera texto
          example: 0
        total_tokens:
          type: integer
          description: Total de tokens
          example: 324
    PromptFeedback:
      type: object
      description: >-
        Resultado de los filtros de contenido aplicados a la entrada. Cuando
        `block_reason` está definido, la entrada se bloqueó, no se evaluó
        ninguna pregunta y `answers` está vacío. Si se devuelve con HTTP 200, la
        solicitud se sigue facturando; consulta `usage`.
      properties:
        block_reason:
          type: string
          enum:
            - safety
            - other
            - blocklist
            - prohibited_content
            - image_safety
          description: Motivo del bloqueo de la entrada
        block_reason_message:
          type: string
          description: Detalles del motivo del bloqueo
    TextContent:
      type: object
      required:
        - type
        - text
      properties:
        type:
          type: string
          enum:
            - text
        text:
          type: string
          description: Contenido de texto
    ImageContent:
      type: object
      required:
        - type
        - mime_type
      properties:
        type:
          type: string
          enum:
            - image
        data:
          type: string
          contentEncoding: base64
          description: >-
            Bytes del archivo codificados en base64 (los datos integrados suman
            como máximo 100 MB por solicitud). Indica `data` o `uri`
        uri:
          type: string
          format: uri
          description: >-
            URL HTTPS pública o firmada del archivo (hasta 15 MB). No se admiten
            URI de la Google Files API, URI `gs://`, nombres `files/...` ni URL
            de YouTube. Indica `data` o `uri`
        mime_type:
          type: string
          enum:
            - image/png
            - image/jpeg
            - image/webp
            - image/heic
            - image/heif
            - image/gif
            - image/bmp
            - image/tiff
          description: >-
            Tipo MIME. Debe coincidir con el formato real del archivo; se
            rechazan tipos genéricos como `application/octet-stream`
        resolution:
          type: string
          enum:
            - low
            - medium
            - high
            - ultra_high
          description: >-
            Opcional. Resolución del contenido multimedia, que controla el uso
            de tokens y el nivel de detalle
    AudioContent:
      type: object
      required:
        - type
        - mime_type
      properties:
        type:
          type: string
          enum:
            - audio
        data:
          type: string
          contentEncoding: base64
          description: >-
            Bytes del archivo codificados en base64 (los datos integrados suman
            como máximo 100 MB por solicitud). Indica `data` o `uri`
        uri:
          type: string
          format: uri
          description: >-
            URL HTTPS pública o firmada del archivo (hasta 15 MB). No se admiten
            URI de la Google Files API, URI `gs://`, nombres `files/...` ni URL
            de YouTube. Indica `data` o `uri`
        mime_type:
          type: string
          enum:
            - audio/wav
            - audio/mp3
            - audio/mpeg
            - audio/aiff
            - audio/aac
            - audio/ogg
            - audio/flac
            - audio/m4a
            - audio/opus
            - audio/webm
            - audio/l16
            - audio/alaw
            - audio/mulaw
          description: >-
            Tipo MIME. Debe coincidir con el formato real del archivo; se
            rechazan tipos genéricos como `application/octet-stream`
    VideoContent:
      type: object
      required:
        - type
        - mime_type
      properties:
        type:
          type: string
          enum:
            - video
        data:
          type: string
          contentEncoding: base64
          description: >-
            Bytes del archivo codificados en base64 (los datos integrados suman
            como máximo 100 MB por solicitud). Indica `data` o `uri`
        uri:
          type: string
          format: uri
          description: >-
            URL HTTPS pública o firmada del archivo (hasta 15 MB). No se admiten
            URI de la Google Files API, URI `gs://`, nombres `files/...` ni URL
            de YouTube. Indica `data` o `uri`
        mime_type:
          type: string
          enum:
            - video/mp4
            - video/mpeg
            - video/mov
            - video/avi
            - video/webm
            - video/wmv
            - video/x-flv
            - video/3gpp
          description: >-
            Tipo MIME. Debe coincidir con el formato real del archivo; se
            rechazan tipos genéricos como `application/octet-stream`
        resolution:
          type: string
          enum:
            - low
            - medium
            - high
          description: >-
            Opcional. Resolución del contenido multimedia, que controla el uso
            de tokens y el nivel de detalle. `ultra_high` solo se aplica a
            imágenes
    DocumentContent:
      type: object
      required:
        - type
        - mime_type
      properties:
        type:
          type: string
          enum:
            - document
        data:
          type: string
          contentEncoding: base64
          description: >-
            Bytes del PDF codificados en base64 (hasta 50 MB). Indica `data` o
            `uri`
        uri:
          type: string
          format: uri
          description: >-
            URL HTTPS pública o firmada del archivo (hasta 15 MB). No se admiten
            URI de la Google Files API, URI `gs://`, nombres `files/...` ni URL
            de YouTube. Indica `data` o `uri`
        mime_type:
          type: string
          enum:
            - application/pdf
          description: >-
            Tipo MIME. Debe coincidir con el formato real del archivo; se
            rechazan tipos genéricos como `application/octet-stream`
    QuestionInstructions:
      description: >-
        La pregunta que se evalúa sobre `input`, escrita completa. Solo texto:
        una cadena, un bloque de texto o un array de bloques de texto
      oneOf:
        - type: string
          minLength: 1
        - $ref: '#/components/schemas/TextContent'
        - type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/TextContent'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Autentícate con tu API Key de EvoLink como token Bearer.


        **Obtener una API Key:**


        Visita la [página de gestión de API
        Keys](https://evolink.ai/dashboard/keys).


        **Cabecera de la solicitud:**

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````

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