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

# DeepSeek V4 - API Responses

> - Llamada a los modelos DeepSeek V4 mediante el protocolo OpenAI Responses
- Admite `deepseek-v4-flash` (rápido y de uso general) y `deepseek-v4-pro` (razonamiento profundo)
- **Formas de entrada**: `input` puede ser texto plano o un arreglo de elementos de entrada (mensaje, llamada a función, resultado de función, razonamiento, registro de búsqueda)
- **Instrucciones de sistema**: se envían con `instructions` y equivalen a un mensaje system al principio
- **Modo de razonamiento**: se controla con `reasoning.effort`; el contenido de razonamiento se devuelve como elemento de salida `reasoning`
- **Salida en streaming**: admite eventos SSE semánticos y termina con `response.completed`; **no se envía `[DONE]`**
- **Llamada a herramientas**: admite Function Calling y la búsqueda web integrada `web_search`
- **Salida estructurada**: se habilita con `text.format` como objeto JSON o JSON Schema
- **Caché de contexto**: las solicitudes que comparten prefijo aciertan la caché automáticamente y reducen mucho el coste de entrada

**Eventos de streaming**: `response.created`, `response.output_item.added`, `response.reasoning_text.delta`, `response.output_text.delta`; los eventos finales son `response.completed` / `response.incomplete` / `response.failed`. Cada evento incluye un `sequence_number` para ordenarlos.

**Campos sin efecto**: los siguientes campos de OpenAI pueden enviarse sin error, pero no producen ningún efecto real.

| Campo | Comportamiento |
| --- | --- |
| `store` | Siempre `false`, las respuestas no se almacenan |
| `previous_response_id` | Siempre `null`, no se admite continuar una conversación |
| `conversation` | No admitido |
| `background` / `metadata` / `include` | Ignorado |
| `prompt` / `truncation` / `service_tier` | Ignorado |
| `safety_identifier` / `context_management` | Ignorado |
| `stream_options` | Ignorado |
| `parallel_tool_calls` | Ignorado, las llamadas paralelas a herramientas están siempre activas |
| `max_tool_calls` | Ignorado |
| Herramientas `file_search` / `code_interpreter` / `mcp` | Ignorado |

**Otras limitaciones**:
- Las herramientas personalizadas (`type: custom`) solo admiten `apply_patch`
- La herramienta `web_search` ignora `search_context_size` y `user_location`
- Los bloques de contenido de imagen y archivo se convierten en marcadores de posición; DeepSeek V4 no es un modelo de visión
- Si la entrada supera la ventana de contexto se devuelve 400 directamente, sin truncado automático

<Note>
  **BaseURL**: La BaseURL predeterminada es `https://direct.evolink.ai`, que ofrece mejor compatibilidad con modelos de texto y admite conexiones persistentes. `https://api.evolink.ai` es el endpoint principal para servicios multimodales y actúa como dirección de respaldo para los modelos de texto.
</Note>


## OpenAPI

````yaml es/api-manual/language-series/deepseek-v4/deepseek-v4-responses.json POST /v1/responses
openapi: 3.1.0
info:
  title: DeepSeek V4 documentación completa de parámetros (API Responses)
  description: >-
    Referencia completa de la API del endpoint Responses de la serie DeepSeek V4
    (`deepseek-v4-flash` / `deepseek-v4-pro`).


    **Capacidades del modelo**:

    - Longitud de contexto: **1.000.000 tokens** (1M)

    - Salida máxima: **384.000 tokens** (384K)

    - Modo de razonamiento: se controla con `reasoning.effort`;
    `deepseek-v4-pro` destaca en razonamiento complejo

    - Caché de contexto en disco: los aciertos son automáticos y los aciertos y
    fallos se facturan por separado

    - Búsqueda web integrada: la herramienta `web_search` se ejecuta en el
    servidor, sin intervención del cliente


    **Nota sobre el protocolo**: este endpoint es totalmente compatible con el
    protocolo de la API OpenAI Responses. El cuerpo de la solicitud se conserva
    tal cual, sin reordenar ni eliminar campos, de modo que los campos de
    extensión no declarados y el prefijo de caché no se ven afectados.


    **Sin estado**: DeepSeek Responses no almacena ninguna sesión; en
    conversaciones de varios turnos el cliente debe enviar el historial completo
    en cada solicitud.


    **Tarifas (UC/1K tokens, unidad interna de EvoLink)**:

    | Modelo | Entrada con acierto de caché | Entrada sin acierto de caché |
    Salida |

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

    | deepseek-v4-flash | 2 | 100 | 200 |

    | deepseek-v4-pro | 3 | 300 | 600 |
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://direct.evolink.ai
    description: Producción (recomendado)
  - url: https://api.evolink.ai
    description: URL alternativa
