---
title: "Search calendar windows"
method: GET
path: "/api/v1/campaigns/calendar-windows/search"
tags: ["campaigns"]
---

# Search calendar windows

`GET /api/v1/campaigns/calendar-windows/search`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/campaigns/calendar-windows/search`
- 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`)

Read the scheduled customer interactions of up to 50 campaigns between two instants at most 48 hours apart, in one request: each campaign's lifecycle counts and at most 500 named interactions (`entryCount` says how many there are), in the calendar's order. Only the organization's active and paused campaigns are read, whichever ids are named; `failed` counts campaigns whose read failed, and the request fails when every read did.

## Query parameters

- `campaignIds` string[], required: The campaigns the calendar shows; each is read through its own product.
- `from` string, date-time, required
- `to` string, date-time, required
- `showPaused` boolean: False leaves out paused activity: the work a paused campaign holds and will not start while it stays paused (a waiting interaction, or a Research interview its run has committed), from every count and name. Finished, failed, missed and started work always stays, and so does the work of an Active campaign whose subscription is paused. True when absent.

## Headers

- `Point11-Organization` string, uuid

## Response `200`

Success.

- CampaignsCalendarWindowsSearchResponse
  - `campaigns` object[], required: Each campaign that answered, in the calendar's order.
    - `campaignType` 'discovery' | 'research' | 'experience', required
    - `campaignId` string, required
    - `entryCount` integer, required
    - `lifecycleCounts` object, required
      - `scheduled` integer, required
      - `committed` integer, required
      - `running` integer, required
      - `finished` integer, required
      - `cancelled` integer, required
      - `unknown` integer, required
    - `entries` union[], required
      - union
        - object
          - `lifecycle` 'scheduled' | 'committed' | 'running' | 'finished' | 'cancelled' | 'unknown', required
          - `waitingReason` string, nullable: Why scheduled work is not admitted yet, when known.
          - `scheduledAt` string, nullable, required
          - `admittedAt` string, nullable, required
          - `startedAt` string, nullable, required
          - `finishedAt` string, nullable, required
          - `executionId` string, nullable, required
          - `outcome` 'running' | 'succeeded' | 'failed' | 'cancelled' | 'partial', nullable, required
          - `rerun` true: Present on an edit's rerun: a customer whose edit gave it a new version, rerun once on it as its run of the campaign's current period. It is its own entry and never moves.
          - `inClosedHour` true: Present on a scheduled interaction a person or an order placed in an hour the calendar rules now close. It stays where it was placed.
          - `missed` true: Present on an interaction whose month closed with no run admitting it. Its lifecycle stays `scheduled`, it stays on its day, and it no longer moves.
          - `movedFrom` object: Present when the plan moved the interaction since placing it; absent when a person placed it.
            - `at` string, required: Where the plan first placed the interaction.
            - `reason` 'catch_up' | 'rules_save', required: Why the plan moved it: `catch_up`, its slot passed unrun; `rules_save`, the calendar rules changed.
          - `capabilities` object, required
            - `move` boolean, required
            - `cancel` boolean, required
            - `restore` boolean, required
            - `reasonCode` string, nullable, required
            - `reason` string, nullable, required
            - `moveMonth` string: `YYYY-MM`: the UTC month a move must stay inside, where one bounds it.
          - `entryId` string, required
          - `lineId` string, required
          - `name` string, required
          - `targetAt` string, required
          - `kind` 'customer'
          - `customerId` string, required
          - `customerKey` string, nullable, required
          - `jobTitle` string, nullable, required
          - `age` string, nullable, required
          - `avatarUrl` string, nullable, required
        - object
          - `lifecycle` 'scheduled' | 'committed' | 'running' | 'finished' | 'cancelled' | 'unknown', required
          - `waitingReason` string, nullable: Why scheduled work is not admitted yet, when known.
          - `scheduledAt` string, nullable, required
          - `admittedAt` string, nullable, required
          - `startedAt` string, nullable, required
          - `finishedAt` string, nullable, required
          - `executionId` string, nullable, required
          - `outcome` 'running' | 'succeeded' | 'failed' | 'cancelled' | 'partial', nullable, required
          - `rerun` true: Present on an edit's rerun: a customer whose edit gave it a new version, rerun once on it as its run of the campaign's current period. It is its own entry and never moves.
          - `inClosedHour` true: Present on a scheduled interaction a person or an order placed in an hour the calendar rules now close. It stays where it was placed.
          - `missed` true: Present on an interaction whose month closed with no run admitting it. Its lifecycle stays `scheduled`, it stays on its day, and it no longer moves.
          - `movedFrom` object: Present when the plan moved the interaction since placing it; absent when a person placed it.
            - `at` string, required: Where the plan first placed the interaction.
            - `reason` 'catch_up' | 'rules_save', required: Why the plan moved it: `catch_up`, its slot passed unrun; `rules_save`, the calendar rules changed.
          - `capabilities` object, required
            - `move` boolean, required
            - `cancel` boolean, required
            - `restore` boolean, required
            - `reasonCode` string, nullable, required
            - `reason` string, nullable, required
            - `moveMonth` string: `YYYY-MM`: the UTC month a move must stay inside, where one bounds it.
          - `entryId` string, required
          - `lineId` string, required
          - `name` string, required
          - `targetAt` string, required
          - `kind` 'research-run', required
          - `interviewCount` integer, required
          - `completedInterviewCount` integer, required
          - `resultsHref` string, nullable, required
  - `failed` integer, required: Campaigns whose read failed; the others still answered.

## 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)
