En esta sección
Guías / Ejecutar Mets (Runs)

Ejecutar Mets (Runs)

Ejecuta el Met de tu workspace por API, con memoria opcional, y lee el resultado.

Actualizada el Ver .md

Un Run es una ejecución del Met de tu workspace sobre un input. Es el corazón de "infraestructura agéntica como servicio": el mismo Met que responde en el chat, ahora disparado por código.

Ejecución básica

const run = await met.runs.create({ input: 'Resume los leads de hoy' });

console.log(run.status);  // 'completed'
console.log(run.output);  // el resultado del Met
run = met.runs.create("Resume los leads de hoy")

print(run["status"])  # 'completed'
print(run["output"])  # el resultado del Met
curl -X POST https://api.met.meteor.com.co/api/v1/workspaces/7/runs \
  -H "Authorization: Bearer $MET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":"Resume los leads de hoy"}'

El request es POST /workspaces/:id/runs. La respuesta es un recurso run con id opaco (run_…), status, output, livemode y metadata.

Elegir el Met (bind determinístico)

Pasa met (nombre o id de un Met del workspace) para ejecutar ese Met directo, con sus Funciones y tools, sin pasar por el orquestador:

await met.runs.create({ met: 'Valeria', input: '¿Cuántos leads cerré?' });
met.runs.create("¿Cuántos leads cerré?", met="Valeria")

El nombre se resuelve sin distinguir mayúsculas (coincidencia exacta y luego por prefijo). Si omites met, el orquestador del workspace auto-rutea al Met adecuado (igual que en el chat).

Memoria: conversaciones

Sin conversation_id, el run corre en una conversación efímera (sin memoria previa). Para darle continuidad, pasa una conversación existente:

await met.runs.create({ input: 'Y el mes pasado?', conversation_id: 1234 });

Con conversation_id, el primer met que envías queda fijado como default de la conversación: los runs siguientes que omitan met corren ese mismo Met. Un met explícito siempre gana sobre el default.

Visión: imágenes y archivos

Pasa adjuntos en attachments para que el Met "vea" una imagen o lea un documento (con OCR automático para el texto de una imagen):

await met.runs.create({
  met: 'Valeria',
  input: '¿Este rótulo instalado coincide con el diseño aprobado?',
  attachments: [{ url: 'https://…/foto.jpg', kind: 'image' }],
});

Cada adjunto es { url, mime_type?, name?, kind? }, con kind = image · document · audio · video · file. Una URL suelta dentro del input no se "ve": tiene que ir en attachments.

Leer runs

const run = await met.runs.retrieve('run_01J8…');   // estado + salida

for await (const r of met.runs.iterate()) {           // historial completo
  console.log(r.id, r.status);
}
run = met.runs.retrieve("run_01J8…")   # estado + salida

for r in met.runs.iterate():           # historial completo
    print(r["id"], r["status"])

iterate() recorre todas las páginas por ti (ver Errores y paginación).

Costo

Cada run debita Energía por el mismo ledger de siempre, marcado execution_type='api' y atribuido a la key. En tu dashboard, el consumo por API aparece separado del chat interno.

¿Streaming? Si quieres procesar el resultado a medida que se genera, mira la guía de Streaming.