security:
  - bearerAuth: []
tags:
  - name: Generación de conversación
    description: Interfaces relacionadas con la generación de conversación de IA
paths:
  /v1/responses:
    post:
      tags:
        - Generación de conversación
      summary: API Responses de DeepSeek V4 (compatible con OpenAI)
      description: >-
        - Llamada a los modelos DeepSeek V4 mediante el protocolo OpenAI
        Responses

        - Admite `deepseek-v4-flash` (rápido y de uso general) y
        `deepseek-v4-pro` (razonamiento profundo)

        - **Formas de entrada**: `input` puede ser texto plano o un arreglo de
        elementos de entrada (mensaje, llamada a función, resultado de función,
        razonamiento, registro de búsqueda)

        - **Instrucciones de sistema**: se envían con `instructions` y equivalen
        a un mensaje system al principio

        - **Modo de razonamiento**: se controla con `reasoning.effort`; el
        contenido de razonamiento se devuelve como elemento de salida
        `reasoning`

        - **Salida en streaming**: admite eventos SSE semánticos y termina con
        `response.completed`; **no se envía `[DONE]`**

        - **Llamada a herramientas**: admite Function Calling y la búsqueda web
        integrada `web_search`

        - **Salida estructurada**: se habilita con `text.format` como objeto
        JSON o JSON Schema

        - **Caché de contexto**: las solicitudes que comparten prefijo aciertan
        la caché automáticamente y reducen mucho el coste de entrada


        **Eventos de streaming**: `response.created`,
        `response.output_item.added`, `response.reasoning_text.delta`,
        `response.output_text.delta`; los eventos finales son
        `response.completed` / `response.incomplete` / `response.failed`. Cada
        evento incluye un `sequence_number` para ordenarlos.


        **Campos sin efecto**: los siguientes campos de OpenAI pueden enviarse
        sin error, pero no producen ningún efecto real.


        | Campo | Comportamiento |

        | --- | --- |

        | `store` | Siempre `false`, las respuestas no se almacenan |

        | `previous_response_id` | Siempre `null`, no se admite continuar una
        conversación |

        | `conversation` | No admitido |

        | `background` / `metadata` / `include` | Ignorado |

        | `prompt` / `truncation` / `service_tier` | Ignorado |

        | `safety_identifier` / `context_management` | Ignorado |

        | `stream_options` | Ignorado |

        | `parallel_tool_calls` | Ignorado, las llamadas paralelas a
        herramientas están siempre activas |

        | `max_tool_calls` | Ignorado |

        | Herramientas `file_search` / `code_interpreter` / `mcp` | Ignorado |


        **Otras limitaciones**:

        - Las herramientas personalizadas (`type: custom`) solo admiten
        `apply_patch`

        - La herramienta `web_search` ignora `search_context_size` y
        `user_location`

        - Los bloques de contenido de imagen y archivo se convierten en
        marcadores de posición; DeepSeek V4 no es un modelo de visión

        - Si la entrada supera la ventana de contexto se devuelve 400
        directamente, sin truncado automático
      operationId: createResponseDeepSeekV4
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResponsesRequest'
            examples:
              simple_text:
                summary: Conversación de texto de un turno (Flash)
                value:
                  model: deepseek-v4-flash
                  input: Presenta Hangzhou en una sola frase.
              with_instructions:
                summary: Uso de instrucciones de sistema
                value:
                  model: deepseek-v4-flash
                  instructions: >-
                    Eres un redactor técnico riguroso. Mantén las respuestas
                    concisas.
                  input: Explica qué es el almacenamiento en caché de contexto.
              multi_turn:
                summary: >-
                  Conversación de varios turnos (arreglo de elementos de
                  entrada)
                value:
                  model: deepseek-v4-flash
                  input:
                    - type: message
                      role: user
                      content: Propón tres nombres de producto.
                    - type: message
                      role: assistant
                      content: Nubalto, Luceroalba, Vientopluma.
                    - type: message
                      role: user
                      content: Dame cinco sinónimos del segundo.
              reasoning_effort:
                summary: Modelo Pro con esfuerzo de razonamiento alto
                value:
                  model: deepseek-v4-pro
                  input: >-
                    Una piscina tiene una tubería de entrada que la llena en 3
                    horas y una de salida que la vacía en 5 horas. ¿Cuánto tarda
                    en llenarse si ambas están abiertas a la vez? Muestra el
                    razonamiento.
                  reasoning:
                    effort: high
              disable_thinking:
                summary: Razonamiento desactivado (solo respuesta directa)
                value:
                  model: deepseek-v4-flash
                  input: >-
                    ¿Cuánto tarda aproximadamente el tren de alta velocidad de
                    Pekín a Shanghái?
                  reasoning:
                    effort: none
              json_schema:
                summary: Salida estructurada (JSON Schema)
                value:
                  model: deepseek-v4-flash
                  input: >-
                    Extrae la persona y la ciudad de esta frase: Zhang Wei
                    viajará por trabajo a Chengdu la próxima semana.
                  text:
                    format:
                      type: json_schema
                      name: extraction
                      schema:
                        type: object
                        properties:
                          person:
                            type: string
                          city:
                            type: string
                        required:
                          - person
                          - city
              function_calling:
                summary: Llamada a herramienta con Function Calling
                value:
                  model: deepseek-v4-flash
                  input: ¿Qué tiempo hace ahora en Hangzhou?
                  tools:
                    - type: function
                      name: get_weather
                      description: >-
                        Consulta el tiempo en tiempo real de una ciudad
                        determinada
                      parameters:
                        type: object
                        properties:
                          city:
                            type: string
                            description: Nombre de la ciudad
                        required:
                          - city
                  tool_choice: auto
              web_search:
                summary: Búsqueda web integrada (ejecutada en el servidor)
                value:
                  model: deepseek-v4-flash
                  input: >-
                    Resume las noticias importantes de esta semana en el campo
                    de la inteligencia artificial.
                  tools:
                    - type: web_search
              streaming:
                summary: Salida en streaming
                value:
                  model: deepseek-v4-flash
                  input: Escribe un poema breve sobre el otoño.
                  stream: true
      responses:
        '200':
          description: Generación correcta
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponsesResponse'
              example:
                id: resp_9f2c1a4b8e7d
                object: response
                created_at: 1755000000
                status: completed
                model: deepseek-v4-flash
                output:
                  - id: rs_2b7f
                    type: reasoning
                    summary: []
                    content:
                      - type: reasoning_text
                        text: >-
                          El usuario quiere una presentación de una frase que
                          cubra tanto la geografía como la cultura.
                  - id: msg_5d1a
                    type: message
                    role: assistant
                    status: completed
                    content:
                      - type: output_text
                        text: >-
                          Hangzhou es la capital de la provincia de Zhejiang,
                          conocida por el Lago del Oeste y su economía digital.
                        annotations: []
                error: null
                incomplete_details: null
                usage:
                  input_tokens: 694
                  input_tokens_details:
                    cached_tokens: 640
                  output_tokens: 20
                  output_tokens_details:
                    reasoning_tokens: 10
                  total_tokens: 714
        '400':
          description: Parámetros de solicitud inválidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 400
                  message: Invalid request parameters
                  type: invalid_request_error
        '401':
          description: No autenticado, token inválido o expirado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 401
                  message: Invalid authentication credentials
                  type: authentication_error
        '402':
          description: Cuota insuficiente, se requiere recarga
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 402
                  message: Insufficient quota
                  type: insufficient_quota
        '403':
          description: Sin permiso para acceder al modelo
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 403
                  message: Model access denied
                  type: permission_error
        '404':
          description: Recurso no encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 404
                  message: Model not found
                  type: not_found_error
        '413':
          description: Cuerpo de la solicitud demasiado grande
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 413
                  message: Request entity too large
                  type: invalid_request_error
        '429':
          description: Límite de frecuencia de solicitudes excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 429
                  message: Rate limit exceeded
                  type: rate_limit_error
        '500':
          description: Error interno del servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 500
                  message: Internal server error
                  type: server_error
        '502':
          description: Error de puerta de enlace
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 502
                  message: Bad gateway
                  type: server_error
        '503':
          description: Servicio temporalmente no disponible
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: 503
                  message: Service temporarily unavailable
                  type: server_error
