---
title: "Create a mission from a draft"
method: POST
path: "/api/v1/generator/missions/draft"
tags: ["cms"]
---

# Create a mission from a draft

`POST /api/v1/generator/missions/draft`

## Request body

- GeneratorCreateMissionFromDraftRequestDTO
  - `draft` object, required
    - `additional_material` object[] — Array of additional materials (e.g. links, documents) provided for the mission.
      - `relationTo` 'client-documents' | 'external-links', required
      - `value` string, required
    - `conversation_topic` string[]
    - `difficulty` 'easy' | 'medium' | 'hard', required
    - `hide_examples` boolean — Whether learners should not see desired behaviour examples for this mission.
    - `hide_scorecard` boolean — Whether learners should not see the mission scorecard.
    - `keywords` string[]
    - `language` 'de' | 'en' | 'fr' | 'es' | 'it' | 'nl' | 'zh-Hans', required — The language of the mission
    - `persona` object, required
      - `age` number
      - `ai_instruction` string, required — [Third Person Singular][Description of Persona][Only for Persona]: Private background and behavioral instructions shown only to the Persona during the roleplay. Include attitudes, motivations, needs, challenges, objections, decision criteria, communication style, personal background, and observable quirks needed to play the role authentically.
      - `avatar_file` object, required
        - `age` integer, required
        - `alt` string, nullable
        - `createdAt` string, required
        - `filename` string, required
        - `filesize` number, required
        - `gender` 'male' | 'female', required
        - `height` number, required
        - `id` string, required
        - `mimeType` string, required
        - `reusable` boolean, required
        - `sizes` object
          - `card` object
            - `url` string, nullable
          - `thumbnail` object
            - `url` string, nullable
        - `updatedAt` string, required
        - `url` string, required
        - `width` number, required
      - `description` string, required — [Third Person Form] Description of the Persona, shown to the Learner. Use specific and vivid descriptions that include the Persona's full name, role, and relevant public background. Only use information the Learner would realistically know from previous interactions or public sources and that is relevant to the scenario and goal. **Avoid omniscient details**: Do not include motives, goals, personality, needs, objections, or background information the Learner would not realistically know. **Keep it concise**: Trim unnecessary details from the persona description. ✅ Good example: "Martin Weber, is the managing director of **Weber Carpentry**. His LinkedIn shows he has been recruiting a lot of new staff recently.". 🚫 Bad example: "Martin Weber is the managing director of a medium-sized craft business in Franconia, seeking new staff. In his weekends, he likes to play golf and spend time with his grandchildren."
      - `gender` 'male' | 'female', required — enum - The gender of the persona ('female', 'male'). (e.g., 'female')
      - `language` 'de' | 'en' | 'fr' | 'es' | 'it' | 'nl' | 'zh-Hans', required — The language of the persona
      - `name` string, required — The name of the Persona. (e.g., Amy Johnson)
      - `role` string, required — [Conversation Role] The role the persona plays in the conversation. For B2B sales conversations, use their job title or function. If there is no workplace, use their relationship to the conversation, such as "Prospective buyer," "Existing customer," or "Private customer." For role-plays about manager skills, use their relationship to the learner, such as "Team member." This is shown to the learner and used to instruct the AI during the role-play.
      - `voice` object, required
        - `id` string, required
        - `voice_id` string, required
      - `workplace_description` string, nullable — [Third Person Singular/Plural] Description of the company where the persona works, shown to the learner (e.g., Brisbane Cruises is a premier company offering scenic boat tours in Brisbane, Australia. The company specializes in providing unique experiences on the water, showcasing the beauty of Brisbane's rivers and waterways.) Leave empty when a workplace is not relevant, including private-customer and manager-skills role-plays.
      - `workplace_name` string, nullable — [Proper Noun or Descriptive Label] The name or type of the workplace/company where the persona currently works, shown to the learner. (e.g., Brisbane Cruises) Leave empty when a workplace is not relevant, including private-customer and manager-skills role-plays. Never invent a workplace just to populate this field.
    - `scenario` object, required
      - `conversation_items` object[], required — array - A list of conversation items, using conversationItems.
        - `conversation_step_instructions` string — [You][Address Persona][Imperative][Use Conditional IF THEN for Instructions][Only for Persona] Instructions, including reactions to observable events, for the Persona. Adjust the conversation flow and the Persona's reactions based on the Learner's behavior. Shown only to the Persona. The first item should instruct the Persona how to begin. The decision step should establish the outcome without ending the conversation, and the final step should explicitly end it.
        - `conversation_step_title` string, required — [Noun Phrase] OR [Address AI Persona][You][Imperative][Only for Persona]: A conversation step the Persona should follow. Formulate it as an instruction to the Persona. Only shown to the Persona. (e.g. "Answer the phone warmly", "Decide whether you agree with the learner", "Let the learner continue", "End the conversation")
      - `description` string, required — [Address Learner][You][Imperative][Only for Learner] In no more than 3 short sentences, describe the conversation type, why it is happening, and any previous interaction with the Persona. Include only facts the Learner would realistically know at the start. Do not repeat the goal or reveal private Persona information. Shown to the Learner.
      - `description_for_ai` string, required — [Address Persona][You][Only for Persona] Set the scene as a director would brief an actor immediately before the interaction. Include the current mood, preceding events, whether the interaction is planned, and relevant prior contact. Focus on what is happening, not who the Persona is. Shown only to the Persona.
      - `duration` number, required
      - `firstMessage` string
      - `firstMessageMode` 'assistant-speaks-first' | 'assistant-waits-for-user' | 'assistant-speaks-first-with-model-generated-message'
      - `goal` string, required — [Address Learner][You][Imperative][Infinitive] The goal the Learner should achieve in the scenario. Use one specific, measurable sentence beginning with an action verb, no more than 96 characters including spaces, and ending with a period. Shown to the Learner.
      - `language` 'de' | 'en' | 'fr' | 'es' | 'it' | 'nl' | 'zh-Hans', required — The language of the scenario
      - `tag` string, required
    - `scorecard` object, required
      - `items` object[], required — array - A list of scorecard items used to evaluate the Learner. Each item applies either to a specific step or to the whole conversation. This information tells the Learner what the coach evaluates and coaches.
        - `description` string, required — [Address Coach][Imperative][You] but [Use Third Person for Learner/Persona][Indicative][Only for Coach] Concise, evidence-focused scoring instructions. State the shared context, where in the conversation to look for evidence, what happened immediately beforehand when relevant, and how strict or lenient to be. Do not repeat the Desired Behaviors.
        - `desired_behaviours` object[]
          - `behaviour` string, required — [Information for Coach and Learner][Use Third Person for Persona/Learner][Indicative][Descriptive] One discrete verbal behavior the Learner needs to demonstrate to master this scorecard item. Shown to the coach and the Learner. Start with the descriptor for the Learner role. (e.g. "The seller asks the customer about their experience with the product." | "The manager summarizes the team member’s concern.")
          - `examples` string — array - [Direct Quotes] Exactly 3 example utterances that demonstrate the desired Learner behavior, shown to the coach and the Learner. The examples should differ in wording and tone.
        - `desired_outcome` string — [Third Person][Persona][Indicative] The observable outcome the Learner is expected to achieve, expressed as a behavior shown by the Persona. Use the form "The [Persona descriptor] [does an observable action]." (e.g. "The customer agrees to a follow-up." | "The team member confirms their concern was understood.")
        - `item_title` string, required — [Noun Phrase] OR [Address Learner][You][Imperative]: A short, descriptive title for the scorecard item, shown to the coach and Learner. Use the Learner’s role descriptor when relevant.
      - `language` 'de' | 'en' | 'fr' | 'es' | 'it' | 'nl' | 'zh-Hans', required — The language of the scorecard
      - `tag` string, required
      - `title` string, required — [Proper Noun] A short, descriptive title for the scorecard, shown to the coach.
    - `title` string, required — [Proper Noun] A short, descriptive title for the roleplay mission.
    - `toolIds` string[]
  - `missionId` string, required — The ID of the mission to create from draft

## Response `201`

- MissionResponseDTO
  - `additional_material` union[], nullable — Additional materials attached to the mission
    - union
      - object
        - `relationTo` 'client-documents', required
        - `value` union, required
          - string — Document ID
          - object
            - `createdAt` string, required — Creation timestamp
            - `description` string, nullable — Optional description of the document
            - `filename` string, nullable — Original filename of the document
            - `filesize` number, nullable — File size in bytes
            - `height` number, nullable — Image height in pixels (if applicable)
            - `id` string, required — Unique identifier for the client document
            - `mimeType` string, nullable — MIME type of the document
            - `signedUrl` string, nullable — Signed URL for secure document access
            - `title` string, required — Title of the document
            - `updatedAt` string, required — Last update timestamp
            - `url` string, nullable — Public URL to access the document
            - `width` number, nullable — Image width in pixels (if applicable)
      - object
        - `relationTo` 'external-links', required
        - `value` union, required
          - string — External link ID
          - object
            - `createdAt` string, required — Creation timestamp
            - `description` string, nullable — Optional description of the external link
            - `id` string, required — Unique identifier for the external link
            - `title` string, required — Title of the external link
            - `updatedAt` string, required — Last update timestamp
            - `url` string, required — URL of the external resource
      - object
        - `relationTo` 'text-snippets', required
        - `value` union, required
          - string — Text snippet ID
          - object
            - `createdAt` string, required — Creation timestamp
            - `description` string, required — Content of the text snippet
            - `id` string, required — Unique identifier for the text snippet
            - `language` 'en' | 'de' | 'fr' | 'es' | 'it' | 'nl' | 'zh-Hans', required — Language of the text snippet
            - `title` string, required — Title of the text snippet
            - `updatedAt` string, required — Last update timestamp
  - `createdAt` string, required — Creation timestamp
  - `difficulty` string, required — Difficulty level of the mission
  - `hide_examples` boolean, nullable — Whether learners should not see desired behaviour examples for this mission.
  - `hide_scorecard` boolean, nullable — Whether learners should not see the mission scorecard.
  - `id` string, required — Unique identifier for the mission
  - `language` 'en' | 'de' | 'fr' | 'es' | 'it' | 'nl' | 'zh-Hans', required
  - `persona` object, required — Persona assigned to this mission
    - `avatar_file` object, required — Avatar image for the persona
      - `createdAt` string, required — Creation timestamp
      - `filename` string, required — Original filename of the avatar
      - `filesize` number, required — File size in bytes
      - `height` number, required — Image height in pixels
      - `id` string, required — Unique identifier for the avatar file
      - `mimeType` string, required — MIME type of the avatar file
      - `sizes` object, required — Available size variants for the avatar
        - `card` object — Card size preview URL
          - `url` string — Preview URL for the image
        - `thumbnail` object — Thumbnail size preview URL
          - `url` string — Preview URL for the image
      - `updatedAt` string, required — Last update timestamp
      - `url` string, required — Public URL to access the avatar
      - `width` number, required — Image width in pixels
    - `createdAt` string, required — Creation timestamp
    - `description` string, nullable — Optional description of the persona
    - `name` string, required — Full name of the persona
    - `role` string, required — The role the persona plays in the conversation. For B2B sales conversations, use their job title or function. If there is no workplace, use their relationship to the conversation, such as "Prospective buyer," "Existing customer," or "Private customer." For role-plays about manager skills, use their relationship to the learner, such as "Team member." This is shown to the learner and used to instruct the AI during the role-play.
    - `updatedAt` string, required — Last update timestamp
    - `workplace_description` string — Optional description of the workplace
    - `workplace_name` string — Name of the workplace where the persona works. Empty when no workplace is relevant.
  - `saga` object, required — Saga that contains this mission
    - `id` string, required — Unique identifier for the saga
    - `name` string, required — Name of the saga
  - `scenario` object, required — Scenario details for the mission
    - `description` string, required — Detailed description of the scenario
    - `duration` number, required — Expected duration in minutes
    - `goal` string, required — Primary goal or objective of the scenario
    - `tag` string — Optional tag for categorizing the scenario
  - `scorecard` object, required — Scorecard for evaluating the mission
    - `id` string, required — Unique identifier for the scorecard
    - `items` object[], required — List of scorecard evaluation items
      - `desired_behaviours` object[], nullable — Array of desired behaviors for this item
        - `behaviour` string, required — Description of the desired behavior
        - `examples` string, nullable — List of examples demonstrating the behavior
      - `desired_outcome` string, nullable — Goal or objective for this specific item
      - `id` string, required — Unique identifier for the scorecard item
      - `item_title` string — Optional title for the scorecard item
    - `title` string, required — Title of the scorecard
  - `title` string, required — Title of the mission
  - `updatedAt` string, required — Last update timestamp

---

[API](https://skmtc.dev/wejam/apis/jam.md) · [All operations](https://skmtc.dev/wejam/apis/jam/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/wejam/jam/revisions/b4e171f8d0f4/schema)
