---
title: "Detalle de una Función IA."
method: GET
path: "/workspaces/{workspaceId}/functions/{functionId}"
tags: ["Functions"]
---

# Detalle de una Función IA.

`GET /workspaces/{workspaceId}/functions/{functionId}`

## Request

- Base URL: `https://api.met.meteor.com.co/api/v1`
- URL: `https://api.met.meteor.com.co/api/v1/workspaces/{workspaceId}/functions/{functionId}`
- Auth: one of:
  - `bearer` (a scheme the document does not define)
  - HTTP bearer

El detalle con su contrato de entrada, que es lo que el modelo lee para decidir cuándo llamarla y con qué argumentos. Si un Met la invoca mal, este contrato es lo primero que hay que revisar.

## Path parameters

- `functionId` number, required

## Response `200`

- object: Sobre en el que viaja toda respuesta correcta de la API. El recurso está en `data`. Los SDKs oficiales lo desenvuelven por ti; un cliente hecho a mano tiene que leer `.data`.
  - `success` true, required: Siempre `true` en una respuesta 2xx.
  - `data` FunctionResponseDto, required
    - `activo` boolean, required: `false` = la función existe pero no se le ofrece al modelo.
    - `descripcion` string, required: Para qué sirve la función. Es la descripción de la tool.
    - `flow_id` string, nullable, required: UUID del flujo que atiende la tool. `null` si el handler no es un flujo.
    - `function_id` number, required: ID de la función. Es el que se usa en las rutas `functions/{functionId}`.
    - `function_prompt` string, required: "Indicador de función": guía de cuándo y cómo usarla.
    - `http` FunctionHttpConfigDto, required
      - `auth_workspace_variable` string: Nombre de la variable del workspace que guarda el Bearer token. El token en sí no se devuelve nunca.
      - `headers` object: Headers estáticos **no sensibles**. `Content-Type` lo pone Meteor solo si hay cuerpo JSON.
      - `last_probe` FunctionProbeResultDto
        - `checked_at` string, required
        - `code` string, nullable, required: Código de máquina del hallazgo, en inglés. `null` cuando todo salió bien.
        - `duration_ms` number, required
        - `http_status` number, nullable, required: Status HTTP de la respuesta. `null` si no hubo respuesta.
        - `message` string, required: Qué pasó, en español, para el developer.
        - `method` string, nullable, required: Método HTTP que se usó. `null` si no se llegó a mandar nada.
        - `mode` 'safe' | 'invoke' | 'off', required: Modo con el que se probó. Ver `FunctionHttpConfigDto.probe`.
        - `status` 'ok' | 'warning' | 'unreachable' | 'blocked' | 'skipped', required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'
      - `probe` 'safe' | 'invoke' | 'off': Qué tan lejos puede llegar la **prueba de humo** que Meteor corre al registrar o cambiar el endpoint. - `safe` (default): `HEAD` y, si hace falta, `OPTIONS`. Sin cuerpo, así que tu handler no recibe ningún argumento sobre el que actuar. Es lo único seguro contra un endpoint del que Meteor no sabe nada. - `invoke`: manda tu método configurado con el cuerpo `{"__met_probe":true}` y el header `X-Met-Probe: 1`. **Elígelo solo si tu endpoint es idempotente o reconoce esa marca**: si no, la prueba ejecuta tu lógica de verdad. - `off`: no se prueba nada.
      - `sign_secret_variable` string: Nombre de la variable del workspace con el secreto que firma `X-Met-Signature`. El secreto en sí no se devuelve nunca. Omitirla **no** deja la llamada sin firmar: Meteor firma igual, con el secreto administrado del workspace (variable `MET_TOOL_SIGN_SECRET`, que crea sola la primera vez). Este campo solo sirve para elegir otro secreto.
      - `timeout_ms` number: Timeout de la llamada, en milisegundos. Default 30 000, tope 60 000.
      - `url` string, required: Endpoint del cliente que se invoca cuando el Met usa la tool.
    - `nombre` string, required: Nombre EN INGLÉS — se sanitiza al nombre de la tool que ve el modelo.
    - `parameters` FunctionParameterDto[], required
      - `description` string, required: Qué es el parámetro. El Met lo lee para saber qué recolectar.
      - `enum_values` string[], nullable, required: Valores permitidos (enum del JSON schema). `null` = valor libre.
      - `memory` boolean, required: Flag "Memoria" heredado de uChat. Se persiste; reservado para uso futuro.
      - `name` string, required: Nombre EN INGLÉS — entra al JSON schema de la tool como propiedad.
      - `required` boolean, required: `true` = el Met no puede invocar la tool sin este valor.
      - `save_to` string, nullable, required: `field_key` del contacto (o `workspace.<nombre>`) donde persistir el valor que el Met recolectó. `null` = no se guarda en ningún lado.
      - `type` 'string' | 'number' | 'boolean', required: Tipo del parámetro en el JSON schema de la tool.
    - `required_tools` string[], required: Tools que deben haber terminado exitosamente antes de ejecutar esta función durante el turno actual. Evita que una acción transaccional se ejecute con datos todavía no validados (ej. `take_orders` sin `check_menu`).
    - `version` number, required: Versión del **contrato invocable** de la función. Entero que arranca en 1 y sube de a uno cada vez que cambia algo que el Met ve o que la llamada usa: nombre, descripción, indicador, parámetros, prerrequisitos, handler (flujo o config HTTP). NO sube por prender/apagar la función ni por guardar sin cambios — así el número significa siempre "el contrato cambió", que es justo lo que se necesita para diagnosticar ("desde que cambiaste el esquema, el Met la llama mal"). Cada invocación queda registrada con la versión que se usó. Es el mismo criterio del `version` de los snapshots: contador entero, no semver — el número lo lleva Meteor, no se puede saltar ni falsear.

## Other responses

- `400`: La request no es válida: un campo no pasa validación, falta un parámetro requerido o el recurso no admite la transición solicitada.
- `401`: API key ausente, inválida, revocada o expirada — o el workspace está bloqueado.
- `403`: La key está autenticada pero no puede ejecutar esta operación: scope faltante, capacidad deshabilitada, modo test restringido o recurso fuera de su cartera.
- `404`: El recurso no existe o no está disponible dentro del alcance de la key. No revela la existencia de recursos de otros tenants.
- `429`: Se superó el límite por minuto de la key o la cuota del plan. Respeta `Retry-After`; el SDK ya reintenta solo.
- `500`: Error del servidor o del Met que ejecutaba. El SDK reintenta los 5xx con backoff.

---

[API](https://skmtc.dev/meteor/apis/met-public-api.md) · [All operations](https://skmtc.dev/meteor/apis/met-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/meteor/apis/met-public-api/revisions/fc6d3aad75de?raw)
