---
title: "List summaries"
method: GET
path: "/api/v1/campaigns/summaries"
tags: ["campaigns"]
deprecated: true
---

# List summaries

`GET /api/v1/campaigns/summaries`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/campaigns/summaries`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://auth.point11.ai/oauth2/authorize`, token URL `https://auth.point11.ai/oauth2/token`)

> **Deprecated.**

Deprecated: use campaigns.summaries.list.v2 (campaigns_summaries_list_v2) for every product's work counted by its entries and a Mirror's customers. List the organization's campaigns across Discovery, Experience and Research, optionally one product and one lifecycle status, sorted by a column. Each row carries its schedule, work progress (an Experience campaign's counts its current cycle's visits), setup readiness, and whether the account admits its new work. Returns totalCount and whether the organization has any campaign at all.

## Query parameters

- `limit` integer: Number of items to return (1–1000)
- `cursor` string: Opaque cursor returned as nextCursor by the previous page
- `product` 'discovery' | 'research' | 'experience': Only this product's campaigns; omit for every product.
- `view` 'all' | 'active' | 'paused' | 'archived': Only campaigns in this lifecycle status; "all" (the default) is every one.
- `sort` 'name' | 'brandUrl' | 'type' | 'updatedAt' | 'scheduleType' | 'frequency' | 'sourceCampaign': The column to sort by. Every product sorts by name, type and updatedAt; one product also by brandUrl; Experience also by scheduleType, frequency and sourceCampaign. Any other sorts by updatedAt, newest first.
- `descending` boolean: Sort descending; ignored without sort.

## Headers

- `Point11-Organization` string, uuid

## Response `200`

Success.

