Campaign Plans

Get a Campaign Plan

Reads one Campaign Plan with its Line Items in full, and with the provider objects each line created.

Each line has four calculated fields: the provider that sells its channel, whether AdCrunch can execute the line, the window the line resolves to from its own dates and the Campaign Plan dates, and whether its amount is a total or a daily rate.

The plan has the three money figures. If allocation.comparable is false, the lines do not share one unit. Show "not comparable" in that condition. Do not show a total.

Send revision back as base_revision when you write to the Campaign Plan.

get/context/campaign-plans/{slug}

Request

  • Base URL: https://api.adcrunch.dev
  • URL: https://api.adcrunch.dev/context/campaign-plans/{slug}
  • Auth: HTTP bearer

Path parameters

slugstring required

Response

The Campaign Plan with its Line Items in full. That is why there is no single-Line-Item fetch: progressive disclosure exists to keep unbounded prose out of a bundle, and a Line Item has none. This is the one answer that carries what each line created.

brandIdstring nullable required

Nullable and mutable: a plan may precede its brand, cover a portfolio, or be re-pointed. Deleting a Brand leaves its plans standing.

createdAtnumber required

Milliseconds since the Unix epoch, UTC.

createdBystring required
currencystring required

Editable until the first Line Item budget, and frozen thereafter.

descriptionstring required
endDatestring nullable required

A calendar date, YYYY-MM-DD.

idstring required
measurementstring nullable required
namestring required
rationalestring nullable required
revisionnumber required

Increments on every write. Send it back as base_revision to edit; a stale one answers 409.

slugstring required
startDatestring nullable required

A calendar date, YYYY-MM-DD.

status'draft' | 'approved' required

The only two stored states. active, closed and "executed" are derived, never stored.

totalBudgetnumber nullable required
updatedAtnumber nullable required

Milliseconds since the Unix epoch, UTC.

Example response

{
  "allocation": {
    "allocated": 2500,
    "comparable": true,
    "unallocated": 2500,
    "unit": "total"
  },
  "brandId": "brd_6a9c33",
  "createdAt": 1768435200000,
  "createdBy": "usr_5d2b71",
  "currency": "EUR",
  "description": "The spring sale of Acme, on Meta, in France and Belgium.",
  "endDate": "2026-05-31",
  "id": "cpl_4e1a08",
  "lineItems": [
    {
      "advertiserId": "acc_1203456789012345",
      "ageMax": 44,
      "ageMin": 25,
      "budget": 2500,
      "campaignPlanId": "cpl_4e1a08",
      "channel": "meta",
      "countries": [
        "FR",
        "BE"
      ],
      "createdAt": 1768435200000,
      "createdBy": "usr_5d2b71",
      "effectiveEndDate": "2026-05-31",
      "effectiveStartDate": "2026-03-01",
      "endDate": null,
      "executable": true,
      "executions": [
        {
          "advertiserId": "acc_1203456789012345",
          "createdAt": 1772409600000,
          "entityId": "120210000000000",
          "entityType": "campaign",
          "id": "exe_7a4c12",
          "mutationWorkflowId": "b3d1f0c4-6a2e-4a1f-9f77-2c0d1e5a8b94",
          "provider": "meta"
        }
      ],
      "gender": "all",
      "id": "lni_2d9e77",
      "objective": "sales",
      "personaId": "psn_8c4a20",
      "provider": "meta",
      "revision": 2,
      "startDate": null,
      "status": "validated",
      "unit": "total",
      "updatedAt": 1769040000000
    }
  ],
  "measurement": "Revenue in the window, against the spring of 2025.",
  "name": "Spring Sale 2026",
  "rationale": "Meta carries the reach. One Line Item keeps the budget in one place.",
  "revision": 3,
  "slug": "spring-sale",
  "startDate": "2026-03-01",
  "status": "approved",
  "totalBudget": 5000,
  "updatedAt": 1769040000000
}

Changes

No recorded changes to this operation across all 1 revision of this API.