Skip to main content
Una campaign representa una ejecución masiva basada en un CSV. El procesamiento es asíncrono y el estado progresa (por ejemplo) PENDINGPROCESSINGCOMPLETED.
Requiere permisos campaigns:read para consultas y campaigns:write para creación, además del header X-Workspace-Id.

Listar campañas

import { createClient } from '@getsupervisor/agents-studio-sdk';

const client = createClient({
  baseUrl: process.env.API_BASE_URL!,
  workspaceId: process.env.WORKSPACE_ID!,
  apiKey: process.env.API_KEY!,
});

const page1 = await client.campaigns.list({
  page: 1,
  limit: 20,
  sort: '-createdAt',
  // filter: 'and(eq(status,"PROCESSING"))',
});

console.log(page1.data.length, page1.meta.total);

if (page1.meta.hasNext) {
  const page2 = await page1.next();
  console.log('Siguiente página:', page2?.meta.page);
}
import { createClient } from '@getsupervisor/agents-studio-sdk';

const client = createClient({
  baseUrl: process.env.API_BASE_URL!,
  workspaceId: process.env.WORKSPACE_ID!,
  apiKey: process.env.API_KEY!,
});

const campaign = await client.campaigns.get(
  '00000000-0000-4000-8000-000000000001',
);

console.log(campaign.name, campaign.status);

Listar ejecuciones (por fila)

Expone progreso fila por fila del CSV procesado.
import { createClient } from '@getsupervisor/agents-studio-sdk';

const client = createClient({
  baseUrl: process.env.API_BASE_URL!,
  workspaceId: process.env.WORKSPACE_ID!,
  apiKey: process.env.API_KEY!,
});

const executions = await client.campaigns.listExecutions(
  '00000000-0000-4000-8000-000000000001',
  { page: 1, limit: 50 },
);

for (const row of executions.data) {
  console.log(row.rowNumber, row.status, row.errorMessage);
}

Crear campaña (CSV)

Crea una campaña para una versión específica del agente.
import { createClient } from '@getsupervisor/agents-studio-sdk';

const client = createClient({
  baseUrl: process.env.API_BASE_URL!,
  workspaceId: process.env.WORKSPACE_ID!,
  apiKey: process.env.API_KEY!,
});

const campaign = await client.campaigns.create(
  '00000000-0000-4000-8000-000000000101',
  '00000000-0000-4000-8000-000000000201',
  {
    name: 'Campaña outbound noviembre',
    objective: 'Validar rendimiento de script de retención',
    // En entornos browser: File/Blob.
    // En entornos Node: usa FormData directamente si no tienes File.
    file: new Blob(['name,phone\nAda,+5215555555555\n'], {
      type: 'text/csv',
    }),
  },
);

console.log(campaign.campaignId, campaign.status);