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

# Get campaign settings quotes

`GET /api/v1/research/campaign-settings-quotes/{id}`

## Request

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

Review a Save of a Research campaign's settings before making it, writing nothing: each change and when it starts (from the next admission day), the change in estimated monthly interviews at today's price, Billing's answer to the extra work and how the change reaches results (an edited question starts fresh from its first answer after the change; every unchanged question keeps its history). Pass the settingsRevision research_campaign_settings_get_v4 returned as expectedSettingsRevision; refused when the settings changed since. `id` is the campaign's id.

## Path parameters

- `id` string, uuid, required: The Research campaign's id.

## Query parameters

- `expectedSettingsRevision` integer, required: The settingsRevision the settings read (or a quote) returned.
- `name` string: The campaign's new name.
- `targetInterviewCount` integer: Interviews each period takes, one per customer: raising it adds the next eligible customers in the study's own sampling order, lowering it removes the newest joined first (named in the quote's customersLeaving) and cancels their interviews not yet started.
- `audience` 'all' | 'groups': Whom customers added later are drawn from: every eligible customer (all) or members of targetedGroupIds (groups). The current customers stay.
- `targetedGroupIds` string[]: The audiences, with audience groups.
- `frequency` 'weekly' | 'monthly': The period a repeating study interviews each customer once in; a new period starts at the next admission day.
- `studyChanged` boolean: Whether the Save changes the study; an edited question starts fresh in results.

## Headers

- `Point11-Organization` string, uuid

## Response `200`

Success.

- ResearchCampaignSettingsQuotesGetResponse
  - `settingsRevision` integer, required: The settings revision this quote read; pass it as expectedSettingsRevision.
  - `requiresReview` boolean, required: Whether the Save changes money or results, so Billing is asked about its work and a quoted estimate is re-checked; false when it changes only the name.
  - `changes` DiscoveryItem[], required: Each change and when it starts.
    - `field` string, required: The setting this change moves, in the product's own word (engines, customers…).
    - `summary` string, required: The change and when it starts, in plain words.
    - `starts` 'now' | 'next_run' | 'next_cycle' | 'next_admission_day' | 'when_ready', required: When the change takes effect.
    - `startsAt` string, date-time, nullable, required: The instant it takes effect when known; null when it waits on setup.
  - `estimate` DiscoveryEstimate, nullable, required: The change in estimated monthly usage; null when no work changes.
    - `unit` object, required: What a unit of work is: a conversation, a visit, an interview.
      - `singular` string, required
      - `plural` string, required
    - `monthlyBefore` integer, required: Estimated units a month today.
    - `monthlyAfter` integer, required: Estimated units a month after the Save.
    - `unitPriceCents` integer, nullable, required: Today's price of one unit, in cents; null when Billing could not price it.
    - `monthlyChangeCents` integer, nullable, required: The change in estimated monthly cost, in cents; null when unpriced.
    - `oneTime` object[], required: One-time work the Save starts.
      - `kind` 'customer_generation' | 'catch_up_run' | 'store_setup' | 'places_search', required
      - `summary` string, required: The work, in plain words.
      - `quantity` integer, required: How many units of it.
      - `amountCents` integer, nullable, required: Its estimated cost at today's price, in cents; null when it has no estimate.
  - `billing` union, required
    - object
      - `outcome` 'not_needed', required
    - object
      - `outcome` 'admitted', required
    - object
      - `outcome` 'refused', required
      - `reason` string, required: Billing's refusal reason.
      - `message` string, required: Billing's refusal, in its own words.
      - `paymentDisputeHold` boolean, required: Whether the account is held for a payment dispute, which a new card does not lift.
  - `resultsNote` string, nullable, required: How the change reaches results; null when results do not change.
  - `reviewedEstimate` object, nullable, required: The estimate a quote returned (its reviewedEstimate): the Save is refused if it moved. Null saves at the current estimate.
    - `monthlyAfter` integer, required
    - `unitPriceCents` integer, nullable, required
    - `oneTimeAmountCents` integer, nullable, required
  - `customersLeaving` object[], required: Who a lower count removes: the newest joined first.
    - `customerId` string, uuid, required
    - `name` string, required
    - `joinedAt` string, date-time, required

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