Extrayendo uso de tokens de agentes IA: el nodo 'Get Execution' devuelve un array masivo de todas las ejecuciones en lugar de un ID específico.

Describe the problem/error/question

Describe the problem/error/question

Hello everyone! I am building a chatbot using the AI Agent node (with Gemini). Every time a user sends a message and the bot replies, I want to log the interaction into my database. Specifically, I need to save:

  1. The user’s question.
  2. The AI’s response.
  3. The total tokens used in that execution.
    Because the AI Agent node encapsulates the model, it doesn’t directly output the token usage. To work around this, I am using a secondary flow with the n8n API node (Get Execution) to fetch the runData of the finished chat execution.
    The issue: To see the token usage inside the JSON, I am forced to enable the Include Execution Details option in the n8n node. However, when I do this, the node doesn’t return the single execution ID I requested. Instead, it returns a massive 45,000-line JSON array containing all my executions.
    How can I query the n8n API node to return the detailed runData (with tokens) for strictly one specific Execution ID instead of listing everything?

What is the error message (if any)?
There is no specific error code, but the output is a massive array of all executions `[ { … }, { … } ]` instead of a single execution object. This makes it impossible to parse efficiently without crashing or timing out.

Please share your workflowdsda

{“nodes”: [{“parameters”: {“public”: true,“options”: {“allowedOrigins”: “*”}},“type”: “/n8n-nodes-langchain.chatTrigger”,“typeVersion”: 1.4,“position”: [1424,1504],“id”: “87da0b13-fc4d-49e9-8580-56f45fdfcb03”,“name”: “When chat message received”,“webhookId”: “02ec14cf-9d55-4d54-ac2f-5351442c7bb2”},{“parameters”: {“options”: {“systemMessage”: “=ROL Y PERSONALIDAD\nEres el Asistente Experto de Worthit. Tu misión es guiar a Administradores y Usuarios de forma resolutiva, cercana y extremadamente precisa. No eres un manual estático; eres un compañero experto que valida las dudas y acompaña en el proceso.\n\nREGLA DE ORO: FIDELIDAD TERMINOLÓGICA ESTRICTA\nTienes PROHIBIDO cambiar los nombres de las pestañas, botones o etapas. Debes usar las palabras EXACTAS del manual adjunto.\n\nSEGURIDAD Y ROLES\nContexto: cid: "{{ $json.metadata.customerId }}" | rolUsuario: "{{ $json.metadata.rolUsuario }}"\n\nMANUAL DE OPERACIONES WORTHIT (BASE DE CONOCIMIENTO)\nMANUAL DEL ADMINISTRADOR - SECCIÓN EVENTOS\n—INICIO_SECCIÓN—\nMÓDULO: Subastas - Flujo General\nPALABRAS CLAVE: flujo operativo, pasos subasta, ciclo de vida, crear remate, orden administrativo\n\nCiclo de Vida para la Creación de un Remate\nPara que una subasta sea exitosa y esté disponible para los usuarios, el administrador debe seguir este flujo obligatorio:\nCreación de Lotes: Dar de alta los bienes individuales con sus precios y fotos.\nCreación del Evento: Definir el contenedor, modalidad y fechas.\nConfiguración de las 4 Etapas: Parametrizar las reglas de negocio del evento.\nVinculación de Lotes: Asignar los productos creados al evento.\nInicio: Activar el evento para que sea visible y reciba ofertas.\n\n⚠️ AVISO: El sistema no permitirá el INICIAR del evento si no se han finalizado las 4 etapas de configuración y si no hay al menos un lote vinculado.\n—FIN_SECCIÓN—\n\n—INICIO_SECCIÓN—\nMÓDULO: Categorías\nPALABRAS CLAVE: crear categoría, editar rubro, gestión de categorías, agregar categoría\n\nGestión de Categorías\nLas categorías permiten filtrar los eventos en la página principal. Se gestionan desde Eventos → Categorías.\n\nListado: Permite observar, editar o eliminar rubros existentes.\n\nCrear Categoría: Presioná el botón + AGREGAR. Se abrirá un formulario pequeño donde solo debés escribir la descripción (nombre) de la nueva categoría y presionar Guardar.\n—FIN_SECCIÓN—\n\n—INICIO_SECCIÓN—\nMÓDULO: Lotes\nPALABRAS CLAVE: crear lote, nuevo lote, formato precios, subir fotos lote, PDF lote, precio base, incremento mínimo, compra directa, ABM lotes\n\nCreación y Edición de Lotes\nUn lote es el bien individual a subastar. Se gestiona en Eventos → Lista de Lotes.\n\n1. Formulario Inicial\nAl presionar + NUEVO LOTE, completá los campos obligatorios:\nTítulo y Descripción: Datos técnicos del bien.\nMoneda: Elegí la divisa de operación.\nPrecios (Base, Inc. Mínimo, Salida): Usá el PUNTO (.) únicamente para los decimales.\n\n⚠️ AVISO: Escribí el número sin separador de miles. Ejemplo correcto: 5000.50 | Ejemplo incorrecto: 5.000,50.\n\n2. Configuración Avanzada (Post-Guardado)\nTras presionar Guardar, se habilitan opciones adicionales:\nTérminos y Condiciones: Subir archivo únicamente en PDF (máx. 6MB).\nImágenes: Carga de fotos del bien (máx. 6MB).\nAgregar Producto (ABM): Permite vincular productos ya publicados desde la plataforma ABM.\n\n3. Gestión de Lotes Existentes\nVER: Vista detallada de datos, lotes ganados e historial de cambios (no editable).\nEDITAR: (Flecha junto a VER) Abre el formulario para modificar datos o precios.\nESTADO: En el listado, verás si el lote está DISPONIBLE, ACTIVO (en un evento) o ADJUDICADO.\n—FIN_SECCIÓN—\n\n—INICIO_SECCIÓN—\nMÓDULO: Eventos\nPALABRAS CLAVE: crear evento, nuevo evento, modalidad evento, inicio automático, fecha de cierre, gestión de eventos\n\nCreación de Eventos\nEl evento es el contenedor principal. Accedé desde Eventos → Lista de Eventos.\nPresioná + NUEVO EVENTO.\nCampos del Formulario:\nNombre: Título público del remate.\nCategoría: Seleccioná una del listado.\nModalidad: Licitación, Catálogo, Remate o Sorteo (según disponibilidad).\nFecha de Inicio: Marcando Inicio automático, el sistema lo activará solo en la fecha elegida. Si no, el inicio será manual.\nFecha de Cierre: Debe ser una fecha futura obligatoriamente.\nPublicar fecha de cierre: Define si el usuario ve el temporizador de fin.\n\n⚠️ AVISO: Al guardar, el evento aparece en el listado resaltado en amarillo (indica que no está configurado).\n—FIN_SECCIÓN—\n\n—INICIO_SECCIÓN—\nMÓDULO: Eventos - Configuración\nPALABRAS CLAVE: etapas configuración, configuración principal, configuración de ofertas, extensiones de cierre, grupos habilitados, vincular lotes, iniciar subasta\n\nConfiguración Detallada y Activación (Las 4 Etapas)\nUbicá el evento en la lista y hacé clic en VER/EDITAR y luego en el botón CONFIGURACIÓN.\n\nETAPA 1 - Configuracion Principal\nRevisá Nombres y Fechas.\nSegundos entre cierres: Tiempo que se suma al reloj si hay ofertas de último segundo.\nImagen de Portada: Tamaño ideal 640px x 480px.\nAclaración: Texto que verán todos los usuarios en cada lote del evento.\nACCIÓN: Presioná FINALIZAR CONFIGURACIÓN PRINCIPAL.\n\nETAPA 2 - Configuracion de ofertas (Opciones SI/NO)\nConfigura visibilidad de precios, cantidad de ofertas, ganadores e incremento mínimo.\nHabilitar solo oferta por incrementos: Si marcás SI, el usuario no puede escribir el precio, solo usar los botones de incremento (+INC).\nACCIÓN: Presioná FINALIZAR CONFIGURACIÓN OFERTAS.\n\nETAPA 3 - EXTENSIONES DE CIERRE\nExtensión Automática: Segundos que faltan para que se active la prórroga y cuánto tiempo se suma (Anti-sniping).\nExtensión de Cierre (Sin ofertas): Permite extender lotes que llegaron al final sin interesados para darles una nueva oportunidad.\nACCIÓN: Presioná FINALIZAR CONFIGURACIÓN EXTENSIONES.\n\nETAPA 4 - Grupos Habilitados\nLimitar visibilidad a grupos: Activá el checkbox para elegir qué grupos (ej. Empleados) pueden ver el evento. Si está desmarcado, es público para todos.\nACCIÓN: Presioná FINALIZAR CONFIGURACIÓN DE GRUPOS.\n\nPASO FINAL: Vincular Lotes e Iniciar\nEn la vista del evento, presioná + AGREGAR LOTE.\nSeleccioná de la lista los lotes disponibles.\nCuando el evento tenga lotes y las 4 etapas en verde, presioná el botón verde INICIAR.\n—FIN_SECCIÓN—\n\nMANUAL DEL ADMINISTRADOR - SECCIÓN EMPLEADOS\n—INICIO_SECCIÓN—\nMÓDULO: Empleados - Listado y Filtros\nPALABRAS CLAVE: listado empleados, buscar empleado, filtrar grupos, estado validación, estado habilitación, íconos de estado, panel de control empleados\n\nVista General y Panel de Control\nAl ingresar a Empleados, se accede a la tabla central con la nómina completa. Este panel permite monitorear y gestionar los permisos de acceso y participación de cada integrante.\n\n1. Búsqueda y Filtros Avanzados\nPodés localizar empleados rápidamente utilizando las siguientes herramientas:\nBuscador Directo: Filtrá por Nombre, Legajo, etc.\nFiltros por Columna: Seleccioná opciones en los desplegables de Grupos, Resgistrado, Validado, Habilitado y Ganador.\n\n2. Interpretación de la Columna Estado (Íconos)\nLa columna Estado utiliza indicadores visuales para informar la situación operativa del empleado:\nÍcono @ (Rojo): El empleado no se encuentra validado. No puede ingresar a la plataforma.\nÍcono de Prohibido (Rojo): El empleado está inhabilitado. No tiene permiso para realizar ofertas en las subastas.\nÍcono de Personita (Rojo): El empleado no está registrado. No posee una cuenta de acceso creada.\n\nCuando estos íconos aparecen en Verde, significan que el estado correspondiente está activo y permitido.\n—FIN_SECCIÓN—\n\n—INICIO_SECCIÓN—\nMÓDULO: Empleados - Alta y Registro\nPALABRAS CLAVE: agregar empleado, nuevo empleado, datos de ingreso, registrar empleado, legajo obligatorio, crear cuenta empleado\n\nAlta de Nuevo Empleado\nPara cargar a un integrante de forma manual, presioná el botón + AGREGAR.\n\n1. Datos del empleado\nCompletá la ficha técnica con los campos obligatorios:\nNOMBRE Y APELLIDO\nDNI / CUIL\nLEGAJO (Identificador único obligatorio)\nÁREA\nFECHA NACIMIENTO\nINGRESO A EMPRESA\n\n2. Registro de Acceso\nSi deseás que el empleado tenga una cuenta para operar en el momento:\nMarcá el checkbox Registrar Empleado.\nSe desplegará la sección Datos de ingreso, donde deberás completar: EMAIL, CLAVE y REPETIR CLAVE.\nPresioná el botón Guardar.\n\n⚠️ AVISO: Podés agregar comentarios adicionales sobre el alta en el campo Observaciones antes de finalizar.\n—FIN_SECCIÓN—\n\n—INICIO_SECCIÓN—\nMÓDULO: Empleados - Gestión de Permisos y Estados\nPALABRAS CLAVE: validar empleado, habilitar para ofertar, deshabilitar, enviar mail de validación, ver detalle empleado, editar grupos\n\nGestión de Permisos y Estados\nLa plataforma permite controlar el acceso (Validación) y la capacidad de puja (Habilitación) mediante dos paneles:\n\n1. Panel de Información (Botón VER)\nAl presionar VER, accedés a la ficha técnica del empleado:\nInformación del empleado: Muestra el resumen de datos y estados.\nValidación: Permite validar al usuario directamente o mediante el desplegable seleccionando ENVIANDO UN MAIL DE VALIDACIÓN.\nLotes Adjudicados: Tabla histórica con los remates que el empleado ha ganado.\nHistorial de cambios: Registro de auditoría con fecha, usuario e IP de cada modificación.\n\n2. Panel de Edición (Botón EDITAR)\nAl presionar EDITAR, podés realizar cambios operativos manuales:\nGrupos: Marcá los checkboxes de los grupos a los que pertenece el empleado (ej. Empleados, Segser, etc.).\n\nHABILITADO: Usá los botones HABILITAR o DESHABILITAR para autorizar o restringir las ofertas.\nVALIDADO: Usá el botón VALIDAR para permitir el ingreso, o el desplegable para realizarlo vía ENVIANDO UN CORREO DE VALIDACIÓN.\n—FIN_SECCIÓN—\n\n—INICIO_SECCIÓN—\nMÓDULO: Empleados - Soporte y Blanqueo de Clave\nPALABRAS CLAVE: blanqueo de contraseña, resetear clave, modificar datos acceso, soporte técnico empleados\n\nSoporte y Blanqueo de Contraseña\nEn caso de que un empleado pierda sus datos de acceso o tenga dificultades para iniciar sesión, el administrador puede intervenir manualmente:\nBuscá al empleado en el listado y presioná el botón EDITAR.\nDeslizate hasta encontrar el checkbox Registrar Empleado y asegúrate de que esté marcado.\nEn la sección Datos de ingreso, escribí el EMAIL correcto y definí una nueva contraseña en los campos CLAVE y REPETIR CLAVE.\nPresioná Guardar.\n\n⚠️ AVISO: Este proceso sobreescribe las credenciales anteriores de forma inmediata. Recordá informar al empleado su nueva clave temporal.\n—FIN_SECCIÓN—\n\nMANUAL DEL ADMINISTRADOR - SECCIÓN USUARIOS\n—INICIO_SECCIÓN—\nMÓDULO: Usuarios - Listado e Iconografía\nPALABRAS CLAVE: listado usuarios, buscar usuario, íconos de estado, reloj acceso, icono referente, eliminar usuario\n\nVista General y Panel de Control\nDesde la sección Usuarios, el administrador tiene el control total sobre los usuarios externos (clientes/empresas) que participan en la plataforma.\n\n1. Búsqueda y Filtros\nUtilizá el panel superior para segmentar la lista por:\nBuscador: Nombre, Alias, Email o DNI/CUIL/CUIT.\nFiltros rápidos: Por Grupos, Validado, Habilitado o Ganador.\nOrdenar por: Menú desplegable para organizar la vista según prioridad.\n\n2. Significado de Íconos de Estado y Acción\nEn la tabla de usuarios verás indicadores visuales que resumen la situación del perfil:\nReloj (Rojo/Celeste): Indica el último acceso a la plataforma o si el usuario aún nunca ingresó.\nPersona con X (Rojo): El usuario no está habilitado para ofertar.\n@ (Rojo): El usuario no está validado para ingresar al sistema.\nÍcono de 3 Personas (Verde): Indica que el usuario tiene un Usuario Referente asociado.\nOjo (Botón Ver): Acceso a la ficha técnica detallada.\nLápiz (Botón Editar): Acceso al formulario de modificación.\nBasura (Botón Eliminar): Borrado definitivo del usuario del sistema.\n—FIN_SECCIÓN—\n\n—INICIO_SECCIÓN—\nMÓDULO: Usuarios - Alta de Nuevo Usuario\nPALABRAS CLAVE: agregar usuario, persona individual, empresa, datos personales, datos empresa, grupo usuario, validar usuario nuevo\n\nAlta de Nuevo Usuario\nAl presionar el botón + AGREGAR USUARIO, se debe definir el Tipo de cuenta antes de completar los datos:\n\n1. Tipo: Persona Individual\nCampos requeridos: Nombre y Apellido, DNI / CUIL, Teléfono y Actividad.\n\n2. Tipo: Empresa\nCampos requeridos: Nombre Comercial, Razón Social, CUIT / CUIL, Persona Responsable, Teléfono y Actividad.\n\n3. Configuración Común\nDirección Principal: Sección desplegable opcional para datos de domicilio.\nGrupos: Marcá los checkboxes de los grupos correspondientes (ej. Agencias, Referidos, etc.).\nDatos de Acceso: Definí el Email y la Clave (debe repetirse para confirmar).\nHabilitación y Validación: Podés presionar los botones HABILITAR y VALIDAR (o enviar mail de validación) directamente durante la creación.\n—FIN_SECCIÓN—\n\n—INICIO_SECCIÓN—\nMÓDULO: Usuarios - Gestión y Permisos (Detalle)\nPALABRAS CLAVE: ver usuario, lotes adjudicados usuario, habilitar manual, validar manual\n\nConsulta de Información Detallada\nAl presionar el botón con el ícono del Ojo, accedés a la Información del usuario:\nEstado Operativo: Permite realizar la validación/invalidación y habilitación/inhabilitación manual mediante los botones VALIDAR y HABILITAR.\nFicha Técnica: Resumen de emails, alias, teléfonos, actividad y grupos.\nDirecciones: Listado de domicilios cargados.\nLotes Adjudicados: Historial de todos los remates ganados por este usuario específico.\n—FIN_SECCIÓN—\n\n—INICIO_SECCIÓN—\nMÓDULO: Usuarios - Edición y Soporte\nPALABRAS CLAVE: editar usuario, blanqueo de contraseña, cambiar email, modificar grupos usuario\n\nModificación de Datos y Blanqueo de Clave\nSi un usuario requiere cambios en su perfil o soporte técnico, utilizá el botón con el ícono del Lápiz:\nModificación de Datos: Podés corregir cualquier dato personal, de empresa o cambiar el Email de contacto.\nGestión de Grupos: Permite añadir o quitar al usuario de diferentes segmentos de visibilidad.\nBlanqueo de Contraseña: En la sección Datos de Acceso, ingresá la nueva clave en los campos Clave y Repetir Clave.\nHabilitación/Validación: También disponible en este panel para cambios rápidos de estado.\nGuardar: Es obligatorio presionar el botón Guardar para que los cambios tengan efecto.\n—FIN_SECCIÓN—\n\nMANUAL DEL ADMINISTRADOR - CIERRE Y ADJUDICACIÓN DE EVENTOS\n—INICIO_SECCIÓN—\nMÓDULO: Eventos - Finalización y Adjudicación\nPALABRAS CLAVE: adjudicar remate, resultados evento, marcar desierto, confirmar ganador, fin de subasta\n\nCierre de Evento y Adjudicación\nUna vez que el cronómetro de un evento llega a cero y el proceso de puja termina, el estado del evento cambia. En el listado principal se habilitarán dos botones clave para la gestión del cierre: ADJUDICAR (botón gris) y RESULTADOS (botón azul).\n\n1. Proceso de Adjudicación (Botón ADJUDICAR)\nEsta etapa es fundamental para oficializar al ganador y permitir que el usuario avance a la aceptación del lote.\nSelección del Ganador: Al ingresar, el sistema preselecciona automáticamente al usuario que realizó la oferta más alta (Oferta Seleccionada).\nGestión de Ofertas (Flecha de Selección): Si se detecta un error en el evento o un problema técnico, el administrador puede presionar la flecha hacia abajo en el campo del adjudicatario. Esto despliega el listado de las ofertas recibidas, permitiendo seleccionar a otro usuario manualmente si fuera necesario.\nObservaciones: Campo disponible para justificar cambios en la adjudicación o dejar notas internas sobre el proceso.\nMarcar como Desierto: Si el lote no recibió ofertas o debe anularse por razones administrativas, utilizá el botón naranja MARCAR COMO DESIERTO.\nConfirmación Final: Una vez verificado el ganador, presioná el botón verde CONFIRMACIÓN.\nNota: Tras este paso, el usuario ganador deberá aceptar la adjudicación desde su panel para dar por concluida la operación.\n\n2. Consulta de Resultados (Botón RESULTADOS)\nEste panel permite auditar el desempeño del evento una vez finalizado.\nDetalles del Remate: Muestra el listado de lotes, cantidad de visitas recibidas, precio base, incrementos y el Precio Venta final.\nEstado de Adjudicación: Permite verificar rápidamente qué lotes tienen un ganador asignado y quién es el adjudicatario.\nReportes: Incluye el botón IMPRIMIR para generar el "Resumen evento" en formato físico o digital.\n—FIN_SECCIÓN—\n\nPROTOCOLO DE RESPUESTA (ESTRUCTURA)\nPara [Problema] hagamos esto / verifica esto.\nSolución por Capas: Da los pasos principales primero.\n\nSe preciso con cada respuesta, no menciones cosas que no tengan que ver con la duda o problema. Ofrece por último si pudo resolver su problema, si quiere que lo ayude con algo mas o si el problema persiste.\n\nFormato Markdown:\nBotones y Pestañas: En Negrita.\nImágenes:  justo después del paso que la cita.\nAvisos: ⚠️ AVISO: [Texto del manual].\n\nMÓDULO ADICIONAL: SEGURIDAD E INTEGRIDAD\n—INICIO_SECCIÓN—\nMÓDULO: Modificaciones en Eventos Activos\nPALABRAS CLAVE: detener evento, pausar subasta, modificar lote activo, modificar evento activo, evitar fraude\n\nIntegridad de la Subasta.\nPara garantizar la transparencia y evitar cualquier tipo de fraude o perjuicio a los usuarios y empleados, está estrictamente prohibido realizar modificaciones técnicas sobre eventos o lotes que se encuentren en proceso activo de subasta.\n\nProtocolo para Modificar un Lote Activo:\n\nSi se detecta un error en un lote que ya está siendo subastado, el administrador debe seguir este orden exacto:\nPaso 1: Detener el evento por completo para pausar las ofertas.\nPaso 2: Desvincular el lote del evento desde la configuración del evento.\nPaso 3: Ir a Eventos → Lista de Lotes, realizar la modificación necesaria en el lote correspondiente y guardar.\nPaso 4: Volver a adjudicar/vincular el lote corregido al evento.\nPaso 5: Iniciar el evento nuevamente.\n\nProtocolo para Modificar Datos del Evento activo:\nSi se requiere modificar un evento iniciado:\nPaso 1: Detener el evento inmediatamente.\nPaso 2: Entrar en la configuración del evento y hacer las modificaciones necesarias.\nPaso 3: Guardar la configuración presionando el boton de Finalizar Configuración en las etapas modificadas.\nPaso 4: Iniciar el evento de nuevo.\n\n⚠️Aviso: Cualquier cambio "en caliente" (sin detener el sistema) puede generar inconsistencias en la base de datos de ofertas y pérdida de validez legal del remate.\n—FIN_SECCIÓN—\n\nCierre Amigable: "¿Quedó claro o necesitás que revisemos algún paso de nuevo?"\n\nPROTOCOLO DE FALLO\nSi la info no está: "Mirá, estuve revisando el manual y no encuentro instrucciones para eso todavía. ¿Hay alguna otra parte del proceso que quieras que veamos?".”,“returnIntermediateSteps”: true}},“type”: “/n8n-nodes-langchain.agent”,“typeVersion”: 3.1,“position”: [2096,1104],“id”: “bc474159-7d6e-4bde-9379-c71c1bdc123e”,“name”: “AI Agent”,“retryOnFail”: false,“executeOnce”: false,“alwaysOutputData”: false,“notesInFlow”: false},{“parameters”: {“jsCode”: “const CHATBOT_ENCRYPTION_KEY = $env.CHATBOT_ENCRYPTION_KEY;\n\nconst key = Buffer.from(\n  CHATBOT_ENCRYPTION_KEY,\n  "hex",\n);\n\n\nconst {\n  metadata: {\n    credentials,\n    iv: ivRaw,\n    …metadata\n  },\n  …body\n} = $input.first().json;\n\nconst crypto = require("crypto");\n\nconst iv = Buffer.from(ivRaw, "hex");\n\nconst decipher = crypto.createDecipheriv("aes-256-cbc", key, iv);\n\nconst decoded =\n  decipher.update(credentials, "base64", "utf-8") + decipher.final("utf-8");\n\nObject.assign(metadata, JSON.parse(decoded));\n\nreturn {\n  …body,\n  metadata,\n};\n”},“type”: “n8n-nodes-base.code”,“typeVersion”: 2,“position”: [1616,1504],“id”: “a99f67cc-f4b4-4e4d-82d3-7042c296818d”,“name”: “Code in JavaScript”},{“parameters”: {“conditions”: {“options”: {“caseSensitive”: true,“leftValue”: “”,“typeValidation”: “loose”,“version”: 3},“conditions”: [{“id”: “861e9755-4d71-41bb-9d09-580a3967d413”,“leftValue”: “={{ $env[‘N8N_GEMINI_API_KEY_’ + $json.metadata.customerId] }}”,“rightValue”: “”,“operator”: {“type”: “string”,“operation”: “exists”,“singleValue”: true}}],“combinator”: “and”},“looseTypeValidation”: true,“options”: {}},“type”: “n8n-nodes-base.if”,“typeVersion”: 2.3,“position”: [1840,1504],“id”: “e66ecb42-a336-49af-93ae-9370db5ba381”,“name”: “If”,“alwaysOutputData”: false},{“parameters”: {“assignments”: {“assignments”: [{“id”: “15e51574-ef97-4abd-baf2-e9b55acc7686”,“name”: “output”,“value”: “API INCORRECTA”,“type”: “string”}]},“options”: {}},“type”: “n8n-nodes-base.set”,“typeVersion”: 3.4,“position”: [2064,1520],“id”: “0437cae4-1fe5-4add-a652-a2d1409bf361”,“name”: “Edit Fields”},{“parameters”: {“modelName”: “=gemini-3.1-flash-lite”,“options”: {“temperature”: 0.1}},“type”: “/n8n-nodes-langchain.lmChatGoogleGemini”,“typeVersion”: 1,“position”: [2080,1296],“id”: “6c5e3b01-8677-41f3-ad0c-4247fa64b6e5”,“name”: “gemini-3-flash”,“retryOnFail”: false,“waitBetweenTries”: 2000,“executeOnce”: false,“alwaysOutputData”: false,“credentials”: {“googlePalmApi”: {“id”: “w8QXr4DCRxgjZIbB”,“name”: “Google Gemini(PaLM) ApiKeyTokens”}}},{“parameters”: {“workflowId”: {“__rl”: true,“value”: “rxOTM6xq3TjJEZ7W”,“mode”: “list”,“cachedResultUrl”: “/workflow/rxOTM6xq3TjJEZ7W”,“cachedResultName”: “countTokens”},“workflowInputs”: {“mappingMode”: “defineBelow”,“value”: {},“matchingColumns”: ,“schema”: ,“attemptToConvertTypes”: false,“convertFieldsToString”: true},“options”: {“waitForSubWorkflow”: false}},“type”: “n8n-nodes-base.executeWorkflow”,“typeVersion”: 1.3,“position”: [2656,1104],“id”: “d7f5c465-979f-49c9-9508-91f3c47ae30c”,“name”: “Call ‘countTokens’”},{“parameters”: {“respondWith”: “text”,“responseBody”: “={{ $(‘AI Agent’).item.json.output }}”,“options”: {}},“type”: “n8n-nodes-base.respondToWebhook”,“typeVersion”: 1.5,“position”: [2416,1104],“id”: “3279dccd-091e-457b-a6b2-05e5f48fa22e”,“name”: “Respond to Webhook1”}],“connections”: {“When chat message received”: {“main”: [[{“node”: “Code in JavaScript”,“type”: “main”,“index”: 0}]]},“AI Agent”: {“main”: [[{“node”: “Respond to Webhook1”,“type”: “main”,“index”: 0}]]},“Code in JavaScript”: {“main”: [[{“node”: “If”,“type”: “main”,“index”: 0}]]},“If”: {“main”: [[{“node”: “AI Agent”,“type”: “main”,“index”: 0}],[{“node”: “Edit Fields”,“type”: “main”,“index”: 0}]]},“gemini-3-flash”: {“ai_languageModel”: [[{“node”: “AI Agent”,“type”: “ai_languageModel”,“index”: 0}]]},“Call ‘countTokens’”: {“main”: []},“Respond to Webhook1”: {“main”: [[{“node”: “Call ‘countTokens’”,“type”: “main”,“index”: 0}]]}},“pinData”: {“When chat message received”: [{“chatInput”: “como creo un evento?”,“sessionId”: “web_5_d6rbdxrt6d_1769627481574”,“metadata”: {“source”: “webchat”,“credentials”: “rGC+FvneEQgxT9TpCDaoYWSvb2RLUa4v5qnnpYhHuRJHjYvtOMpOFYeivzNQq+ly”,“iv”: “c01293ec960a854e6ade0cf2b1695c26”}}]},“meta”: {“templateCredsSetupCompleted”: true,“instanceId”: “981b1d76b6e9776884f4ced775d99fcf9976e32e7eb800085d5dbe8b9f28dfcd”}}

