---
title: "Get a campaign simulation run with trace"
method: GET
path: "/api/campaigns/{id}/simulations/{simulationId}"
tags: ["Campaigns"]
---

# Get a campaign simulation run with trace

`GET /api/campaigns/{id}/simulations/{simulationId}`

## Request

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

One simulation run with its full step-by-step trace.

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

## Path parameters

- `id` string, uuid, required
- `simulationId` string, uuid, required

## Headers

- `Luca-API-Version` '1'

## Response `200`

ok

- CampaignSimulationDetail
  - `id` string, uuid, required
  - `campaignId` string, uuid, required
  - `sourceKind` 'fake_input' | 'seed_case' | 'replayed_enrollment', required
  - `eventType` 'instagram_comment' | 'instagram_dm' | 'whatsapp_reply' | 'booking_event' | 'crm_event' | 'webhook_event' | 'csv_import' | 'manual_enrollment', required
  - `status` 'completed' | 'waiting' | 'blocked' | 'max_steps', required
  - `finalNodeId` string, nullable, required
  - `blockers` object[], required
    - `code` string, required
    - `severity` 'blocker' | 'warning', required
    - `message` string, required
    - `nodeId` string
    - `edgeId` string
  - `warnings` object[], required
    - `code` string, required
    - `severity` 'blocker' | 'warning', required
    - `message` string, required
    - `nodeId` string
    - `edgeId` string
  - `createdByUserId` string, nullable, required
  - `createdAt` string, required
  - `updatedAt` string, required
  - `draftGraphHash` string, required
  - `campaignVersionId` string, uuid, nullable, required
  - `replayedEnrollmentId` string, uuid, nullable, required
  - `input` object, required
    - `lead` object, required
    - `eventPayload` object, required
    - `context` object, required
    - `startNodeId` string, nullable, required
    - `maxSteps` integer, required
  - `trace` object[], required
    - `id` string, uuid
    - `index` integer, required
    - `nodeId` string, required
    - `nodeType` union, required
      - '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'
      - 'missing'
    - `decision` 'node_missing' | 'complete' | 'complete_no_next' | 'wait_timer' | 'wait_event' | 'wait_condition' | 'advance', required
    - `nextNodeId` string, nullable, required
    - `branchOutcome` string, nullable, required
    - `action` unknown
    - `mockedSideEffect` object, nullable, required
    - `generatedDraft` string, nullable, required
    - `waitMs` integer, nullable, required
    - `findings` object[], required
      - `code` string, required
      - `severity` 'blocker' | 'warning', required
      - `message` string, required
      - `nodeId` string
      - `edgeId` string
    - `createdAt` string
  - `generatedDrafts` string[], required
  - `mockedSideEffects` object[], required
  - `outcome` object, required

## Other responses

- `401`: unauthorized
- `404`: not found
- `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)
