Campaigns#

Group activities into campaigns for aggregate reporting.

List campaigns#

Retrieve a paginated list of campaigns for an organization.

typescript
const { items, totalCount, facets } = await bw.campaigns.list({
  pageIndex: 0,
  pageSize: 25,
  organizationId: 'org_123',
});

Parameters#

NameTypeRequiredDescription
pageIndexintegerRequiredZero-based page index for pagination.
pageSizeintegerRequiredNumber of items per page (1-100).
organizationIdstring (UUID)RequiredOrganization identifier.
searchTermstringFree-text search term to filter results (max 200 characters).
sortBystringColumn name to sort by.
sortDirection'asc' | 'desc'Sort direction: ascending or descending.
status'active' | 'scheduled' | 'completed' | 'draft'Filter by campaign status.
creatorIdstring (UUID)Filter by creator identifier.

Response#

Returns { items, totalCount, facets } with paginated results.

Get campaign stats#

Aggregate statistics for campaigns matching the given filters.

typescript
const { data } = await bw.campaigns.stats({
  organizationId: 'org_123',
});

Parameters#

NameTypeRequiredDescription
organizationIdstring (UUID)RequiredOrganization identifier.
status'active' | 'scheduled' | 'completed' | 'draft'Filter by campaign status.
creatorIdstring (UUID)Filter by creator identifier.
searchTermstringFree-text search term to filter results (max 200 characters).

Response#

Returns { data } with the result.

Get campaign#

Retrieve a single campaign by ID with full details.

typescript
const { data } = await bw.campaigns({ id: 'abc-123' });

Parameters#

NameTypeRequiredDescription
idstring (UUID)RequiredCampaign identifier.

Response#

Returns { data } with the result.

Create campaign#

Create a new campaign.

typescript
const { data } = await bw.campaigns.create({
  organizationId: 'org_123',
  name: 'My Campaign',
});

Parameters#

NameTypeRequiredDescription
organizationIdstring (UUID)RequiredOrganization identifier.
namestringRequiredCampaign name.
startAtstring (ISO 8601) | nullCampaign start date.
endAtstring (ISO 8601) | nullCampaign end date.
budgetnumber | nullTotal campaign budget (non-negative, max 1B).

Response#

Returns { data } with the result.

Update campaign#

Update a campaign's details, status, budget, or dates.

typescript
const { data } = await bw.campaigns.update({
  id: 'abc-123',
});

Parameters#

NameTypeRequiredDescription
idstring (UUID)RequiredCampaign identifier to update.
namestringUpdated campaign name (1-255 characters).
startAtstring (ISO 8601) | nullUpdated start date.
endAtstring (ISO 8601) | nullUpdated end date.
budgetnumber | nullUpdated budget (non-negative, max 1B).

Response#

Returns { data } with the result.

Delete campaign#

Permanently delete a campaign and unlink all associated activities.

typescript
const { data } = await bw.campaigns.delete({
  id: 'abc-123',
});

Parameters#

NameTypeRequiredDescription
idstring (UUID)RequiredCampaign identifier to delete.

Response#

Returns { data } with the result.

Destructive action

Deleting a campaign permanently removes the campaign and unlinks all associated activities. This action cannot be undone.

Link an activity to a campaign.

typescript
const { data } = await bw.campaigns.activities.link({
  campaignId: 'camp_abc123',
  activityId: 'act_abc123',
});

Parameters#

NameTypeRequiredDescription
campaignIdstring (UUID)RequiredCampaign identifier to link the activity to.
activityIdstring (UUID)RequiredActivity identifier to link.

Response#

Returns { data } with the result.

Unlink an activity from a campaign.

typescript
const { data } = await bw.campaigns.activities.unlink({
  campaignActivityId: 'ca_abc123',
});

Parameters#

NameTypeRequiredDescription
campaignActivityIdstring (UUID)RequiredCampaign-activity association identifier to remove.

Response#

Returns { data } with the result.