---
title: "Exporta un flujo como JSON portable (definición + dependencias descritas)"
method: GET
path: "/workspaces/{workspaceId}/flows/{id}/export"
tags: ["Flows"]
---

# Exporta un flujo como JSON portable (definición + dependencias descritas)

`GET /workspaces/{workspaceId}/flows/{id}/export`

## Request

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

Devuelve el flujo como documento portable, con las dependencias **descritas** en vez de referenciadas por id — por eso se puede importar en otro workspace, donde esos ids no existen. Es la mitad de lectura de «Flows as Code»; la otra es `POST /flows/import`.

## Path parameters

- `workspaceId` number, required
- `id` string, 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` FlowPortableDocDto, required
    - `content_hash` string, required: Hash del JSON canónico de `{ flow, dependencies }` — para detectar cambios.
    - `dependencies` FlowDependencyDto[], required
      - `kind` string, required: `skill`, `mcp`, `collection`, `met`, `function`, `channel`, `flow`, `agent_group`.
      - `name` string, required: Nombre humano en el origen: se muestra al importar y sirve para el match automático.
      - `origin_id` union, required: ID en el workspace origen. Informativo: **no** se usa al importar.
        - string
        - number
      - `ref` string, required: Ref estable sin el prefijo `@snapshot:` (ej. `skill:asesor-ventas`).
      - `system_code` string, nullable: Código de sistema de la colección (`_contacts`, `_mets`…), si aplica.
    - `exported_at` string, required
    - `flow` FlowPortableFlowDto, required
      - `definition` object, required: El lienzo, con los ids de entidades reescritos como marcadores `@snapshot:<ref>` — por eso `nodes`/`edges` van sin tipar aquí.
      - `description` string, nullable, required
      - `name` string, required
      - `ref` string, required
      - `slug` string, nullable, required
    - `kind` 'meteor.flow', required
    - `schema_version` number, required
    - `source` FlowPortableSourceDto, required
      - `flow_ref` string, required
      - `workspace_id` number, required
    - `warnings` FlowLintWarningDto[]
      - `code` 'unresolved_ref' | 'dropped_reference' | 'possible_secret' | 'skipped_entity' | 'missing_variable', required
      - `message` string, required
      - `where` string: Ubicación aproximada: ref de la entidad + ruta del campo.

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