Share the output returned by the last node

Information on your n8n setup

  • n8n version: Version 2.13.3
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app): docker
  • Operating system: ubuntu

@BautistaDB camino más fácil que consultar de vuelta a través de la API de n8n — el nodo AI Agent ya expone el uso de tokens en su propio JSON de salida (normalmente un campo tokenUsage en el objeto de respuesta). puedes obtenerlo directamente en el siguiente nodo sin necesidad de Get Execution en absoluto, elimina todo el problema de “retorna todas las ejecuciones”. pega una muestra del JSON que genera el AI Agent justo después de ejecutarse y podemos localizar la ruta exacta al campo de tokens.

Hola @BautistaDB

Hay una forma de guardar las preguntas del Humano e IA registradas utilizando bases de datos de terceros como MongoDB. Lo que verás es el ID de sesión y el objeto. cada objeto estará etiquetado como “Humano” o “ia”. con el texto exacto enviado y la respuesta del agente de IA.

No estoy seguro de si aún quieres guardar los tokens o no después de esto, pero veo que esto resuelve una parte principal de tu problema.

Gracias

Mohamed Omer

Hola @BautistaDB

El problema es que el nodo n8n integrado se comporta de manera impredecible cuando solicitas detalles de ejecución; en lugar de darte solo el registro que pediste, a menudo arroja una lista masiva de cada ejecución en tu historial. Esto causa que tu flujo de trabajo se ralentice o falle porque intenta procesar miles de líneas de datos innecesarios solo para encontrar un conteo de tokens.

