Ejecutar Mets (Runs)
Ejecuta el Met de tu workspace por API, con memoria opcional, y lee el resultado.
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 Metrun = met.runs.create("Resume los leads de hoy")
print(run["status"]) # 'completed'
print(run["output"]) # el resultado del Metcurl -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.