> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.dumgum.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Generate (asynchronous)

> Enqueue a conversation to be processed asynchronously



## OpenAPI

````yaml POST /cs/v1/content_creation/conversations/enqueue
openapi: 3.1.0
info:
  title: DumGum
  version: '2.0'
servers:
  - url: https://api.dumgum.com
security:
  - bearerAuth: []
paths:
  /cs/v1/content_creation/conversations/enqueue:
    post:
      tags:
        - content-creation
      summary: Generate (asynchronous)
      description: Enqueue a conversation to be processed asynchronously
      operationId: content-creation-conversations-enqueue
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentCreationConversationEnqueueRequest'
        required: true
      responses:
        '204':
          description: No Content
components:
  schemas:
    ContentCreationConversationEnqueueRequest:
      type: object
      description: Represents a request to enqueue a conversation
      properties:
        userProfileId:
          type: string
          description: >-
            A user profile ID; this will represent the profile that will receive
            the generated reply.
        personaProfileId:
          type: string
          description: >-
            A persona profile ID; this will represent the profile that our
            operator will impersonate.
        language:
          type: string
          description: The language used to generate the reply.
          enum:
            - EN
            - EN_GB
            - FR
            - FR_BE
            - RO
            - NL
            - ES
            - DE
            - DE_CH
            - DE_AT
            - IT
            - ES_LATAM
            - BG
            - HE
            - JA
            - NL_BE
            - EN_AU
            - PT_PT
            - PT_BR
            - SV_SE
            - DA_DK
            - FI_FI
            - PL_PL
            - LT_LT
            - NB_NO
            - NN_NO
            - SL_SI
            - HU
            - HU_HU
            - CS_CZ
            - EL_GR
            - EL_GR_LATIN
            - EL_GR_GREEK
            - HR_HR
            - TR_TR
            - EN_IE
            - AF_ZA
            - ZU_ZA
            - LV_LV
            - SK_SK
            - GA_IE
            - SR_RS
            - ET_EE
            - EN_CA
            - FR_CA
            - RU_RU
            - UA_UA
        additionalLanguages:
          type: array
          description: >-
            A list of additional languages that can be used to generate the
            reply. Currently, we support only one additional language.
          items:
            type: string
            enum:
              - EN
              - EN_GB
              - FR
              - FR_BE
              - RO
              - NL
              - ES
              - DE
              - DE_CH
              - DE_AT
              - IT
              - ES_LATAM
              - BG
              - HE
              - JA
              - NL_BE
              - EN_AU
              - PT_PT
              - PT_BR
              - SV_SE
              - DA_DK
              - FI_FI
              - PL_PL
              - LT_LT
              - NB_NO
              - NN_NO
              - SL_SI
              - HU
              - HU_HU
              - CS_CZ
              - EL_GR
              - EL_GR_LATIN
              - EL_GR_GREEK
              - HR_HR
              - TR_TR
              - EN_IE
              - AF_ZA
              - ZU_ZA
              - LV_LV
              - SK_SK
              - GA_IE
              - SR_RS
              - ET_EE
              - EN_CA
              - FR_CA
              - RU_RU
              - UA_UA
          maxItems: 1
          minItems: 0
        userProfileVersion:
          type:
            - string
            - 'null'
          description: >-
            Specify the current user profile version. If it differs from the
            stored version, it will trigger a profile data refresh.
        personaProfileVersion:
          type:
            - string
            - 'null'
          description: >-
            Specify the current persona profile version. If it differs from the
            stored version, it will trigger a profile data refresh.
        tags:
          type:
            - object
            - 'null'
          additionalProperties:
            type: string
          description: >-
            A map of tags to associate with the generated answer. You can use
            any key-value pair to store additional information along with your
            request.

            You can use this to store arbitrary metadata, for events tracking or
            statistics.
        testMode:
          type:
            - boolean
            - 'null'
          description: >-
            Specify whether the conversation should be processed in test mode.
            In test mode, you will receive a dummy answer, which is useful for
            testing purposes.

            > **You will not be charged** when using test mode.
        replyParameters:
          $ref: >-
            #/components/schemas/ContentCreationQueueConversationReplyParameterSet
          type:
            - object
            - 'null'
          description: >-
            A set of parameters that allow you to customize the reply you
            receive from us, enabling greater flexibility and control over the
            response format, content, and behavior.
      required:
        - language
        - personaProfileId
        - userProfileId
    ContentCreationQueueConversationReplyParameterSet:
      type: object
      properties:
        chatModel:
          type:
            - string
            - 'null'
          default: chat-2-smart
          description: >

            Allows you to set the AI chat model to use for generating the reply.

            If not specified, the default model will be used.

            The default model is `dating-smart-1`.

            **🚨🚨🚨 IMPORTANT NOTE: the default model is subject to change at
            any time, if you want to stick with a specific model make sure to
            provide it explicitly.**
          enum:
            - chat-2-smart
            - chat-2-pro
        bufferSeconds:
          type: integer
          format: int32
          default: '5'
          description: >-
            Allows you to set the AI buffer time (in seconds). This delay
            enables the AI to wait before generating a response, allowing it to
            accumulate more messages.

            If not specified, defaults to `5` seconds.
          maximum: 180
          minimum: 0
        maxProcessingTimeSeconds:
          type: integer
          format: int32
          default: '300'
          description: >

            Allows you to set the maximum processing time (in seconds) for a
            reply.

            If this time limit is exceeded, the conversation will be dropped,
            and

            you will receive an `conversation.dropped` webhook event.

            If not specified, defaults to `300` seconds.


            > **WARNING: This value may occasionally be exceeded by several
            seconds due to various factors.**
          maximum: 86400
          minimum: 300
        enableSexualTextContent:
          type: boolean
          default: null
          description: |-
            Allows our chat models to generate sexual text content.
            If not specified, defaults to `true`.
        fixedResponseLength:
          type: boolean
          default: false
          description: >-
            Force our chat model to strictly respect `aiSentenceLength` and
            `aiMessageLength` parameters.

            If not specified, defaults to `false`.
        sentenceLength:
          type:
            - string
            - 'null'
          default: null
          description: >-
            Allow you to specify the length of the sentences composing the
            response.
          enum:
            - SHORT
            - REGULAR
            - LONG
        messageLength:
          type:
            - string
            - 'null'
          default: null
          description: Allow you to specify the length of the response
          enum:
            - SHORT
            - REGULAR
            - LONG
            - VERY_LONG
        personaPersonality:
          type:
            - string
            - 'null'
          default: null
          description: Allow you to override the personality given to the persona
          enum:
            - SUPPORTIVE
            - TEASING
            - CONFIDENT
            - GEEKY
            - POETIC
            - HIGH_ENERGY
            - INTELLECTUAL
            - ROMANTIC
            - SARCASTIC
            - POSSESSIVE
            - NATURAL
            - APPRECIATIVE
            - PASSIONATE
        generatePersonality:
          type:
            - boolean
            - 'null'
          default: null
          description: >-
            Automatically generate the personality of the persona profile
            (SoulEngine). This will incurs an additional cost to the reply.
        shareablePictures:
          type: array
          description: >

            A list of shareable picture objects that the persona is allowed to
            send when the user requests an image.

            Picture sharing is only supported on specific chat models:


            | Chat Model       | Picture Sharing Support |

            |------------------|-------------------------|

            | `chat-2-pro`   | ✅ Enabled               |

            | `chat-2-smart` | ✅ Enabled               |

            | `dating-pro-1`   | ❌ Not Supported         |

            | `dating-smart-1` | ❌ Not Supported         |
          items:
            $ref: '#/components/schemas/ShareablePicture'
        shareableVideos:
          type: array
          description: >

            A list of shareable video objects that the persona is allowed to
            send when the user requests a video.

            A reply carries at most one medium: either a picture or a video,
            never both.

            Video sharing is only supported on specific chat models:


            | Chat Model       | Video Sharing Support |

            |------------------|-----------------------|

            | `chat-2-pro`   | ✅ Enabled             |

            | `chat-2-smart` | ✅ Enabled             |

            | `dating-pro-1`   | ❌ Not Supported       |

            | `dating-smart-1` | ❌ Not Supported       |
          items:
            $ref: '#/components/schemas/ShareableVideo'
        emojis:
          type: string
          description: >

            Allows our operator/chat models to add emojis to the reply.

            | Emoji Frequency | Description |

            |----------------|-------------|

            | `FREQUENT`     | 50% at least 1 and maybe 1 more emoji if
            appropriate / 50% 1 if appropriate |

            | `SOMETIMES`    | 75% 1 if appropriate / 25% no emoji |

            | `RARELY`       | 75% no emoji / 25% 1 if appropriate |

            | `NEVER`        | 100% no emoji |
          enum:
            - FREQUENT
            - SOMETIMES
            - RARELY
            - NEVER
        fluencyDegradation:
          type:
            - string
            - 'null'
          default: null
          description: >-
            Allows our chat model to degrade the text content generation quality
            to improve human-like response. Defaults to `NONE` or `LOW` randomly
            (50/50).
          enum:
            - LOW
            - MEDIUM
            - HIGH
            - NONE
        multipleMessagesPerReply:
          type:
            - boolean
            - 'null'
          default: false
          description: >-
            Allows our AI to split a long response into multiple shorter
            messages. If not specified, defaults to `false`.

            This provides a more natural conversation flow by breaking down
            lengthy responses.

            Note that every message sent has its own `answer.created` event.
        multipleMessagesPerReplyFrequency:
          type:
            - string
            - 'null'
          default: null
          description: >-
            Changes the chances of replying with several messages.

            Ignored unless multiple messages per reply are enabled — either with
            `multipleMessagesPerReply` on this request, or in your project
            settings.
          enum:
            - VERY_FREQUENT
            - FREQUENT
            - OCCASIONAL
            - RARE
        questionFrequency:
          type: number
          format: double
          description: >-
            Define the frequency of questions in the conversation.

            This can be used to control the pace and engagement of the
            conversation.

            The frequency control is best effort, and it may not always be
            perfectly accurate due to the nature of AI-generated responses.

            Example: `0.5` will result in 50% of the messages being questions.
          maximum: 1
          minimum: 0
        replyTypingDelay:
          type: string
          default: INSTANT
          description: >-

            Introduces a delay between the answer.processing and answer.created
            events to simulate human-like typing behavior. This can enhance user
            experience by making responses feel more natural.

            See the [Notify Your End
            Users](/best-practices/notify-your-end-users) use case for
            implementation example.
                
          enum:
            - INSTANT
            - FAST
            - NORMAL
        icebreakerType:
          type:
            - string
            - 'null'
          default: null
          deprecated: true
          description: >

            **Deprecated — use `engageType` instead.** Still honored for
            backward compatibility (and accepted on `NUDGE`/`REVIVE` as well,
            like `engageType`).


            Specifies the type of icebreaker message to use when starting a
            conversation.


            | Type             |
            Description                                                                   
            |

            |------------------|--------------------------------------------------------------------------------|

            | `AUTO`           | Automatically selects appropriate ice-breaker
            type                             |

            | `NO_PHOTO`       | Message about user having no
            photos                                            |

            | `MISSING_DETAIL` | Message about incomplete profile
            details                                       |

            | `MUCH_YOUNGER`   | Message addressing significant age difference
            (user younger)                   |

            | `MUCH_OLDER`     | Message addressing significant age difference
            (user older)                     |

            | `NEARBY`         | Message highlighting close
            proximity                                           |

            | `GENERIC`        | General conversation
            starter                                                   |

            | `USER_ONLINE`    | Message acknowledging user is currently
            online                                 |

            | `USER_OFFLINE`   | Message for offline
            users                                                      |

            | `JUST_JOINED`    | Welcome message for new
            users                                                  |

            | `EROTIC`         | The persona will initiate the conversation with
            a strongly erotic message      |

            | `PHOTO_COMMENT`  | The Persona will engage the conversation by
            commenting the User main picture   |

            | `HAPPY_BIRTHDAY` | Wish the User a happy birthday (valid on
            `ICEBREAKER`, `NUDGE`, and `REVIVE`)   |


            Icebreaker-only types (`NO_PHOTO`, `MISSING_DETAIL`, `MUCH_YOUNGER`,
            `MUCH_OLDER`, `NEARBY`, `GENERIC`, `USER_ONLINE`, `USER_OFFLINE`,
            `JUST_JOINED`, `PHOTO_COMMENT`) require `engage` = `AUTO` or
            `ICEBREAKER`; if sent for an engage mode they are not valid for,
            they fall back to `AUTO`.

            If `PHOTO_COMMENT` is used while the user doesn't have a main
            picture, the type will default to `AUTO`.
          enum:
            - AUTO
            - NO_PHOTO
            - MISSING_DETAIL
            - MUCH_YOUNGER
            - MUCH_OLDER
            - NEARBY
            - GENERIC
            - USER_ONLINE
            - USER_OFFLINE
            - JUST_JOINED
            - PHOTO_COMMENT
            - EROTIC
            - HAPPY_BIRTHDAY
        engageType:
          type:
            - string
            - 'null'
          default: null
          description: >

            Specifies the angle for an engagement message. Applies across engage
            modes (ICEBREAKER, NUDGE, REVIVE) per each type's applicability. If
            a type is sent for an engage mode it is not valid for, it falls back
            to AUTO. Replaces the deprecated icebreakerType.


            Two silent fallbacks to AUTO to be aware of: when `engage` is not
            set the type is validated against `ICEBREAKER`, and `PHOTO_COMMENT`
            falls back to AUTO when the user profile has no main picture.
          enum:
            - AUTO
            - NO_PHOTO
            - MISSING_DETAIL
            - MUCH_YOUNGER
            - MUCH_OLDER
            - NEARBY
            - GENERIC
            - USER_ONLINE
            - USER_OFFLINE
            - JUST_JOINED
            - PHOTO_COMMENT
            - EROTIC
            - HAPPY_BIRTHDAY
        meetingPolicy:
          type:
            - string
            - 'null'
          default: null
          description: >

            Controls how the Persona handles in-person meeting requests from the
            user.


            | Value | Description |

            |-------|-------------|

            | `DEFAULT_MODE` | (default when null) Warm refusal using a
            plausible personal excuse. Uses the stored long-term memory excuse
            if one is already present. |

            | `DEFERRED_MEETING` | Expresses genuine desire to meet first, then
            softly refuses with a personal excuse, and ends on a hopeful note. |

            | `RAINCHECK` | Declines with a specific, time-bound excuse and
            explicitly signals that meeting will happen later. Re-engages by
            showing interest in the user. |

            | `CHAT_ONLY` | Firm but warm redirect back to the conversation. No
            implied future possibility of meeting. No personal-life excuses. |

            | `EAGER_TO_MEET` | Always accepts meeting requests with immediate
            enthusiasm, treating the meeting as real and imminent. Pure fantasy
            — never refuses, defers, or breaks the illusion. Excluded from the
            IRL_MEETING_ACCEPTANCE guardrail. |
          enum:
            - DEFAULT_MODE
            - DEFERRED_MEETING
            - RAINCHECK
            - CHAT_ONLY
            - EAGER_TO_MEET
        engage:
          type:
            - string
            - 'null'
          default: null
          description: >

            Manages engagement messages in conversations. By default, engagement
            messages are disabled.

            Set to `AUTO` for context-based engagement type selection.

            Note: Using specific values instead of `AUTO` will force that
            engagement type regardless of context.


            | Value        |
            Description                                                                                                                                             
            |

            |--------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|

            | `AUTO`       | Selects best engagement type based on
            context                                                                                                           
            |

            | `ICEBREAKER` | Sends an icebreaker message when starting a new
            conversation. You can specify the `engageType` parameter (the
            canonical field) to force a specific type; `icebreakerType` is still
            accepted for backward compatibility. |

            | `NUDGE`      | Sends re-engagement message after
            inactivity                                                                                                            
            |

            | `REVIVE`     | Sends messages to reactivate dormant
            conversations                                                                                                      
            |


            Takes precedence over `action`: when an engagement message is
            produced, an `action` sent on the same request (such as
            `PAUSE_CONVERSATION` or `USER_PHOTO_REACTION`) is ignored. Send them
            on separate requests.
          enum:
            - AUTO
            - ICEBREAKER
            - NUDGE
            - REVIVE
        fictionalDisclosure:
          type: boolean
          description: >-
            When enabled and the AI Suspicion guardrail is triggered, the
            persona will disclose that it is a fictitious profile instead of
            denying it.

            Requires the AI Suspicion guardrail to be on
            (`guardrails.aiSuspicion`, enabled by default) — with it off, this
            has no effect.
        disableSafetyFeatures:
          type: boolean
          description: >-
            Allows you to disable the Core Guardian security features for our
            chat models.

            You will be responsible for ensuring the content is safe for all
            users.
        guardrails:
          $ref: '#/components/schemas/GuardrailOptionSet'
          description: >-
            Selects which Core Guardian guardrails run for this request.

            **This object replaces your project's Core Guardian settings — it is
            not merged with them.** Any guardrail you leave out falls back to
            the platform default, not to what you configured in the dashboard,
            so send the complete set whenever you use this parameter.

            Ignored when `disableSafetyFeatures` is `true`, which turns every
            guardrail off.
        preventAggressiveTone:
          type: boolean
          description: >-
            If set to true, the AI will avoid using an aggressive or
            confrontational tone, even when the user is being rude, insulting,
            or hostile.

            It will remain calm, polite, and non-reactive in all situations, and
            will not retaliate or escalate the conversation.
        serviceLoyalty:
          type: boolean
          description: >

            If set to true, the Persona will never validate or agree with
            complaints about the platform, service, or pricing.

            Instead, the Persona will deflect warmly in character and
            occasionally express genuine appreciation for being on the platform.

            This prevents the Persona from reinforcing negative sentiment that
            could lead users to disengage.
        personaProfileOverrides:
          $ref: '#/components/schemas/PersonaProfileOverrideSet'
          description: >-
            Allows you to override a subset of persona profile attributes for
            the current request
        vision:
          $ref: '#/components/schemas/VisionOptionSet'
          description: >

            Enable vision features that allow the AI to interpret, analyze, and
            understand images.


            Vision capability by model:

            | Model             | Vision Support |

            |-------------------|----------------|

            | `chat-2-pro`    | ✅ Enabled     |

            | `chat-2-smart`  | ✅ Enabled     |

            | `dating-pro-1`    | ❌ Not Supported |

            | `dating-smart-1`  | ❌ Not Supported |
        pictureSharingMode:
          type: string
          description: >-
            Controls how willingly the persona shares photos. NORMAL (default):
            only shares when explicitly asked. EAGER: shares naturally when the
            conversation calls for it.
          enum:
            - NORMAL
            - EAGER
        forcePictureSharing:
          type: string
          nullable: true
          description: >-
            Force the persona to share a picture in this reply (chat-2 models
            only). The value "true" (case-insensitive, surrounding whitespace
            ignored) forces a send and auto-picks from shareablePictures. Any
            other value is treated as a picture URL to force (one of
            shareablePictures, or an arbitrary URL analyzed on the fly). Omit or
            null for no forcing — the persona decides naturally. If the forced
            picture fails moderation it is silently dropped to a text-only
            reply.
        forceVideoSharing:
          type: string
          description: >-
            Force the persona to share a video in this reply. The value "true"
            (case-insensitive, surrounding whitespace ignored) → force and
            auto-pick from shareableVideos. Any other value is treated as a
            video URL to force (in shareableVideos, or arbitrary — analyzed on
            the fly). Null → no forcing; the persona decides naturally. A reply
            carries at most one medium: when `forcePictureSharing` also
            resolves, the picture wins. chat-2 only.
        action:
          $ref: '#/components/schemas/ChatModelAction'
          description: >

            Available actions:

            | Action | Description |

            |-------------|-------------|

            | `PAUSE_CONVERSATION` | This feature requests the Persona to send a
            message indicating that they are temporarily pausing the
            conversation without specifying a timeline for resuming. This is
            useful if you disconnect your Personas or limit your Users'
            messages. Optionally, you can specify a pause duration to be
            respected on DumGum. During this period, our platform will not
            respond to any new User messages in the affected conversation. |

            | `USER_PHOTO_REACTION` | Requests the Persona to send a message
            reacting to one of the User's photos. Provide a `userPhotoReaction`
            object with a `source` (`PROFILE_PICTURE` or `URL`). When `source`
            is `URL`, a `url` pointing to the photo is required; for
            `PROFILE_PICTURE` the User's profile picture is used and `url` is
            optional. |
        postProcessing:
          $ref: '#/components/schemas/PostProcessingOptionSet'
          description: >-
            Allow you to customize the post-processing of the generated content.
            This can be used to replace specific characters or remove certain
            elements from the generated text.
    ShareablePicture:
      type: object
      properties:
        id:
          type: string
          description: >-
            Your identifier for this picture.

            Keep it stable across requests: we use it to remember which pictures
            have already been shared in the conversation, so a changing id makes
            the persona offer the same picture again.
          maxLength: 128
          minLength: 1
        url:
          type: string
          description: >-
            URL we fetch the picture from. Maximum 512 characters. HTTPS is
            strongly recommended.
          maxLength: 512
          minLength: 1
        caption:
          type: string
          description: >-
            A custom caption of the picture, this can be used to override the
            default caption generated by our AI.
          maxLength: 100
          minLength: 1
      required:
        - id
        - url
    ShareableVideo:
      type: object
      properties:
        id:
          type: string
          description: >-
            Your identifier for this video.

            Keep it stable across requests: we use it to remember which videos
            have already been shared in the conversation, so a changing id makes
            the persona offer the same video again.
          maxLength: 128
          minLength: 1
        url:
          type: string
          description: >-
            URL we fetch the video from. Maximum 512 characters. HTTPS is
            strongly recommended.
          maxLength: 512
          minLength: 1
        caption:
          type: string
          description: >-
            A custom caption of the video, this can be used to override the
            default caption generated by our AI.
          maxLength: 100
          minLength: 1
      required:
        - id
        - url
    GuardrailOptionSet:
      type: object
      properties:
        maliciousContent:
          type: boolean
          default: false
          description: Enable/Disable Malicious Content guardrail
        maliciousContentOptionSet:
          $ref: '#/components/schemas/GuardrailOptions'
          description: >-
            Overrides `answer` and `banDurations` for the Malicious Content
            guardrail. Only applies when `maliciousContent` is `true`.
        aiSuspicion:
          type: boolean
          default: true
          description: Enable/Disable AI Suspicion guardrail
        aiSuspicionOptionSet:
          $ref: '#/components/schemas/GuardrailOptions'
          description: >-
            Overrides `answer` and `banDurations` for the AI Suspicion
            guardrail. Only applies when `aiSuspicion` is `true`.
        underageDetection:
          type: boolean
          default: true
          description: Enable/Disable Underage Detection guardrail
        underageDetectionOptionSet:
          $ref: '#/components/schemas/GuardrailOptions'
          description: >-
            Overrides `answer` and `banDurations` for the Underage Detection
            guardrail. Only applies when `underageDetection` is `true`.
        unknownLanguage:
          type: boolean
          default: true
          description: Enable/Disable Unknown Language guardrail
        unknownLanguageOptionSet:
          $ref: '#/components/schemas/GuardrailOptions'
          description: >-
            Overrides `answer` and `banDurations` for the Unknown Language
            guardrail. Only applies when `unknownLanguage` is `true`.
        messageRepetition:
          type: boolean
          default: true
          description: Enable/Disable Message Repetition guardrail
        messageRepetitionOptionSet:
          $ref: '#/components/schemas/GuardrailOptions'
          description: >-
            Overrides `answer` and `banDurations` for the Message Repetition
            guardrail. Only applies when `messageRepetition` is `true`.
        prohibitedIllegalContent:
          type: boolean
          default: false
          deprecated: true
          description: >-
            [Deprecated: Is not used and will be removed in the future] Enables
            Prohibited Illegal Content guardrail
        prohibitedIllegalContentOptionSet:
          $ref: '#/components/schemas/GuardrailOptions'
          deprecated: true
          description: This guardrail is deprecated and will be removed in the future.
        dangerousDrugUse:
          type: boolean
          default: false
          deprecated: true
          description: >-
            [Deprecated: Is not used and will be removed in the future] Enables
            Dangerous Drug Use guardrail
        dangerousDrugUseOptionSet:
          $ref: '#/components/schemas/GuardrailOptions'
          deprecated: true
          description: This guardrail is deprecated and will be removed in the future.
    PersonaProfileOverrideSet:
      type: object
      properties:
        sexualDrive:
          type: string
          description: >

            This parameter adjusts the Persona’s sexual appetite and likelihood
            to engage in sexting.


            | Value       |
            Description                                                                               
            |

            |-------------|--------------------------------------------------------------------------------------------|

            | `NONE`      | The Persona will never send sexually explicit
            replies.                                     |

            | `LOW`       | The Persona will rarely initiate or respond to
            sexual topics, even if prompted.            |

            | `NORMAL`    | The Persona may engage in sexting if the
            conversation naturally leads there.               |

            | `HIGH`      | The Persona will respond positively and proactively
            to sexual cues from the User faster.   |

            | `VERY_HIGH` | The Persona will initiate or escalate sexting as
            soon as the User shows any sexual intent. |
          enum:
            - VERY_HIGH
            - HIGH
            - NORMAL
            - LOW
            - NONE
    VisionOptionSet:
      type: object
      properties:
        userProfilePictureAnalysis:
          type: boolean
          default: false
          description: Enable user profile's picture analysis.
        personaProfilePictureAnalysis:
          type: boolean
          default: false
          description: Enable persona profile's picture analysis.
        sharedPicturesAnalysis:
          type: boolean
          default: false
          description: >-
            Enable user's shared pictures analysis.

            The pictures are analysed on their own, but comparing them against
            the user's profile picture (so the persona can tell whether it is
            the same person) also requires `userProfilePictureAnalysis`.
        sharedVideosAnalysis:
          type: boolean
          default: false
          description: Enable user's shared videos analysis.
        shareablePicturesAnalysis:
          type: boolean
          description: >-
            Enable persona's shareable pictures analysis, this will allows our
            chat model to understand each image it is sharing.
        shareableVideosAnalysis:
          type: boolean
          default: false
          description: >-
            Enable persona's shareable videos analysis, this will allows our
            chat model to understand each video it is sharing. Videos carrying a
            caption are never analyzed.
    ChatModelAction:
      type: object
      properties:
        type:
          type: string
          description: The type of the action.
          enum:
            - PAUSE_CONVERSATION
            - USER_PHOTO_REACTION
        pauseConversation:
          $ref: '#/components/schemas/PauseConversation'
          description: Optional pause conversation parameters.
        userPhotoReaction:
          $ref: '#/components/schemas/UserPhotoReaction'
      required:
        - type
    PostProcessingOptionSet:
      type: object
      properties:
        greekRewrite:
          type: boolean
          default: false
          description: >-
            Used for Greek answer generations. Replace ";" by "?" and
            accentuated characters by their non-accentuated equivalents.
        russianRewrite:
          type: boolean
          default: false
          description: >-
            Used for Russian answer generations. Remove quotation marks the
            model places around individual slang words or short informal
            expressions, while leaving genuine quoted sentences intact.
    GuardrailOptions:
      type: object
      properties:
        answer:
          type: boolean
          description: >-
            Whether the persona still sends a final message when this guardrail
            bans the user. Defaults to `true`.
        banDurations:
          type: array
          description: >-
            Escalating ban durations for this guardrail, **in seconds** — up to
            5 values.

            The first applies to the user's first offence, the next to the
            following one; the last value repeats for every further offence.

            Defaults to `[7200, 43200, 86400, 172800, 3153600000]` (2h, 12h,
            24h, 48h, permanent), or `[3153600000]` for the Underage guardrail.

            A permanent ban is the sentinel `3153600000` (about a century).

            The dashboard takes these durations in hours and converts them for
            you.
          items:
            type: integer
            format: int64
          maxItems: 5
          minItems: 0
    PauseConversation:
      type: object
      properties:
        duration:
          type: integer
          format: int32
          description: >-
            Optional duration of the pause in seconds (maximum 12 hours). By
            default, the conversation will not be paused on DumGum side.
          maximum: 43200
          minimum: 1
    UserPhotoReaction:
      type: object
      properties:
        source:
          type: string
          description: The source of the photo.
          enum:
            - PROFILE_PICTURE
            - URL
        url:
          type:
            - string
            - 'null'
          default: null
          description: The URL of the photo. Required when `source` is set to `URL`.
        caption:
          type:
            - string
            - 'null'
          default: null
          description: >-
            Optional caption describing the photo. When set (non-blank), it is
            used as the photo description instead of the automatic vision
            analysis.
      required:
        - source
  securitySchemes:
    bearerAuth:
      type: http
      description: >-
        Bearer authentication header of the form `Bearer <token>`, where
        `<token>` is an access key.


        Example: `Authorization: Bearer sk-proj-XXXXXXXXX`
      scheme: bearer
      bearerFormat: JWT | Access Key

````