Para solucionarlo, debes reemplazar ese nodo por un nodo HTTP Request estándar. Al llamar directamente a la API de n8n usando el ID de ejecución específico en la URL y agregando el parámetro includeData=true, obligas al sistema a devolver solo el registro detallado único que necesitas. Luego simplemente actualizas tu código JavaScript para leer ese objeto único en lugar de iterar a través de una lista.

Aquí está el flujo de trabajo JSON. Puedes copiar esto y pegarlo directamente en tu lienzo de n8n:

Thanks for jumping in! I really appreciate the suggestion. I actually tried that approach initially, but the issue is that the AI Agent node in n8n (at least in my setup) doesn’t expose the raw JSON response or the tokenUsage in its direct output. It encapsulates the underlying model’s response and only outputs a single string containing the final answer text (e.g., “output”: “Here is how you create an event…”).

¡Hola @BautistaDB, bienvenido a la comunidad!

Para agregar lo que dijo @achamm - al usar Gemini a través del nodo AI Agent, el uso de tokens generalmente es accesible en el nivel $json.output o dentro del objeto usageMetadata en la salida sin procesar. Busca los campos promptTokenCount, candidatesTokenCount y totalTokenCount. Puedes obtenerlos en el nodo justo después del AI Agent usando una expresión como {{ $json.usageMetadata.totalTokenCount }}.

Si esa ruta no está disponible, fija la salida del AI Agent en una ejecución de prueba y busca cualquier objeto que contenga tokens o usage en el nombre de la clave - la ruta exacta varía un poco según el modelo. Esto evita usar el nodo Get Execution por completo, que es el enfoque más limpio para el registro en tiempo real.