---
title: "Catálogo de tipos de nodo del MVP"
method: GET
path: "/node-registry"
tags: ["Flows"]
---

# Catálogo de tipos de nodo del MVP

`GET /node-registry`

## Request

- Base URL: `https://api.met.meteor.com.co/api/v1`
- URL: `https://api.met.meteor.com.co/api/v1/node-registry`
- Auth: one of:
  - `bearer` (a scheme the document does not define)
  - HTTP bearer

El catálogo que necesitas para armar un `draft_definition` válido: cada tipo de nodo con sus campos. Trae además `image_providers` y `video_providers` con el proveedor por defecto y, en video, la duración mínima, máxima y la de defecto — si mandas una duración fuera de ese rango el nodo falla al ejecutarse, no al guardarse.

## 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` NodeRegistryResponseDto, required
    - `image_providers` ImageProviderDto[], required
      - `id` string, required
      - `label` string, required
      - `supports_reference_images` boolean, required: Si acepta imágenes de referencia además del prompt.
    - `nodes` NodeTypeDefinitionDto[], required
      - `accepts_cargo` string[], required: Tipos de carga inicial que consume. `empty` = funciona sin carga.
      - `category` 'control' | 'messaging' | 'intelligence' | 'data' | 'contact' | 'integration', required
      - `data_outputs` NodeDataOutputsDto
        - `fallback` NodeHandleDto
          - `id` string, required
          - `label` string, required
        - `field` string, required
        - `id_key` string, required
        - `label_key` string, required
      - `default_tier` 'agil' | 'inteligente' | 'genio': Nivel de modelo por defecto, si el nodo consume IA.
      - `description` string, required
      - `dynamic_outputs` NodeDynamicOutputsDto
        - `field` string, required: Campo de `node.data` que lleva el contador.
        - `handle_prefix` string, required: Los handles quedan `<handle_prefix>-0` … `<handle_prefix>-(N-1)`.
        - `items_key` string, required: Clave del array dentro del `output_artifact` (ej. `images`).
        - `label` string, required
        - `max` number, required
      - `fields` NodeFieldSpecDto[], required
        - `default_value` object: Valor inicial sugerido al crear el nodo.
        - `description` string
        - `empty_label` string: Texto de la opción vacía en los selects que la ofrecen.
        - `label` string, required
        - `name` string, required: Clave dentro de `node.data`.
        - `only_for_cargo` string[]: Si el campo solo aplica cuando la carga inicial es de cierto tipo.
        - `options` NodeFieldOptionDto[]: Solo cuando `type` es `select`.
          - `label` string, required
          - `value` string, required
        - `required` boolean
        - `type` string, required: Cómo se edita: `text`, `longtext`, `number`, `select`, `reference`, `image_ref`, `met_ref`, `collection_ref`, `contact_ref`, `color`, `json`, `string_list`.
      - `icon` string, required: Emoji o slug de ícono.
      - `input_handle_specs` NodeInputHandleSpecDto[]
        - `binds_field` string: Conectar aquí autoescribe `@{node:<origen>}` en este campo del destino.
        - `id` string, required
        - `kind` 'control' | 'image' | 'text', required
        - `label` string, required
        - `multi` boolean: Si acepta N conexiones entrantes (`binds_field` se mantiene como lista).
      - `input_handles` 'single' | 'multiple'
      - `label` string, required
      - `output_handles` NodeHandleDto[]: Handles de salida fijos. Si se omite, el nodo tiene uno solo (`out`).
        - `id` string, required
        - `label` string, required
      - `supports_error_handling` boolean: Si acepta la política `on_error` configurable (parar / seguir / ramificar).
      - `supports_response_mapping` boolean: Si su respuesta se puede mapear a campos de contacto o variables.
      - `supports_test_run` boolean: Si se puede correr solo, con un payload de muestra (`POST …/nodes/{nodeId}/test`).
      - `type` string, required: Lo que va en `node.type`.
      - `workspace_checks` NodeWorkspaceCheckDto[]
        - `kind` 'channel' | 'template' | 'integration' | 'plan', required
        - `message` string, required
        - `ref` string: Qué en concreto (ej. `whatsapp` para un canal).
        - `resolution` string: Sugerencia de cómo resolverlo.
    - `video_providers` VideoProviderDto[], required
      - `duration_default` number, required
      - `duration_max` number, required: Duración máxima en segundos.
      - `duration_min` number, required: Duración mínima en segundos.
      - `id` string, required
      - `label` string, required
      - `supports_reference_images` boolean, required

## 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/5d9ca294295c?raw)
