---
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 Customer][Only for Customer]: Background information about the Customer, shown only to the Customer during the roleplay to get into the role. (e.g., - **Background**: Amy has a degree in Hospitality Management and has worked in various roles within the tourism industry. She seeks solutions that streamline administrative tasks and enhance the customer booking experience. - **Sales potential** – wants to see a clear path to increased revenue through OTAs. - **Cultural background**: Grew up in a middle-class family in Brisbane, values efficiency and customer satisfaction.
      - `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 Customer, shown to the Seller. Use specific and vivid descriptions that include the Customer's full name, the company name, the Customer's title, and detailed background information to ensure realism. Only use information that the Seller would also know (e.g., personality, background information) or would be publicly available (e.g., from social media or their company website), and is relevant for the Seller to know (i.e., is relevant to the scenario and goal). **Avoid omniscient details**: Do not include motives, goals, or background information that Seller wouldn't 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 Customer. (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][Adress Customer][Imperative][Use Conditional IF THEN for Instructions][Only for Customer] These are instructions, including reactions to potential events in the conversation, for the Customer. In this field, you make adjustments to the conversation flow and the reactions of the Customer depending on the Seller's behaviour. Shown only to the Customer. The first conversation Item should also instruct the customer how to begin the call. (e.g. When you begin the call, answer in a friendly manner. You aren't sure who is calling and it might be a potential client, so you want to be kind.) Then after, e.g. Stay reserved and let the seller take full control of the ending of the conversation. IFF the seller clearly proposes an action for you to take next, THEN agree to it and end the call. | IFF they offer a solution, THEN express that you're interested in learning more.)
        - `conversation_step_title` string, required — [Noun Phrase] OR [Address Customer Persona][You][Imperative][Only for Customer]: Conversation Items the outline of the conversation for the Customer. Formulate them as conversation steps that the customer should follow. Only shown to the Customer. (e.g. "Answer the phone in a friendly manner, Decide if you agree with the seller, Let the seller continue, Wait for the seller to end the conversation")
      - `description` string, required — [Address Seller][You][Imperative][Only for Seller] Describe the situation to the Seller, who does not know anything about it. In a few sentences, a Seller has to understand who they are talking to, what type of call it is, and what, if any, previous interactions they've had with the Customer. Only include information the Seller would know at the beginning of the interaction. Avoid repeating goals and frameworks or giving advice. Use a MAXIMUM of 3 short, clear sentences. The text MUST have a Flesch Reading Ease score of 80. Shown to the Seller. (e.g. You are continuing your call with Amy. Earlier, she said they work with a local OTA, but sales have been very low. She had to put the call on hold to help a customer.)
      - `description_for_ai` string, required — [Address Customer][You][Only for Customer] Situation - Instructions for the Customer to prepare for the conversation. It is important that this field contains everything the Customer may need to know about the scenario. Use this as a short pre-briefing for the Customer. This information is only shown the Customer (e.g. You are talking to a seller from GetYourGuide. You're having a very busy day and aren't happy about being interrupted. You had to put the conversation on hold to help a customer. Now you are returning to the call. Before putting the call on hold, you discussed your past experience with a local OTA. You told the seller that the OTA was difficult to work with and didn't result in more bookings.)
      - `duration` number, required
      - `firstMessage` string
      - `firstMessageMode` 'assistant-speaks-first' | 'assistant-waits-for-user' | 'assistant-speaks-first-with-model-generated-message'
      - `goal` string, required — [Address Seller][You][Imperative][Infinitive] The goal the Seller should achieve in the scenario, including the framework they should apply. Use a single short, clear sentence. The text MUST have a Flesch Reading Ease score of 80. Shown to the Seller. (e.g. Book a follow-up meeting using the ICON framework.)
      - `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 that the seller should be evaluated on. Each scorecard item corresponds either to a specific step in a sales conversation (e.g. if the Seller must begin the conversation with a permission-based opening) or to the entire conversation (e.g. if the Seller must listen actively throughout the conversation). This information is for the Seller to know what the Sales Coach evaluates and coaches the Seller on.
        - `description` string, required — [Address Coach][Imperative][You] but [Use Third Person for User/Persona][Indicative][Only for Coach] Explains to the coach where the user behaviors occurs in the conversation, how to evaluate the behaviors, and, if relevant, a description of the framework used in the conversation. Shown only to the coach. (e.g. After the prospect has signaled that they're interested in moving forward with Uber, the seller needs to wrap up the conversation using a summary close. Be lenient in evaluating whether the seller adequately implemented the first step.)
        - `desired_behaviours` object[]
          - `behaviour` string, required — [Information for Coach and User][Use Third Person for Persona/User][Indicative][Descriptive] The behaviour of the user needs to demonstrate to master this scorecard item. Shown to the coach and the user. (e.g. "The seller asks the customer about their experience with the product." | "The seller establishes clear next steps for the prospect.")
          - `examples` string — array - [Direct Quotes] A list of examples of quotes that demonstrate the desired user behaviour, shown to the coach and the user. (e.g. "It only takes a few minutes to sign up—should we go ahead and get you started now?" |"So just to sum up, you're looking for ways to maximize your earnings.
        - `desired_outcome` string — [Third Person][they (user/persona)][Indicative] Specifies the goal (or, better, the **outcome**) that the user is expected to achieve to master this scorecard item, as a behavior shown by the persona. (e.g. "The customer agrees to a follow-up," | "The customer confirms their concerns have been addressed.")
        - `item_title` string, required — [Noun Phrase] OR [Address User][You][Imperative]: The title of the scorecard item, shown to the coach and the user. (e.g. Introduce yourself to the customer by name | Ask the customer if they have already considered e-mobility | Show your own enthusiasm for electric driving)
      - `language` 'de' | 'en' | 'fr' | 'es' | 'it' | 'nl' | 'zh-Hans', required — The language of the scorecard
      - `tag` string, required
      - `title` string, required — [Proper Noun] The title of the scorecard. Shown only to the Sales Coach. (e.g. Cold Call - ICON - Summary Close)
    - `title` string, required — [Proper Noun] The title of the roleplay. Shown only to the Sales Coach. Be short and descriptive (e.g. Discovery Call: Identify Pauls Pains, Cold Call with Zoe, Objection Handling with Feel Felt Found - Part 2)
    - `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.net/wejam/apis/jam.md) · [All operations](https://skmtc.net/wejam/apis/jam/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/wejam/jam/revisions/bd5a5f406bca/schema)
