---
title: "Start campaigns (v3)"
method: POST
path: "/api/v1/experience/campaigns/start-v3"
tags: ["experience"]
deprecated: true
---

# Start campaigns (v3)

`POST /api/v1/experience/campaigns/start-v3`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/experience/campaigns/start-v3`
- 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 experience.campaigns.start.v4 (experience_campaigns_start_v4), which also takes stores picked on Google Maps (locationContexts) and then may answer before the campaign commits (delivery setting_up_stores); without them it starts exactly as v4, naming the same campaign for the same Idempotency-Key. Start an always-on Experience campaign over chosen customers (or, with follows, a share of a Discovery campaign's customers, as Bootup's Experience chooses them, which the campaign records and re-reads each run: a customer who left that campaign leaves, and a store its customers no longer cover lends its share, up to 100; while that campaign is archived its customers stay as they are until it is restored, and once it is deleted, for good; or, with locationKeys, every customer at chosen stores of the business profile, dealt one per store until 100, chosen once at the launch) and pages (or one connected app version on one mobile device), on chosen devices, shopped by chosen agents: Point11's own shopper unless agents names others, each of which runs its vendor's model in Point11's browser and shops every customer on every page and device as its own visit. It shops its whole grid now. Once that first run is accepted, a prorated share of its customers shops again across the rest of the UTC month, then every customer shops once each UTC month, placed on the business's published hours. A first run in which no visit delivered starts no monthly runs. Name competitorSourceCampaignId, a Discovery campaign on the same business profile, and every run also shops each customer's direct competitors: every brand that customer's latest settled conversation there labelled a direct competitor, read again each run, with no cap; a customer with none shops the pages alone. Subscribes nothing; each run uses the organization's existing allowance (and pay-as-you-go, if the organization turned it on). Returns the campaign and its launch entry; runs dispatch shortly after.

## Headers

- `Point11-Organization` string, uuid
- `Idempotency-Key` string, uuid, required

## Request body

- ExperienceCampaignsStartV3Request
  - `campaignName` string, required
  - `browserDevices` string[]: The devices every customer shops each page on, each once; each device's visit is one experience run. Absent, desktop and mobile. A nativeApp names mobile alone.
  - `agents` string[]: The agents that shop every customer on every page and device, each once (1 to 5). point11 is Point11's own shopper; dots (OpenAI Dots), spark (Gemini Spark), muse (Meta Muse) and grok_bot (Grok Bot) each run the model that vendor's agent most likely uses, in Point11's browser, never as the real agent. Each agent's visit is one experience run at the same price. Absent, point11 alone. A settings Save changes them from the next cycle.
  - `businessProfileId` string, uuid, required
  - `customerIds` string[]: The customers who visit: at least one, and as many as the launch's 1,000 visits hold (each customer visits every page on every device with every agent). Not with follows or stores (locationKeys, locationContexts), which choose them.
  - `follows` ExperienceFollows: Instead of customerIds, follow a Discovery campaign for a share of its customers, as Bootup's Experience takes them: at the launch, of the customers on its roster the launch admits, in the order Discovery sampled them, the first 1 in sampleEvery (rounded up) at each of its stores, at most 100 dealt one per store. The campaign records the follow, and each later scheduled cycle re-reads that roster: a customer who left it leaves, each store the campaign's customers no longer cover lends its share up to 100, a customer still on it stays, and a Save changes no customers; while the followed campaign is archived the customers stay as they are and a restore resumes the follow at the next scheduled cycle, and once it is deleted they stay for good. A Forecast campaign lends its Forecast's customers. To shop each customer's direct competitors too, competitorSourceCampaignId names this same campaign.
    - `campaignId` string, uuid, required: A Discovery campaign on the same business profile (discovery_campaigns_list_v1's businessProfileId), active or paused, with a finished round.
    - `sampleEvery` integer, required: 1 in how many of its customers shop: 1 is every customer, at most 1 in 20.
  - `locationKeys` string[]: Instead of customerIds or follows, the business profile's stores whose customers visit (1 to 100): each a location key business_store_profile_summaries_get_v1 lists under businessProfileId; a key that is not one of its stores now is refused. At the launch, every customer at them the launch admits, dealt one per store in the profile's store order until 100, as a followed local Discovery campaign's share is at 1 in 1. They are chosen once and become the campaign's customers; nothing of the stores is recorded.
  - `destinationUrls` string[], required
  - `connectionAccess` object
    - `connection` object, required
      - `connectionId` string, uuid, required
      - `revision` integer, required
    - `account` object
      - `accountId` string, uuid, required
      - `revision` integer, required
  - `nativeApp` object
    - `platform` 'ios' | 'android', required
    - `buildId` string, uuid, required
    - `sha256` string, required
    - `appId` string, required
    - `versionLabel` string, required
    - `deviceName` string, required
    - `osVersion` string, required
  - `objective` string, required
  - `competitorSourceCampaignId` string, uuid: A Discovery campaign on the same business profile (discovery_campaigns_list_v1's businessProfileId). Each run, every customer also shops every brand its latest settled conversation there labelled a direct competitor; a customer with none shops the pages alone. Set at launch, never changed. Public websites only: not with connectionAccess or nativeApp.

## Response `200`

Success.

- ExperienceCampaignsStartV3Response
  - `campaignId` string, uuid, required
  - `campaignKey` string, required
  - `entryId` string, required: The campaign entry this launch started: its launch cycle, which every visit of the grid (and of each customer's competitors) belongs to; read its progress with campaigns.campaign-entries.get.v1.
  - `runUnitCount` integer, required
  - `delivery` 'dispatching', required

## Other responses

- `400`: The input, query, or Idempotency-Key is invalid.
- `401`: The bearer is missing, expired, or not accepted.
- `402`: Billing refused the write: the code names the reason and `details.reason` carries it.
- `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)
