---
title: "Get campaign settings"
method: GET
path: "/api/v1/discovery/campaign-settings/{id}"
tags: ["discovery"]
---

# Get campaign settings

`GET /api/v1/discovery/campaign-settings/{id}`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/discovery/campaign-settings/{id}`
- 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`)

Get a Discovery campaign's saved setup, active, paused or archived alike: its assistants, precision, customer target and pool, audience or customer targeting, and store locations. Its schedule, progress and standing are campaigns_summaries_get_v2's.

## Path parameters

- `id` string, uuid, required: Discovery campaign id.

## Headers

- `Point11-Organization` string, uuid

## Response `200`

Success.

- DiscoveryCampaignSettingsGetResponse
  - `id` string, uuid, required
  - `businessProfileId` string, uuid, nullable, required: The business profile it runs on.
  - `mode` 'current' | 'forecast' | 'both', required: Whether it samples current customers, forecast customers, or both.
  - `engines` string[], required: The assistants it asks.
  - `marginOfError` number, required: Its precision target: the margin of error, in percent.
  - `targetCustomerCount` integer, required: The customers it samples; it grows with the roster.
  - `rosterCustomerCount` integer, nullable, required: The customers on the campaign now, whom its runs interview: its roster, less anyone removed. A named removal lowers it and leaves targetCustomerCount. Null until its first run has chosen them.
  - `targetKind` 'profile' | 'physical_locations', nullable, required: What it measures; null while a first campaign's setup has not settled it.
  - `locationContexts` DiscoveryLocationContextsItem[], required: The store locations it measures, as saved.
    - `addresses` DiscoveryAddressesItem[], required
      - `googlePlace` object, nullable
        - `placeId` string, required
        - `requestToken` string, uuid, required
        - `callId` string, uuid, required
        - `requestFingerprint` string, required
      - `label` string, nullable
      - `storeId` string, nullable
      - `street` string, nullable
      - `city` string, nullable
      - `region` string, nullable
      - `postalCode` string, nullable
      - `country` string, nullable
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `url` string, nullable
      - `notes` string, nullable
      - `serviceArea` object
        - `campaignBoundary` object
          - `areas` object[], required
            - `query` string, required
            - `countryCode` string, nullable
            - `weightPct` number, nullable
          - `evidenceNote` string, nullable
        - `configuredRule` object
          - `strategy` 'premises_deepest_reliable', required
          - `version` 'physical-service-area:v1', required
    - `market` string, nullable
    - `country` string, nullable
    - `storeIds` string[]
    - `sourceNotes` string[]
  - `locationCount` integer, required: How many stores it measures now.
  - `stores` object[], required: Every store a location campaign has had, in launched order, removed ones included; empty for a brand-wide campaign.
    - `key` string, required: The store's key: name it in removeStoreKeys to stop measuring it.
    - `label` string, required: The store's name.
    - `address` string, nullable, required: Its street address, when it has one.
    - `googlePlaceId` string, nullable, required: The Google Maps listing it was picked from, when it was.
    - `state` 'setting_up' | 'active' | 'failed' | 'removed', required: setting_up until its customers are ready; active once they are; failed when its setup ended without them; removed once a Save stopped measuring it.
    - `addedAt` string, date-time, nullable, required: When a Save added it after launch; null for a store it launched with.
    - `removedAt` string, date-time, nullable, required: When a Save stopped measuring it; its results before then stay.
  - `locationCoverageMode` 'standard' | 'one_per_location', required: Whether every store location gets at least one customer (one_per_location).
  - `targetedGroupIds` string[], nullable, required: The audiences it was targeted at; null when not narrowed to audiences.
  - `targetedCustomerIds` string[], nullable, required: The customers it was picked from; null when not hand-picked.
  - `settingsRevision` integer, required: Its settings revision: pass it as expectedSettingsRevision to discovery.campaign-settings-quotes.get and discovery.campaign-settings.update.

## 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/5241805fe425?raw)
