Tareas
Checklists del workspace que reparten trabajo entre personas, con pasos, comentarios, vistas y actividad.
Una tarea es un checklist del workspace: un trabajo con un responsable, una fecha límite opcional y pasos que va marcando la persona a la que se le asignan. La API te deja crearlas, llenarlas y leer en qué punto quedaron, para que el trabajo que nace en tu sistema aparezca en el tablero de tareas de Meteor y al revés.
Usa los scopes tasks:read y tasks:write.
La API ya no ejecuta tareas. Hasta el 31 de agosto de 2026 (contrato 3.0.0) una tarea se podía disparar, correr paso a paso con un Met y detenerse a pedir aprobación. Eso se retiró:
tasks.execute(), el historial de ejecuciones,approveStep(),rejectStep(),completeHumanStep(),cancelExecution(),tasks.triggersymet tasks runya no existen, y sus endpoints responden 404. Lo que corre solo se arma hoy en Funciones y flujos, y para que un Met haga el trabajo se usa un Run. El eventotask.completeddejó de emitirse (ver Webhooks).
Crear una tarea
Una tarea tiene un responsable: una persona (responsible_user_id) o un Met (responsible_met_id), nunca los dos.
const tarea = await met.tasks.create({
name: 'Calificar leads nuevos',
description: 'Revisar los contactos sin etapa y dejar una calificación.',
responsible_user_id: 77,
deadline: '2026-11-05T17:00:00-05:00',
});
// → { id, name, status, ... }tarea = met.tasks.create(
name="Calificar leads nuevos",
description="Revisar los contactos sin etapa y dejar una calificación.",
responsible_user_id=77,
deadline="2026-11-05T17:00:00-05:00",
)Con contact_id la tarea queda como seguimiento de un contacto del CRM, y met.tasks.iterate({ contactId }) te devuelve solo las de ese contacto. list() se corta en 100; iterate() recorre todas.
Pasos
Los pasos son el checklist. Se crean de a uno, quedan al final (o justo debajo de otro con after_step_id) y se asignan a una persona: un paso no se asigna a un Met.
const paso = await met.tasks.steps.create(tarea.id, {
name: 'Traer contactos sin etapa',
assigned_to_user_id: 77,
});
// Quien hace el paso lo marca hecho; tu sistema también puede hacerlo.
await met.tasks.steps.update(tarea.id, paso.id, { status: 'completed' });
await met.tasks.steps.reorder(tarea.id, [pasoB.id, pasoA.id]);
Un paso está pending o completed. Las tareas creadas antes del retiro del ejecutor pueden conservar running, failed o cancelled en algún paso; nadie los escribe ya.
steps.updateResult() reemplaza el resultado del paso con bloques de contenido. Sirve cuando el trabajo real lo hizo tu sistema y quieres dejar el entregable en la tarea:
await met.tasks.steps.updateResult(tarea.id, paso.id, {
blocks: [{ type: 'text', data: { html: '<p>42 contactos calificados</p>' } }],
});
Reemplaza, no agrega: el arreglo que mandas queda como el resultado completo.
Saber en qué quedó
const detalle = await met.tasks.retrieve(tarea.id); // la tarea con sus pasos
const pasos = (detalle.steps ?? []) as Array<{ id: string; name: string; status?: string }>;
const pendientes = pasos.filter((p) => p.status !== 'completed');
No hay evento de tareas: para enterarte de un cambio, consulta el detalle o la actividad cuando lo necesites, no en un bucle cada pocos segundos.
Estado
await met.tasks.setStatus(tarea.id, 'completed');
Acepta pending, running, paused, completed, failed y cancelled; qué significa cada uno en el día a día lo define el tablero de tu workspace, no la API. Cambiar el estado no hace correr nada.
Comentarios y adjuntos
El hilo de la tarea acepta archivos. Se sube primero y se manda la metadata después:
const adjunto = await met.tasks.comments.upload(tarea.id, archivo, {
filename: 'reporte.pdf',
contentType: 'application/pdf',
});
await met.tasks.comments.create(tarea.id, {
body: 'Adjunto el reporte del cierre.',
attachments: [adjunto],
});
Un comentario necesita body o attachments; vacío responde 400.
Contexto y actividad
const actividad = await met.tasks.activity(tarea.id); // de una tarea
const todo = await met.tasks.workspaceActivity({ limit: 50 }); // de todo el workspace
const vinculados = await met.tasks.linkedItems(tarea.id); // ítems donde está la tarea
linkedItems() devuelve los ítems de colección que tienen la tarea embebida en su contenido: es cómo sabes desde qué ficha se pidió el trabajo. Mira Colecciones e ítems.
Vistas guardadas
Las vistas son del workspace, no de una tarea: filtros guardados sobre el listado del panel.
await met.tasks.views.create({
name: 'En pausa',
filters: [{ field: 'status', operator: 'is', value: 'paused' }],
});
views.reorder() está deprecado y deja de responder el 2027-04-08: es el orden del menú del panel, no un dato del workspace.