components:
  schemas:
    ResponsesRequest:
      type: object
      required:
        - model
      properties:
        model:
          type: string
          description: >-
            ID del modelo


            - `deepseek-v4-flash`: rápido y de uso general, adecuado para
            conversación cotidiana, resumen y extracción

            - `deepseek-v4-pro`: razonamiento profundo, adecuado para
            matemáticas complejas, código y planificación en varios pasos
          enum:
            - deepseek-v4-flash
            - deepseek-v4-pro
          default: deepseek-v4-flash
          example: deepseek-v4-flash
        input:
          type:
            - string
            - array
          description: >-
            Entrada del modelo. Debe proporcionarse al menos uno de `input` e
            `instructions`.


            - **Forma de cadena**: todo el texto se trata como un único mensaje
            `user`

            - **Forma de arreglo**: lista de elementos de entrada que admite
            cinco tipos: `message`, `function_call`, `function_call_output`,
            `reasoning` y `web_search_call`


            **Conversaciones de varios turnos**: el endpoint no tiene estado,
            por lo que continuar una conversación obliga a incluir el historial
            completo en el arreglo.
          items:
            $ref: '#/components/schemas/InputItem'
          example: Presenta Hangzhou en una sola frase.
        instructions:
          type: string
          description: >-
            Instrucciones a nivel de sistema, equivalentes a un mensaje system
            insertado al principio; sirven para fijar el rol, el tono y las
            restricciones de salida.
          example: Eres un redactor técnico riguroso. Mantén las respuestas concisas.
        stream:
          type: boolean
          description: >-
            Si la respuesta se devuelve en streaming


            - `false` (predeterminado): devuelve el objeto de respuesta completo
            de una vez

            - `true`: envía eventos SSE semánticos; el evento final es
            `response.completed` / `response.incomplete` / `response.failed`, y
            **no se envía `[DONE]`**
          default: false
          example: false
        max_output_tokens:
          type: integer
          description: >-
            Número máximo de tokens de salida de esta generación (incluidos los
            tokens de razonamiento). Rango de 1 a 393216 (384K). Si se deja
            vacío, lo decide el modelo.
          minimum: 1
          maximum: 393216
          example: 4096
        temperature:
          type: number
          description: >-
            Temperatura de muestreo; cuanto mayor sea, más aleatoria será la
            salida. **No tiene efecto en modo de razonamiento.**
          minimum: 0
          maximum: 2
          default: 1
          example: 1
        top_p:
          type: number
          description: >-
            Umbral de muestreo por núcleo; se recomienda ajustar solo este o
            `temperature`. **No tiene efecto en modo de razonamiento.**
          maximum: 1
          default: 1
          example: 1
        top_logprobs:
          type: integer
          description: >-
            Devuelve en cada posición los tokens candidatos más probables y sus
            probabilidades logarítmicas.
          minimum: 0
          maximum: 20
          example: 0
        reasoning:
          type: object
          description: >-
            Configuración del modo de razonamiento. DeepSeek V4 activa el
            razonamiento de forma predeterminada; el contenido de razonamiento
            se devuelve como elemento de salida `reasoning` y sus tokens cuentan
            como salida y se facturan a la tarifa de salida.
          properties:
            effort:
              type: string
              description: >-
                Esfuerzo de razonamiento


                - `none`: razonamiento desactivado, responde directamente

                - `minimal` / `low` / `medium`: esfuerzo bajo

                - `high` (predeterminado): razonamiento profundo habitual

                - `xhigh` / `max`: esfuerzo máximo; el tiempo y los tokens de
                salida aumentan notablemente
              enum:
                - none
                - minimal
                - low
                - medium
                - high
                - xhigh
                - max
              default: high
              example: high
            max_output_tokens:
              type:
                - integer
                - 'null'
              description: >-
                Límite superior de tokens de salida durante la fase de
                razonamiento; si se deja vacío no hay límite adicional.
            summary:
              type: string
              description: >-
                Se puede enviar, pero no se genera ningún resumen de
                razonamiento, por lo que el campo no tiene efecto.
        text:
          type: object
          description: Configuración del formato de salida de texto.
          properties:
            format:
              type: object
              description: >-
                Formato de salida


                - `text` (predeterminado): texto libre

                - `json_object`: emite un objeto JSON válido; **el prompt debe
                mencionar JSON**

                - `json_schema`: sigue el JSON Schema indicado; `name` y
                `schema` son ambos obligatorios
              properties:
                type:
                  type: string
                  enum:
                    - text
                    - json_object
                    - json_schema
                  default: text
                  description: Tipo de formato de salida
                name:
                  type: string
                  description: Nombre del esquema; obligatorio en el modo `json_schema`
                schema:
                  type: object
                  description: >-
                    Definición del JSON Schema; obligatoria en el modo
                    `json_schema`
                strict:
                  type: boolean
                  description: Si se debe seguir el esquema de forma estricta
        tools:
          type: array
          description: >-
            Lista de herramientas que el modelo puede invocar. Las herramientas
            de tipo función las ejecuta el cliente, que devuelve el resultado
            como `function_call_output`; `web_search` se ejecuta directamente en
            el servidor, sin intervención del cliente.
          items:
            $ref: '#/components/schemas/Tool'
        tool_choice:
          type:
            - string
            - object
          description: >-
            Estrategia de llamada a herramientas


            - `none`: prohíbe llamar herramientas

            - `auto` (predeterminado): lo decide el modelo

            - `required`: debe llamarse al menos una herramienta

            - `{"type": "function", "name": "get_weather"}`: fuerza la llamada a
            una función concreta

            - `{"type": "web_search"}`: fuerza una búsqueda web
          example: auto
    ResponsesResponse:
      type: object
      description: Objeto de respuesta del endpoint Responses.
      properties:
        id:
          type: string
          description: Identificador único de esta respuesta
          example: resp_9f2c1a4b8e7d
        object:
          type: string
          description: Tipo de objeto, siempre `response`
          example: response
        created_at:
          type: integer
          description: Fecha de creación como marca de tiempo Unix (segundos)
          example: 1755000000
        status:
          type: string
          description: >-
            Estado de la respuesta


            - `completed`: finalizada correctamente

            - `in_progress`: en proceso de generación

            - `incomplete`: truncada, por ejemplo por longitud; consulta
            `incomplete_details`

            - `failed`: la generación falló; consulta `error`
          enum:
            - in_progress
            - completed
            - incomplete
            - failed
          example: completed
        model:
          type: string
          description: ID del modelo que realmente generó esta respuesta
          example: deepseek-v4-flash
        output:
          type: array
          description: >-
            Lista de elementos de salida en orden de generación. Campos por
            tipo:


            - `reasoning`: el proceso de razonamiento, con `id`, `status`,
            `content` (lista de bloques `reasoning_text`) y `summary`

            - `message`: la respuesta final, con `id`, `status`, `role` y
            `content` (lista de bloques `output_text`)

            - `function_call`: una llamada a función del modelo, con `id`,
            `status`, `call_id`, `name` y `arguments`; el cliente la ejecuta y
            devuelve el resultado como `function_call_output`

            - `web_search_call`: un registro de búsqueda web ejecutada en el
            servidor, con `id`, `status` y `action` (que describe la búsqueda
            realizada)
          items:
            type: object
        error:
          type:
            - object
            - 'null'
          description: Motivo del fallo; `null` si tuvo éxito
        incomplete_details:
          type:
            - object
            - 'null'
          description: Motivo del truncado; `null` si no se truncó
        usage:
          $ref: '#/components/schemas/Usage'
    ErrorResponse:
      type: object
      description: Respuesta de error
      properties:
        error:
          type: object
          properties:
            code:
              type: integer
              description: Código de estado HTTP
              example: 400
            message:
              type: string
              description: Descripción del error
              example: Invalid request parameters
            type:
              type: string
              description: Tipo de error
              example: invalid_request_error
    InputItem:
      type: object
      title: Elemento de entrada
      description: Un único elemento del arreglo `input`. `type` determina su significado.
      required:
        - type
      properties:
        type:
          type: string
          description: |-
            Tipo de elemento de entrada

            - `message`: un mensaje de conversación
            - `function_call`: una llamada a función emitida antes por el modelo
            - `function_call_output`: el resultado de ejecutar una función
            - `reasoning`: contenido de razonamiento anterior
            - `web_search_call`: un registro de búsqueda web anterior
          enum:
            - message
            - function_call
            - function_call_output
            - reasoning
            - web_search_call
          example: message
        role:
          type: string
          description: >-
            Rol del mensaje, se usa solo con `type: message`. `developer` se
            trata como `system`.
          enum:
            - user
            - assistant
            - system
            - developer
          example: user
        content:
          type:
            - string
            - array
          description: >-
            Contenido del mensaje, se usa solo con `type: message`. Puede ser
            texto plano o un arreglo de bloques de contenido; el tipo de bloque
            del lado de entrada es `input_text`. **Los bloques de imagen y
            archivo como `input_image` no provocan error, pero se sustituyen por
            texto de marcador de posición**: DeepSeek V4 no tiene capacidad
            visual.
          example: Presenta Hangzhou en una sola frase.
        call_id:
          type: string
          description: >-
            Identificador de la llamada a función; `function_call` y
            `function_call_output` se emparejan mediante él.
        name:
          type: string
          description: >-
            Nombre de la función invocada, se usa solo con `type:
            function_call`.
        arguments:
          type: string
          description: >-
            Argumentos de la llamada a función como cadena JSON, se usan solo
            con `type: function_call`.
        output:
          type: string
          description: >-
            Resultado de la ejecución de la función, se usa solo con `type:
            function_call_output`.
    Tool:
      type: object
      title: Definición de herramienta
      required:
        - type
      properties:
        type:
          type: string
          description: >-
            Tipo de herramienta


            - `function`: una función personalizada ejecutada por el cliente

            - `web_search` / `web_search_2025_08_26`: búsqueda web ejecutada en
            el servidor; se ignoran `search_context_size` y `user_location`

            - `custom`: solo `apply_patch`


            `file_search`, `code_interpreter` y `mcp` se ignoran.
          enum:
            - function
            - web_search
            - web_search_2025_08_26
            - custom
          example: function
        name:
          type: string
          description: >-
            Nombre de la herramienta, de hasta 128 caracteres, limitado a
            letras, dígitos, `-` y `_`, y único dentro de una solicitud.
          maxLength: 128
          example: get_weather
        description:
          type: string
          description: >-
            Descripción del propósito de la herramienta; una descripción clara
            ayuda al modelo a decidir cuándo invocarla.
          example: Consulta el tiempo en tiempo real de una ciudad determinada
        parameters:
          type: object
          description: Definición de parámetros en formato JSON Schema.
          example:
            type: object
            properties:
              city:
                type: string
                description: Nombre de la ciudad
            required:
              - city
    Usage:
      type: object
      description: Estadísticas de uso de tokens (con desglose de caché y razonamiento)
      properties:
        input_tokens:
          type: integer
          description: Total de tokens de entrada (incluidos aciertos y fallos de caché)
          example: 694
        input_tokens_details:
          type: object
          description: Desglose de tokens de entrada
          properties:
            cached_tokens:
              type: integer
              description: >-
                Número de tokens que acertaron la caché de contexto


                **Nota**: la parte con acierto se factura a la **tarifa de
                acierto de caché** (Flash 2 UC/1K, Pro 3 UC/1K); la parte sin
                acierto equivale a `input_tokens - cached_tokens` y se factura a
                la **tarifa de entrada estándar** (Flash 100 UC/1K, Pro 300
                UC/1K)
              example: 640
        output_tokens:
          type: integer
          description: Número de tokens de salida (incluida la parte de razonamiento)
          example: 20
        output_tokens_details:
          type: object
          description: Desglose de tokens de salida
          properties:
            reasoning_tokens:
              type: integer
              description: >-
                Número de tokens de razonamiento producidos por el modo de
                razonamiento (se cuentan como salida y se facturan a la tarifa
                de salida)
              example: 10
        total_tokens:
          type: integer
          description: Total de tokens = input_tokens + output_tokens
          example: 714
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ##Todas las interfaces requieren autenticación mediante Bearer Token##


        **Obtención de la API Key**:


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


        **Al usarla, añádela en la cabecera de la solicitud**:

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````