> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getsupervisor.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Campaigns

> Gestiona campañas masivas basadas en CSV para ejecutar agentes en batch.

<Note>
  Una <strong>campaign</strong> representa una ejecución masiva basada en un
  CSV. El procesamiento es <strong>asíncrono</strong> y el estado progresa (por
  ejemplo)
  <code>PENDING</code> → <code>PROCESSING</code> → <code>COMPLETED</code>.
</Note>

<Info>
  Requiere permisos <code>campaigns:read</code> para consultas y
  <code>campaigns:write</code> para creación, además del header
  <code>X-Workspace-Id</code>.
</Info>

## Listar campañas

<Tabs>
  <Tab title="TypeScript SDK">
    ```ts theme={null}
    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);
    }
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -sS "$API_BASE_URL/v1/campaigns?page=1&limit=20&sort=-createdAt" \
      -H "X-API-Key: $API_KEY" \
      -H "X-Workspace-Id: $WORKSPACE_ID"
    ```
  </Tab>
</Tabs>

<Tabs>
  <Tab title="TypeScript SDK">
    ```ts theme={null}
    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);
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -sS "$API_BASE_URL/v1/campaigns/00000000-0000-4000-8000-000000000001" \
      -H "X-API-Key: $API_KEY" \
      -H "X-Workspace-Id: $WORKSPACE_ID"
    ```
  </Tab>
</Tabs>

## Listar ejecuciones (por fila)

Expone progreso fila por fila del CSV procesado.

<Tabs>
  <Tab title="TypeScript SDK">
    ```ts theme={null}
    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);
    }
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -sS "$API_BASE_URL/v1/campaigns/00000000-0000-4000-8000-000000000001/executions?page=1&limit=50" \
      -H "X-API-Key: $API_KEY" \
      -H "X-Workspace-Id: $WORKSPACE_ID"
    ```
  </Tab>
</Tabs>

## Crear campaña (CSV)

Crea una campaña para una versión específica del agente.

<Tabs>
  <Tab title="TypeScript SDK">
    ```ts theme={null}
    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);
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -sS -X POST \
      "$API_BASE_URL/v1/agents/00000000-0000-4000-8000-000000000101/versions/00000000-0000-4000-8000-000000000201/campaigns" \
      -H "X-API-Key: $API_KEY" \
      -H "X-Workspace-Id: $WORKSPACE_ID" \
      -F "name=Campaña outbound noviembre" \
      -F "objective=Validar rendimiento de script de retención" \
      -F "file=@./input.csv"
    ```
  </Tab>
</Tabs>
