---
title: "Ensure an eligible campaign's questionnaire assignment"
method: POST
path: "/questionnaires/{campaign_id}/ensure"
tags: ["Questionnaires"]
---

# Ensure an eligible campaign's questionnaire assignment

`POST /questionnaires/{campaign_id}/ensure`

## 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/questionnaires/{campaign_id}/ensure`
- Auth: HTTP bearer

Returns or creates the same live questionnaire when the campaign currently requires the writing questionnaire.

## Path parameters

- `campaign_id` string, uuid, required

## Response `200`

Campaign questionnaire assignment ensured successfully

- CampaignQuestionnaire, nullable
  - `id` string, uuid, required
  - `campaign_id` string, uuid, required
  - `status` 'in_progress' | 'submitted' | 'unlocked', required
  - `story_type` 'PROFILE_ARTICLE' | 'THOUGHT_LEADERSHIP' | 'LISTICLE' | 'PRESS_RELEASE' | 'EDUCATION' | 'PERSONAL_EXPERIENCE' | 'CASE_STUDY', nullable, required
  - `story_selected_at` string, nullable, required
  - `submitted_at` string, nullable, required
  - `unlocked_at` string, nullable, required
  - `unlock_note` string, nullable, required
  - `eligibility` object, required
    - `story_module` boolean, required
    - `eligible_story_types` string[], required
    - `preselected` 'PROFILE_ARTICLE' | 'THOUGHT_LEADERSHIP' | 'LISTICLE' | 'PRESS_RELEASE' | 'EDUCATION' | 'PERSONAL_EXPERIENCE' | 'CASE_STUDY', nullable, required
    - `recommendations` object[], required
      - `story_type` 'PROFILE_ARTICLE' | 'THOUGHT_LEADERSHIP' | 'LISTICLE' | 'PRESS_RELEASE' | 'EDUCATION' | 'PERSONAL_EXPERIENCE' | 'CASE_STUDY', required
      - `rank` integer, required
      - `reasons` string[], required
  - `modules` object[], required
    - `module_type` 'PROFILE' | 'SHARED_CORE' | 'STORY', required
    - `form_key` string, required
    - `name` string, required
    - `fields` QuestionnaireField[], 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'
    - `answers` object, required
    - `completeness` QuestionnaireCompleteness, required
      - `core_complete` boolean, required
      - `unanswered_core` string[], required
      - `optional_remaining` integer, required
      - `answered_count` integer, required
      - `total_count` integer, required
  - `overall_completeness` QuestionnaireCompleteness, required
    - `core_complete` boolean, required
    - `unanswered_core` string[], required
    - `optional_remaining` integer, required
    - `answered_count` integer, required
    - `total_count` integer, required
  - `pending_story_core_count` integer
  - `profile_tags` object, required
    - `audience` string[], required
    - `topic` string[], required

## Other responses

- `409`: The campaign does not currently require the writing questionnaire.

---

[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)