- CampaignsSummariesListResponse
  - `data` CampaignsDataItem[], required
    - union
      - object
        - `id` string, required
        - `campaignKey` string, nullable, required
        - `name` string, required
        - `brandName` string, nullable, required
        - `url` string, required
        - `domain` string, required
        - `status` 'active' | 'paused' | 'archived' | 'deleted', required
        - `schedule` union, required
          - object
            - `mode` 'calendar', required
            - `issue` string, nullable, required
            - `clockStarted` boolean, required: Whether the campaign's clock has started. An always-on Experience campaign's starts once its first run delivers a visit; until then it runs no month.
            - `nextAt` string: ISO timestamp at which the clock an always-on Experience campaign's first accepted run started next opens a cycle. It is the stored instant: a promise only while the campaign is Active, has no schedule issue, Point11 does not hold it, and the account admits its work (`execution.admissionAllowed`), and once passed, a cycle due to be planned. A visit placed ahead (`execution.activity.nextTargetAt`) comes first. Absent for a Discovery campaign, whose calendar names its next customer, and for a clock no accepted run started.
          - object
            - `mode` 'once', required
            - `issue` string, nullable, required
            - `nextAt` string, nullable, required
          - object
            - `mode` 'recurring', required
            - `issue` string, nullable, required
            - `frequency` 'daily' | 'weekly' | 'monthly' | 'quarterly', required
            - `nextAt` string, nullable, required
          - object
            - `mode` 'source', required
            - `issue` string, nullable, required
            - `source` object, required
              - …
          - object
            - `mode` 'unavailable', required
            - `issue` string, required
        - `work` CampaignsWork, required
          - `scope` 'campaign' | 'current_cycle', required
          - `state` 'not_started' | 'in_progress' | 'settled' | 'unknown', required
          - `outcome` 'running' | 'succeeded' | 'failed' | 'cancelled' | 'partial', nullable, required
          - `total` integer, required
          - `pending` integer, nullable, required
          - `running` integer, nullable, required
          - `succeeded` integer, required
          - `partial` integer, required
          - `failed` integer, required
          - `cancelled` integer, required
          - `skipped` integer, required
        - `execution` CampaignsExecution, required: The account's admission of the campaign's new work, and its execution evidence.
          - `activity` object, nullable, required: The campaign's activity from the stored facts campaigns.activities.get.v3 reads for the organization and a product: `nextTargetAt` its stored next customer, `running` the runs Billing admitted for it and has not finished (a reserved dispatch or run from its reservation, before any customer starts), and `due` 1 once that customer's time has passed while Billing admits its product's new work; `queued` is 0 and `scheduleTimeZone` null. Null when those facts could not be read.
            - `campaignId` string, required
            - `nextTargetAt` string, nullable, required
            - `running` integer, required
            - `queued` integer, required
            - `due` integer, required
            - `scheduleTimeZone` string, nullable, required
          - `admissionAllowed` boolean, required
          - `admissionUnavailable` boolean, required: The admission check could not be made; it holds nothing.
          - `reason` string, nullable, required
          - `subscriptionPaused` boolean, required
          - `code` string, nullable, required: Billing's refusal code behind `reason` when Billing refuses new work, else null.
        - `launch` object, required
          - `awaitingFunding` boolean, required
          - `refused` boolean, required
        - `readiness` object, required
          - `state` 'ready' | 'preparing' | 'needs_attention', required
          - `message` string, nullable, required
        - `subtype` string, nullable, required
        - `targetKind` 'profile' | 'physical_locations', nullable, required
        - `forecastAudience` boolean, required: Whether a Discovery campaign's customers are its forecast's alone (forecast mode, as Bootup's Forecast campaign); false for any other campaign.
        - `customerCount` integer, nullable, required: The customers the campaign's settings name: Discovery's customer target (it grows with the roster), Research's interview target, an Experience Burst's launch customers. Null for an Experience Pulse, which follows its source campaign.
        - `createdAt` string, required: ISO timestamp.
        - `updatedAt` string, required: ISO timestamp.
        - `latestEntry` CampaignsLatestEntry, required
          - `id` string, required
          - `sequence` integer, required: The entry's ordinal among its campaign's entries, from 1.
          - `failureReason` string, nullable, required: The code the entry settled with when it failed or was cancelled (for example no_unit_delivered or no_eligible_customers); null otherwise, or when it recorded no code.
          - `progress` ResearchProgress, required: The entry's units, counted from its product's delivered evidence.
            - `unitLabel` 'visit' | 'interview' | 'conversation', required: What one unit of this entry's work is: an Experience visit, a Research interview, a Discovery conversation.
            - `admission` 'entry' | 'unit', required: `entry`: the entry's work is admitted and billed once; `unit`: each unit is.
            - `counts` object, required
              - …
            - `outcome` 'running' | 'succeeded' | 'failed' | 'cancelled' | 'partial', required: Running until the entry settles; failed or cancelled when its product settled it so (a failed final result still counts the units it delivered); otherwise counted from the units: succeeded when every admitted unit delivered, partial when some did, failed when none did. An entry its product settled succeeded whose units no longer exist (all counts 0) stays succeeded.
            - `failureReasons` object[], required: Why the failed units failed, one row per reason with how many units it ended. A unit that failed while its admission still runs has no reason until that settles.
              - …
        - `product` 'discovery' | 'research', required
        - `type` string, required: "Discovery" or the Research playbook's label.
      - object
        - `id` string, required
        - `campaignKey` string, nullable, required
        - `name` string, required
        - `brandName` string, nullable, required
        - `url` string, required
        - `domain` string, required
        - `status` 'active' | 'paused' | 'archived' | 'deleted', required
        - `schedule` union, required
          - object
            - `mode` 'calendar', required
            - `issue` string, nullable, required
            - `clockStarted` boolean, required: Whether the campaign's clock has started. An always-on Experience campaign's starts once its first run delivers a visit; until then it runs no month.
            - `nextAt` string: ISO timestamp at which the clock an always-on Experience campaign's first accepted run started next opens a cycle. It is the stored instant: a promise only while the campaign is Active, has no schedule issue, Point11 does not hold it, and the account admits its work (`execution.admissionAllowed`), and once passed, a cycle due to be planned. A visit placed ahead (`execution.activity.nextTargetAt`) comes first. Absent for a Discovery campaign, whose calendar names its next customer, and for a clock no accepted run started.
          - object
            - `mode` 'once', required
            - `issue` string, nullable, required
            - `nextAt` string, nullable, required
          - object
            - `mode` 'recurring', required
            - `issue` string, nullable, required
            - `frequency` 'daily' | 'weekly' | 'monthly' | 'quarterly', required
            - `nextAt` string, nullable, required
          - object
            - `mode` 'source', required
            - `issue` string, nullable, required
            - `source` object, required
              - …
          - object
            - `mode` 'unavailable', required
            - `issue` string, required
        - `work` CampaignsWork, required
          - `scope` 'campaign' | 'current_cycle', required
          - `state` 'not_started' | 'in_progress' | 'settled' | 'unknown', required
          - `outcome` 'running' | 'succeeded' | 'failed' | 'cancelled' | 'partial', nullable, required
          - `total` integer, required
          - `pending` integer, nullable, required
          - `running` integer, nullable, required
          - `succeeded` integer, required
          - `partial` integer, required
          - `failed` integer, required
          - `cancelled` integer, required
          - `skipped` integer, required
        - `execution` CampaignsExecution, required: The account's admission of the campaign's new work, and its execution evidence.
          - `activity` object, nullable, required: The campaign's activity from the stored facts campaigns.activities.get.v3 reads for the organization and a product: `nextTargetAt` its stored next customer, `running` the runs Billing admitted for it and has not finished (a reserved dispatch or run from its reservation, before any customer starts), and `due` 1 once that customer's time has passed while Billing admits its product's new work; `queued` is 0 and `scheduleTimeZone` null. Null when those facts could not be read.
            - `campaignId` string, required
            - `nextTargetAt` string, nullable, required
            - `running` integer, required
            - `queued` integer, required
            - `due` integer, required
            - `scheduleTimeZone` string, nullable, required
          - `admissionAllowed` boolean, required
          - `admissionUnavailable` boolean, required: The admission check could not be made; it holds nothing.
          - `reason` string, nullable, required
          - `subscriptionPaused` boolean, required
          - `code` string, nullable, required: Billing's refusal code behind `reason` when Billing refuses new work, else null.
        - `launch` object, required
          - `awaitingFunding` boolean, required
          - `refused` boolean, required
        - `readiness` object, required
          - `state` 'ready' | 'preparing' | 'needs_attention', required
          - `message` string, nullable, required
        - `subtype` string, nullable, required
        - `targetKind` 'profile' | 'physical_locations', nullable, required
        - `forecastAudience` boolean, required: Whether a Discovery campaign's customers are its forecast's alone (forecast mode, as Bootup's Forecast campaign); false for any other campaign.
        - `customerCount` integer, nullable, required: The customers the campaign's settings name: Discovery's customer target (it grows with the roster), Research's interview target, an Experience Burst's launch customers. Null for an Experience Pulse, which follows its source campaign.
        - `createdAt` string, required: ISO timestamp.
        - `updatedAt` string, required: ISO timestamp.
        - `latestEntry` CampaignsLatestEntry, required
          - `id` string, required
          - `sequence` integer, required: The entry's ordinal among its campaign's entries, from 1.
          - `failureReason` string, nullable, required: The code the entry settled with when it failed or was cancelled (for example no_unit_delivered or no_eligible_customers); null otherwise, or when it recorded no code.
          - `progress` ResearchProgress, required: The entry's units, counted from its product's delivered evidence.
            - `unitLabel` 'visit' | 'interview' | 'conversation', required: What one unit of this entry's work is: an Experience visit, a Research interview, a Discovery conversation.
            - `admission` 'entry' | 'unit', required: `entry`: the entry's work is admitted and billed once; `unit`: each unit is.
            - `counts` object, required
              - …
            - `outcome` 'running' | 'succeeded' | 'failed' | 'cancelled' | 'partial', required: Running until the entry settles; failed or cancelled when its product settled it so (a failed final result still counts the units it delivered); otherwise counted from the units: succeeded when every admitted unit delivered, partial when some did, failed when none did. An entry its product settled succeeded whose units no longer exist (all counts 0) stays succeeded.
            - `failureReasons` object[], required: Why the failed units failed, one row per reason with how many units it ended. A unit that failed while its admission still runs has no reason until that settles.
              - …
        - `product` 'experience', required
        - `type` 'Experience', required
        - `experience` object, required
          - `mode` 'pulse' | 'burst', required
          - `targetSummary` object, required
            - `platforms` string[], required
            - `accessModes` string[], required
  - `nextCursor` string, nullable, required
  - `totalCount` integer, required: Campaigns matching the product and status filters.
  - `hasCampaigns` boolean, required: Whether the organization has any listed campaign of this product at all.

## Other responses

- `400`: The input, query, or Idempotency-Key is invalid.
- `401`: The bearer is missing, expired, or not accepted.
- `403`: The credential lacks the operation's scope or role, or the operation needs a different door.
- `404`: The resource or organization does not exist for this caller.
- `405`: This path takes another HTTP method, named in `Allow`.
- `409`: The request conflicts with current state or with prior use of its Idempotency-Key.
- `413`: The request, or the answer it asks for, is too large; narrow it.
- `429`: The credential's rate budget is spent; retry after `Retry-After` seconds.
- `500`: An unexpected server failure; retry later. Only `request_id` identifies it.
- `503`: A dependency is temporarily unavailable; retry after `Retry-After` seconds.
- `default`: Another status a product answers for its own refusal (for example `415` for an unsupported attachment); branch on `code`.

---

[API](https://skmtc.dev/point11/apis/point11-api.md) · [All operations](https://skmtc.dev/point11/apis/point11-api/llms.txt) · [OpenAPI document](https://skmtc.dev/point11/apis/point11-api/revisions/36a84c7aca11?raw)
