---
title: "List a campaign's published version history"
method: GET
path: "/api/campaigns/{id}/versions"
tags: ["Campaigns"]
---

# List a campaign's published version history

`GET /api/campaigns/{id}/versions`

## Request

- Base URL: `https://api.setluca.com`
- URL: `https://api.setluca.com/api/campaigns/{id}/versions`
- Auth: one of:
  - API key in cookie `luca.session_token`
  - API key in header `x-api-key`
  - HTTP bearer

The campaign's published version history. Published versions can't change, so this is the record of what actually ran.

**API key scopes:** `campaigns:read`.

## Path parameters

- `id` string, uuid, required

## Headers

- `Luca-API-Version` '1'

## Response `200`

ok

- CampaignVersionsResponse
  - `campaignId` string, uuid, required
  - `versions` object[], required
    - `id` string, uuid, required
    - `versionNumber` integer, required
    - `graph` object, required
      - `version` 1, required
      - `startNodeId` string, required
      - `nodes` object[], required
        - `id` string, required
        - `type` 'trigger' | 'condition' | 'action' | 'message' | 'booking' | 'wait_duration' | 'wait_until_time' | 'wait_for_event' | 'wait_for_reply' | 'wait_for_condition' | 'branch' | 'control' | 'stop' | 'handoff' | 'split' | 'exit_on', required
        - `label` string
        - `config` object
      - `edges` object[]
        - `id` string, required
        - `source` string, required
        - `target` string, required
        - `label` string
        - `condition` object
      - `knowledge` object
        - `offerDescription` string
        - `priceAndPaymentFacts` string[]
        - `programStructure` string[]
        - `bookingRules` string[]
        - `faqsAndObjections` string[]
        - `disallowedClaims` string[]
        - `resourceLinks` string[]
        - `exampleGoodReplies` string[]
        - `sourceNotes` string[]
      - `qualification` object
        - `requiredFields` string[]
        - `disqualifiers` string[]
        - `minimumScore` number
        - `requireExplicitConsentBeforeBooking` boolean
        - `bookingCtaLogic` string
        - `outcomes` string[]
      - `analyticsGoal` string
    - `publishedAt` string, required

## Other responses

- `401`: unauthorized
- `404`: not found
- `409`: conflict
- `429`: rate limited
- `500`: internal error
- `503`: service unavailable

---

[API](https://skmtc.dev/setluca/apis/luca-api.md) · [All operations](https://skmtc.dev/setluca/apis/luca-api/llms.txt) · [OpenAPI document](https://skmtc.dev/setluca/apis/luca-api/revisions/90a200e4100b?raw)
