---
title: "Compile a campaign's writer packet"
method: GET
path: "/admin/questionnaires/{campaign_id}/packet"
tags: ["Admin"]
---

# Compile a campaign's writer packet

`GET /admin/questionnaires/{campaign_id}/packet`

## Request

- Base URL: `https://api.presscart.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.presscart.com/admin/questionnaires/{campaign_id}/packet`
- Auth: HTTP bearer

Compiles the writer-facing packet for a campaign questionnaire. Once the questionnaire has been submitted, this always renders from the frozen submission snapshot, never live answers - the freeze invariant compileWriterPacketService enforces.

## Path parameters

- `campaign_id` string, uuid, required

## Response `200`

Writer packet compiled successfully

- WriterPacket
  - `status` 'pending' | 'submitted', required
  - `submitted_at` string, nullable, required
  - `story_type` 'PROFILE_ARTICLE' | 'THOUGHT_LEADERSHIP' | 'LISTICLE' | 'PRESS_RELEASE' | 'EDUCATION' | 'PERSONAL_EXPERIENCE' | 'CASE_STUDY', nullable, required
  - `modules` WriterPacketModule[], required
    - `module_type` 'PROFILE' | 'SHARED_CORE' | 'STORY', required
    - `form_key` string, required
    - `name` string, required
    - `story_type` 'PROFILE_ARTICLE' | 'THOUGHT_LEADERSHIP' | 'LISTICLE' | 'PRESS_RELEASE' | 'EDUCATION' | 'PERSONAL_EXPERIENCE' | 'CASE_STUDY'
    - `fields` WriterPacketField[], required
      - `key` string, required
      - `label` string, required
      - `type` 'TEXT' | 'TEXTAREA' | 'RICH_TEXT' | 'SELECT' | 'MULTISELECT' | 'BOOLEAN' | 'NUMBER' | 'DATE' | 'URL' | 'EMAIL' | 'FILE', required
      - `required` boolean
      - `core` boolean
      - `order` integer, required
      - `options` string[]
      - `placeholder` string
      - `ai_assist` 'manual' | 'suggestion' | 'prefill'
      - `example_answer` string
      - `how_to_answer` string
      - `drill_down_prompts` string[]
      - `profile_write_through` 'name' | 'website_url' | 'overview' | 'products_and_services' | 'founded_year' | 'key_achievements' | 'unique_value_propositions' | 'legal_company_name'
      - `capture` 'audience_tags' | 'industry_tags'
      - `answer` object, nullable, required
        - `value` union, required
          - string
          - string[]
          - number
          - boolean
          - unknown
          - unknown
        - `source` string, required
        - `confidence` number, nullable, required
        - `derived_from` string, nullable
  - `completeness` QuestionnaireCompleteness, required
    - `core_complete` boolean, required
    - `unanswered_core` string[], required
    - `optional_remaining` integer, required
    - `answered_count` integer, required
    - `total_count` integer, required
  - `diff` SnapshotDiff, nullable, required
    - `sections` object[], required
      - `module_type` 'PROFILE' | 'SHARED_CORE' | 'STORY', required
      - `form_key` string, required
      - `kind` 'unchanged' | 'changed' | 'replaced' | 'added', required
      - `replaced_from` object
        - `form_key` string, required
        - `story_type` 'PROFILE_ARTICLE' | 'THOUGHT_LEADERSHIP' | 'LISTICLE' | 'PRESS_RELEASE' | 'EDUCATION' | 'PERSONAL_EXPERIENCE' | 'CASE_STUDY'
      - `changed_fields` object[], required
        - `field_key` string, required
        - `previous` union, required
          - string
          - string[]
          - number
          - boolean
          - unknown
          - unknown
        - `current` union, required
          - string
          - string[]
          - number
          - boolean
          - unknown
          - unknown
  - `unlock` object, nullable, required
    - `unlocked_at` string, required
    - `note` string, required

---

[API](https://skmtc.dev/presscart/apis/presscart-prod-api.md) · [All operations](https://skmtc.dev/presscart/apis/presscart-prod-api/llms.txt) · [OpenAPI document](https://skmtc.dev/presscart/apis/presscart-prod-api/revisions/2154581d845e?raw)
