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

# Decide una aprobación de herramienta

> Apruebe o deniegue una llamada de herramienta retenida como uno de sus aprobadores. Debe haber iniciado sesión usted mismo: se rechazan las claves de API y las llamadas en nombre de un usuario final. La decisión no ejecuta la herramienta. El llamador que hizo la solicitud tiene 24 horas para continuar su respuesta con una respuesta de aprobación que contenga la misma decisión, lo que ejecuta una llamada aprobada una vez. Repetir su propia decisión devuelve la aprobación sin cambios; una decisión tomada por otra persona, o una que difiera de la suya, responde 409 tool_approval_already_decided, y una aprobación fuera de plazo responde 409 tool_approval_expired.



## OpenAPI

````yaml https://apigw.mka1.com/speakeasy.json?language=es post /api/v1/llm/tool_approvals/{approval_id}/decision
openapi: 3.1.1
info:
  title: MKA1 API
  version: 1.1.0
  description: >-
    La API MKA1 es una API RESTful que proporciona acceso a la plataforma MKA1.
    Aprende cómo comenzar con la API y el SDK de TypeScript
    [aquí](https://mka1.apidocumentation.com/guides/getting-started).
  license:
    name: Propietario
servers:
  - url: https://apigw.mka1.com
    description: MKA1 API Gateway
  - url: /
    description: Relative server URL (configurable via SDK constructor)
security: []
tags:
  - name: Resource Authorization
    description: >-
      Gestiona permisos para recursos LLM. Crea recursos, otorga/revoca permisos
      y elimina recursos. Solo los propietarios de recursos pueden otorgar,
      revocar o eliminar permisos.
    x-displayName: Autorización de Recursos
  - name: Audit
    description: >-
      API de auditoría para propietarios y administradores de organizaciones.
      Rastrea una solicitud de extremo a extremo por su X-Request-ID:
      temporización de la API gateway, las respuestas que creó y sus
      invocaciones de modelo y llamadas a herramientas.
    x-displayName: Auditoría
  - name: Embeddings
    description: >-
      Puntos finales de la API de incrustación de texto para generar
      representaciones vectoriales del texto. Crea incrustaciones semánticas
      para búsqueda, agrupamiento y coincidencia de similitudes utilizando
      varios modelos de incrustación.
    x-displayName: Incrustaciones
  - name: Feedback
    description: >-
      API de retroalimentación del usuario para calificar y comentar sobre las
      completaciones de chat. Recopila calificaciones de pulgares arriba/abajo y
      comentarios detallados para mejorar las respuestas del modelo y rastrear
      la satisfacción del usuario.
    x-displayName: Retroalimentación
  - name: Images
    description: >-
      Puntos finales de la API de generación de imágenes para crear imágenes a
      partir de descripciones de texto. Genera imágenes con control sobre el
      tamaño, la calidad y el estilo.
    x-displayName: Imágenes
  - name: MCP Vault
    description: >-
      API de bóveda MCP para almacenar configuraciones de servidor MCP propiedad
      del usuario y credenciales encriptadas. Los agentes hacen referencia a los
      ID de la bóveda para que los secretos se resuelvan solo en el momento de
      la ejecución de la herramienta.
    x-displayName: Bóveda MCP
  - name: Speech
    description: >-
      Puntos finales de la API de voz para el procesamiento de audio. Convierte
      texto en habla natural (TTS) o transcribe el habla a texto (STT) en
      diferentes idiomas.
    x-displayName: Discurso
  - name: Usage
    description: >-
      API de seguimiento de uso y análisis para monitorear el consumo de tokens,
      la cantidad de solicitudes y el análisis de costos. Visualiza estadísticas
      detalladas por usuario, modelo y período de tiempo.
    x-displayName: Uso
  - name: Extract
    description: >-
      API de extracción de datos estructurados para extraer información de
      archivos. Define esquemas JSON para extraer datos estructurados de
      imágenes, PDFs y documentos. Soporta plantillas de esquemas reutilizables.
    x-displayName: Extracción
  - name: Text Classification
    description: >-
      API de clasificación de texto para categorizar texto en etiquetas
      predefinidas. Utilice modelos de IA para clasificar el contenido del texto
      para análisis de sentimientos, categorización de temas y moderación de
      contenido.
    x-displayName: Clasificación de Texto
  - name: Responses
    description: >-
      API de respuestas impulsada por agentes para crear agentes de IA con uso
      autónomo de herramientas. Crea asistentes conversacionales que pueden usar
      búsqueda web, operaciones con archivos, generación de imágenes, ejecución
      de código e integraciones MCP. Admite procesamiento en segundo plano,
      streaming y seguimiento de estado en tiempo real.
    x-displayName: Respuestas
  - name: Files
    description: >-
      API de gestión de archivos para cargar, almacenar y gestionar archivos con
      expiración automática e integración con S3. Carga archivos que se pueden
      usar con Asistentes, Almacenes Vectoriales y otras funciones. Los archivos
      se almacenan en S3 con metadatos rastreados en PostgreSQL. Soporta la
      limpieza automática de archivos expirados.
    x-displayName: Archivos
  - name: Vector Stores
    description: >-
      API de almacenamiento de vectores para almacenar y buscar documentos
      utilizando incrustaciones. Crea almacenes de vectores, sube archivos con
      fragmentación automática y generación de incrustaciones, y realiza
      búsquedas semánticas. Los archivos se procesan de forma asincrónica
      utilizando flujos de trabajo de Temporal para durabilidad. Soporta
      limpieza automática de almacenes caducados y LanceDB para almacenamiento
      eficiente de vectores.
    x-displayName: Almacenes de Vectores
  - name: Conversations
    description: >-
      API de gestión de conversaciones para almacenar y recuperar el estado de
      la conversación a través de llamadas a la API de respuesta. Crea
      conversaciones, añade elementos (mensajes de usuario, mensajes del
      asistente, mensajes del sistema) y mantiene el historial de la
      conversación. Soporta seguimiento de metadatos y gestión del estado del
      diálogo en múltiples turnos.
    x-displayName: Conversaciones
  - name: Guardrails
    description: >-
      API de salvaguardias de seguridad de IA para configurar la moderación de
      contenido y las políticas de seguridad. Configura listas de palabras
      prohibidas, detección de inyección de mensajes y prevención de filtración
      de mensajes del sistema. Las salvaguardias se aplican a todas las
      solicitudes de una cuenta y se pueden probar antes del despliegue.
    x-displayName: Barandillas
  - name: Tool Policy
    description: >-
      API de política de herramientas de la organización. Los administradores de
      la organización deniegan tipos de herramientas o requieren aprobación
      antes de que se ejecuten sus llamadas, para cada solicitud de Responses en
      la organización, incluidas las ejecuciones de agentes guardadas. La
      política anula lo que configuran las solicitudes y los agentes.
    x-displayName: Política de herramientas
  - name: Models
    description: >-
      API de listado de modelos para descubrir modelos disponibles. Devuelve IDs
      de modelos, propiedad y metadatos para todos los modelos registrados en la
      puerta de enlace.
    x-displayName: Modelos
  - name: Skills
    description: >-
      API de habilidades para gestionar paquetes de instrucciones y archivos
      versionados siguiendo el estándar de Habilidades del Agente. Crea,
      versiona y descarga paquetes de habilidades reutilizables que incluyen
      manifiestos SKILL.md para entornos de agentes.
    x-displayName: Habilidades
  - name: Chat Completions
    description: >-
      **Obsoleto: Usa la API de Respuestas (`/api/v1/llm/responses`) en su
      lugar.** Puntos finales de completación de chat con soporte para
      transmisión, llamadas a herramientas y múltiples proveedores.
    x-deprecated: true
    x-displayName: Completaciones de Chat
  - name: Batches
    x-displayName: Lotes
  - name: Evals
    x-displayName: Evaluaciones
  - name: Fine-Tuning
    x-displayName: Ajuste fino
  - name: Memory Stores
    x-displayName: Almacenes de memoria
  - name: Prompts
    x-displayName: Sugerencias
  - name: API Key
    x-displayName: Clave de API
  - name: OAuth
    x-displayName: OAuth
  - name: Session
    x-displayName: Sesión
  - name: Organization
    x-displayName: Organización
  - name: Cluster Admin
    x-displayName: Administrador de clúster
  - name: Sessions
    description: Crear, inspeccionar, acceder y terminar sesiones de sandbox.
    x-displayName: Sesiones
  - name: Browser
    description: >-
      Conéctate a las sesiones del navegador a través del proxy del puerto de la
      puerta de enlace. Las sesiones del navegador exponen un punto final del
      Protocolo de DevTools de Chrome en el puerto 9222.
    x-displayName: Navegador
  - name: Execution
    description: >-
      Ejecutar comandos de shell y código dentro de una sesión de sandbox
      existente.
    x-displayName: Ejecución
  - name: Workspace
    description: >-
      Inspeccionar el manifiesto del espacio de trabajo, transferir archivos o
      archivos comprimidos, y descargar artefactos generados.
    x-displayName: Espacio de trabajo
  - name: Sandbox Usage
    description: >-
      Agrega estadísticas de uso de sandbox entre sesiones, ejecución y
      operaciones del espacio de trabajo.
    x-displayName: Uso de Sandbox
  - name: Sandbox Pricing
    description: >-
      Gestión de administrador de clúster de la tarjeta de tarifas de cómputo
      del entorno aislado utilizada para el gasto presupuestado.
    x-displayName: Precios de Sandbox
  - name: Sandbox GitHub
    description: >-
      Conecta una cuenta de GitHub, clona sus repositorios en sesiones de
      sandbox y envía ramas y abre solicitudes de extracción desde una sesión.
      El token de GitHub permanece en el servicio de sandbox y nunca entra en
      una sesión.
    x-displayName: GitHub de pruebas
  - name: Sandbox Environments
    description: >-
      Guardar la configuración reutilizable de la sesión (repositorios,
      variables de entorno, acceso a la red y un script de configuración) y
      ejecutar el script de configuración en una sesión.
    x-displayName: Entornos de pruebas
  - name: Sandbox Connectors
    description: >-
      Conecta servidores MCP remotos (Linear, Notion, Sentry y otros) a tu
      cuenta para que las sesiones de Coding Harness iniciadas desde un entorno
      que los liste puedan llamar a sus herramientas. El servicio de sandbox
      conserva la credencial de cada conector y nunca la incluye en una sesión.
    x-displayName: Conectores de sandbox
  - name: Agents
    description: Crea y gestiona definiciones de agentes reutilizables.
    x-displayName: Agentes
  - name: Agent Versions
    description: >-
      Inspeccionar el historial de configuración de un agente y revertir a una
      versión anterior.
    x-displayName: Versiones de Agente
  - name: Agent Runs
    description: >-
      Ejecutar agentes guardados e inspeccionar los resultados de ejecución
      persistidos.
    x-displayName: Ejecuta Agentes
  - name: Agent Connectors
    description: >-
      Conecta agentes guardados a canales de mensajería externos como Telegram,
      incluyendo intercambio de texto, fotos y documentos compatibles.
    x-displayName: Conectores de agentes
  - name: Agent Schedules
    description: >-
      Crea y gestiona ejecuciones de agentes programadas o recurrentes
      guardadas.
    x-displayName: Horarios de Agentes
  - name: schema-4_other
    x-displayName: otro
  - name: Billing
    x-displayName: Facturación
  - name: Budgets
    x-displayName: Presupuestos
  - name: Settings
    x-displayName: Configuración
  - name: Compute Jobs
    x-displayName: Trabajos de computación
  - name: Compute Services
    x-displayName: Servicios de computación
  - name: Compute Catalog
    x-displayName: Catálogo de cómputo
  - name: Compute Volumes
    x-displayName: Calcular volúmenes
  - name: Compute Pricing
    x-displayName: Calcular precios
  - name: Compute Secrets
    x-displayName: Calcular secretos
  - name: Compute Usage
    x-displayName: Uso de cómputo
  - name: Compute Tenants
    x-displayName: Calcular inquilinos
  - description: Crear, listar, leer, actualizar y eliminar repositorios.
    name: Repositories
    x-displayName: Repositorios
  - name: Tracking Experiments
    description: Crear y consultar experimentos del inquilino.
    x-displayName: Seguimiento de experimentos
  - name: Tracking Runs
    description: Registrar y recuperar parámetros, métricas y etiquetas de ejecución.
    x-displayName: Seguimiento de ejecuciones
  - name: analytics.projects
    x-displayName: Proyectos
    description: Crear, listar, renombrar y archivar proyectos de análisis.
  - name: analytics.keys
    x-displayName: Capturar teclas
    description: Crear y revocar claves de proyecto para enviar eventos.
  - name: analytics
    x-displayName: Eventos
    description: Enviar eventos y consultar el número de eventos o visitantes únicos.
  - name: analytics.events
    x-displayName: Búsqueda de eventos
    description: >-
      Enumere los eventos individuales con sus propiedades, primero los más
      recientes.
  - name: analytics.visitors
    x-displayName: Búsqueda de visitantes
    description: >-
      Lista a los visitantes según su actividad más reciente, con las horas de
      primera y última vez que se les vio.
  - name: generators
    x-displayName: generadores
  - name: generations
    x-displayName: generaciones
  - name: formats
    x-displayName: formatos
  - description: >-
      Banderas, entornos, evaluación y el registro de auditoría. Las operaciones
      administrativas requieren un administrador del clúster; la evaluación usa
      una clave de evaluación específica del entorno.
    name: Feature Flags
    x-displayName: Funciones de bandera
  - name: Service Status
    description: >-
      Estado actual de cada servicio y el historial de incidentes de la región
      de esta implementación.
    x-displayName: Estado del servicio
  - name: Support Cases
    description: >-
      Abra y siga los casos de soporte. Los propietarios y administradores de la
      organización ven todos los casos de la organización; los demás miembros
      ven los casos que abrieron.
    x-displayName: Casos de soporte
paths:
  /api/v1/llm/tool_approvals/{approval_id}/decision:
    post:
      tags:
        - Tool Policy
      summary: Decide una aprobación de herramienta
      description: >-
        Apruebe o deniegue una llamada de herramienta retenida como uno de sus
        aprobadores. Debe haber iniciado sesión usted mismo: se rechazan las
        claves de API y las llamadas en nombre de un usuario final. La decisión
        no ejecuta la herramienta. El llamador que hizo la solicitud tiene 24
        horas para continuar su respuesta con una respuesta de aprobación que
        contenga la misma decisión, lo que ejecuta una llamada aprobada una vez.
        Repetir su propia decisión devuelve la aprobación sin cambios; una
        decisión tomada por otra persona, o una que difiera de la suya, responde
        409 tool_approval_already_decided, y una aprobación fuera de plazo
        responde 409 tool_approval_expired.
      operationId: decideToolApproval
      parameters:
        - name: approval_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 255
            description: >-
              El ID del elemento de solicitud de aprobación (mcpr_... o
              tapr_...).
          example: tapr_0f1e2d3c4b5a69788796a5b4c3d2e1f0
        - name: X-On-Behalf-Of
          in: header
          required: false
          schema:
            type: string
          description: Optional external end-user identifier forwarded by the API gateway.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ToolApprovalDecisionRequest'
            example:
              decision: approve
              comment: Read-only, fine to run.
      responses:
        '200':
          description: Está bien
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolApproval'
              example:
                object: tool_approval
                id: tapr_0f1e2d3c4b5a69788796a5b4c3d2e1f0
                kind: tool_approval_request
                status: approved
                tool_type: code_interpreter
                tool_name: code_interpreter
                server_label: null
                arguments:
                  code: print(open('report.csv').read())
                response_id: resp_7d1c9b6e5a4f4c2e9b8a7f6e5d4c3b2a
                agent_id: null
                requested_by:
                  user_id: user_2f6c1e
                  user_type: user
                  external_user_id: null
                  team_id: team_finance
                approver_user_ids:
                  - user_9a41b7
                  - user_c03d52
                decided_by_user_id: user_9a41b7
                comment: Read-only, fine to run.
                claimed: false
                created_at: '2026-11-10T09:30:00.000Z'
                expires_at: '2026-11-11T10:05:00.000Z'
                decided_at: '2026-11-10T10:05:00.000Z'
      security:
        - bearerAuth: []
      x-codeSamples:
        - lang: csharp
          label: CSharp (SDK)
          source: |-
            using MeetKai.MKA1;
            using MeetKai.MKA1.Types.Components;

            var sdk = new SDK(bearerAuth: "<YOUR_BEARER_TOKEN_HERE>");

            var res = await sdk.ToolPolicy.DecideToolApprovalAsync(
                approvalId: "tapr_0f1e2d3c4b5a69788796a5b4c3d2e1f0",
                body: new ToolApprovalDecisionRequest() {
                    Decision = ToolApprovalDecisionRequestDecision.Approve,
                    Comment = "Read-only, fine to run.",
                }
            );

            // handle response
        - lang: python
          label: Python (SDK)
          source: |-
            from meetkai_mka1 import SDK


            with SDK(
                bearer_auth="<YOUR_BEARER_TOKEN_HERE>",
            ) as sdk:

                res = sdk.tool_policy.decide_tool_approval(approval_id="tapr_0f1e2d3c4b5a69788796a5b4c3d2e1f0", decision="approve", comment="Read-only, fine to run.")

                # Handle response
                print(res)
        - lang: typescript
          label: Typescript (SDK)
          source: |-
            import { SDK } from "@meetkai/mka1";

            const sdk = new SDK({
              bearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
            });

            async function run() {
              const result = await sdk.toolPolicy.decideToolApproval({
                approvalId: "tapr_0f1e2d3c4b5a69788796a5b4c3d2e1f0",
                toolApprovalDecisionRequest: {
                  decision: "approve",
                  comment: "Read-only, fine to run.",
                },
              });

              console.log(result);
            }

            run();
        - lang: go
          label: Go (SDK)
          source: "package main\n\nimport(\n\t\"context\"\n\tmka1 \"github.com/MeetKai/mka1-sdks/go\"\n\t\"github.com/MeetKai/mka1-sdks/go/models/components\"\n\t\"log\"\n)\n\nfunc main() {\n    ctx := context.Background()\n\n    s := mka1.New(\n        mka1.WithSecurity(\"<YOUR_BEARER_TOKEN_HERE>\"),\n    )\n\n    res, err := s.ToolPolicy.DecideToolApproval(ctx, \"tapr_0f1e2d3c4b5a69788796a5b4c3d2e1f0\", components.ToolApprovalDecisionRequest{\n        Decision: components.ToolApprovalDecisionRequestDecisionApprove,\n        Comment: mka1.Pointer(\"Read-only, fine to run.\"),\n    }, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n    if res.ToolApproval != nil {\n        // handle response\n    }\n}"
components:
  schemas:
    ToolApprovalDecisionRequest:
      type: object
      properties:
        decision:
          enum:
            - approve
            - deny
          type: string
          description: >-
            approve permite que la continuación de quien llama ejecute la
            llamada; deny le permite solo registrar la denegación.
        comment:
          type: string
          maxLength: 2000
          description: >-
            ¿Por qué, mostrado al solicitante y registrado en el libro mayor de
            auditoría.
      required:
        - decision
    ToolApproval:
      type: object
      properties:
        object:
          const: tool_approval
        id:
          type: string
          description: >-
            El ID del elemento de la solicitud de aprobación en la salida de la
            respuesta (mcpr_... o tapr_...).
        kind:
          enum:
            - mcp_approval_request
            - tool_approval_request
          type: string
          description: >-
            El tipo del elemento de solicitud de aprobación:
            mcp_approval_request para una llamada MCP, tool_approval_request
            para una herramienta integrada.
        status:
          $ref: '#/components/schemas/ToolApprovalStatus'
        tool_type:
          type: string
          description: >-
            El tipo de la herramienta mantenida: mcp, o un tipo de herramienta
            integrado como web_search o code_interpreter.
        tool_name:
          type: string
          description: El nombre de la herramienta que el modelo llamó.
        server_label:
          anyOf:
            - type: string
            - type: 'null'
          description: 'Solo llamadas MCP: la etiqueta del servidor MCP.'
        arguments:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
          description: Los argumentos con los que se ejecuta la llamada si se aprueba.
        response_id:
          type: string
          description: La respuesta que se detuvo para esta aprobación.
        agent_id:
          anyOf:
            - type: string
            - type: 'null'
          description: El agente guardado para el que se ejecutó la solicitud, si lo hay.
        requested_by:
          $ref: '#/components/schemas/ToolApprovalRequester'
        approver_user_ids:
          type: array
          items:
            type: string
          description: >-
            Los usuarios a los que la política de herramientas de la
            organización nombra para decidir esta llamada. Vacío cuando el
            llamante decide.
        decided_by_user_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Quién decidió: ¿el aprobador, o el solicitante de una aprobación sin
            aprobadores?
        comment:
          anyOf:
            - type: string
            - type: 'null'
          description: El comentario o motivo dado junto con la decisión.
        claimed:
          type: boolean
          description: >-
            Si la continuación del llamador ha consumido la decisión. Una
            llamada aprobada se ejecuta solo cuando esto ocurre, y solo una vez.
        created_at:
          type: string
          format: date-time
          description: Cuando se realizó la llamada.
        expires_at:
          type: string
          format: date-time
          description: >-
            El plazo para el siguiente paso: la decisión mientras está
            pendiente, luego la continuación del llamante. Una decisión le da al
            llamante 24 horas.
        decided_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: Cuando se tomó la decisión.
      required:
        - object
        - id
        - kind
        - status
        - tool_type
        - tool_name
        - server_label
        - arguments
        - response_id
        - agent_id
        - requested_by
        - approver_user_ids
        - decided_by_user_id
        - comment
        - claimed
        - created_at
        - expires_at
        - decided_at
      title: Tool approval
      description: >-
        Una llamada de herramienta retenida para aprobación. Las aprobaciones
        que nombran aprobadores permanecen listadas durante 30 días después de
        que se deciden o caducan; las demás se eliminan en su fecha límite.
    ToolApprovalStatus:
      enum:
        - pending
        - approved
        - denied
        - expired
      type: string
      description: >-
        pendiente hasta que un aprobador decida, o, en el caso de una aprobación
        sin aprobadores, hasta que la continuación del llamador la responda.
        caducada cuando se superó el plazo sin una decisión.
    ToolApprovalRequester:
      type: object
      properties:
        user_id:
          type: string
          description: El usuario o la cuenta de servicio cuya solicitud fue retenida.
        user_type:
          type: string
          description: usuario o cuenta de servicio.
        external_user_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            El usuario final en cuyo nombre se realizó la solicitud, si lo
            hubiera.
        team_id:
          anyOf:
            - type: string
            - type: 'null'
          description: El equipo en el que se ejecutó la solicitud, si lo hubo.
      required:
        - user_id
        - user_type
        - external_user_id
        - team_id
      title: Tool approval requester
      description: >-
        Quién hizo la solicitud cuya llamada a herramienta fue retenida. Solo
        este llamador puede continuar la respuesta.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Send Authorization: Bearer <credential>, using an MKA1 API key for
        automation or an OAuth API access token for a signed-in application. Use
        a dynamic security callback to refresh OAuth access tokens. Browser
        session-only operations still require their declared cookie.

````

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