DumGumDocs
Search documentation

Loading search…

API Reference

Generate (asynchronous)

POST/cs/v1/content_creation/conversations/enqueue

Enqueue a conversation to be processed asynchronously

Open interactive API explorer ↗ · Download OpenAPI

Authentication

bearerAuth

Bearer authentication header of the form Bearer <token>, where <token> is an access key.

Example: Authorization: Bearer sk-proj-XXXXXXXXX

Type: bearer

Request body (required)

#application/json

Represents a request to enqueue a conversation

Type: object
#userProfileId stringrequired

A user profile ID; this will represent the profile that will receive the generated reply.

Type: string
#personaProfileId stringrequired

A persona profile ID; this will represent the profile that our operator will impersonate.

Type: string
#language stringrequired

The language used to generate the reply.

Type: string

Allowed values: "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", "HI_IN", "HI_IN_LATIN"

#additionalLanguages array

A list of additional languages that can be used to generate the reply. Currently, we support only one additional language.

Type: arrayminItems: 0 maxItems: 1
#Array itemsType: string

Allowed values: "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", "HI_IN", "HI_IN_LATIN"

#userProfileVersion string,null

Specify the current user profile version. If it differs from the stored version, it will trigger a profile data refresh.

Type: string | null
#personaProfileVersion string,null

Specify the current persona profile version. If it differs from the stored version, it will trigger a profile data refresh.

Type: string | null
#tags object,null

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.

Type: object | null

#Additional properties

Type: string
#testMode boolean,null

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.

Type: boolean | null
#replyParameters object,null

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.

Type: object | null
#chatModel string,null

Allows you to set the AI chat model to use for generating the reply. If not specified, the default model will be used. If the field is omitted the request runs on chat-2-smart; default resolves to 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.

chat-latest-smart and chat-latest-pro always resolve to the latest released version of that tier, so a new version is picked up with no change on your side. Use a pinned name (chat-2.2-smart, chat-2-pro, …) to stay on one version for good.

chat-2-auto, chat-2.1-auto and chat-2.2-auto pick the tier for you: the conversation runs on the Smart tier of that version, then moves to the Pro tier for the rest of its life once it exceeds 30 messages — the point where the earliest messages start falling out of the reply context and the conversation memory takes over. The switch is invisible to the end user, and each reply is billed at the tier that produced it.

Type: string | nulldefault: "chat-2-smart"

Allowed values: "chat-latest-smart", "chat-latest-pro", "chat-2-smart", "chat-2-pro", "chat-2.1-smart", "chat-2.1-pro", "chat-2.2-smart", "chat-2.2-pro", "chat-2-auto", "chat-2.1-auto", "chat-2.2-auto"

#bufferSeconds integer

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.

Type: integerformat: "int32" default: "5" minimum: 0 maximum: 180
#maxProcessingTimeSeconds integer

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.

Type: integerformat: "int32" default: "300" minimum: 300 maximum: 86400
#enableSexualTextContent boolean

Allows our chat models to generate sexual text content. If not specified, defaults to true.

Type: booleandefault: null
#fixedResponseLength boolean

Force our chat model to strictly respect aiSentenceLength and aiMessageLength parameters. If not specified, defaults to false.

Type: booleandefault: false
#sentenceLength string,null

Allow you to specify the length of the sentences composing the response.

Type: string | nulldefault: null

Allowed values: "SHORT", "REGULAR", "LONG"

#messageLength string,null

Allow you to specify the length of the response

Type: string | nulldefault: null

Allowed values: "SHORT", "REGULAR", "LONG", "VERY_LONG"

#personaPersonality string,null

Allow you to override the personality given to the persona

Type: string | nulldefault: null

Allowed values: "SUPPORTIVE", "TEASING", "CONFIDENT", "GEEKY", "POETIC", "HIGH_ENERGY", "INTELLECTUAL", "ROMANTIC", "SARCASTIC", "POSSESSIVE", "NATURAL", "APPRECIATIVE", "PASSIONATE"

#generatePersonality boolean,null

Automatically generate the personality of the persona profile (SoulEngine). This will incurs an additional cost to the reply.

Type: boolean | nulldefault: null
#referencePersonaProfileId string,null

The persona profile ID under which the persona's personality (SoulEngine) is read and written, instead of personaProfileId.

Use it when several of your persona profile IDs describe the same persona — typically when you derive one profile ID per user (<personaProfileId>-<userProfileId>) to keep user-specific profile data. Point them all at the same referencePersonaProfileId and they share a single personality: it is generated (and billed) once for the reference ID, then reused by every profile referring to it, instead of once per derived profile.

Only the personality lookup and storage are affected. The reply is still generated from the profile data of personaProfileId, and this ID does not need to exist as a profile on its own — nothing is ever fetched for it.

If omitted (default), the personality is read and written under personaProfileId, as before.

Type: string | nulldefault: null minLength: 1 maxLength: 64
#shareablePictures array

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 ModelPicture Sharing Support
chat-2.1-pro✅ Enabled
chat-2.1-smart✅ Enabled
chat-2-pro✅ Enabled
chat-2-smart✅ Enabled
chat-2.1-auto✅ Enabled
chat-2-auto✅ Enabled
dating-pro-1❌ Not Supported
dating-smart-1❌ Not Supported
Type: array
#Array itemsType: object
#id stringrequired

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.

Type: stringminLength: 1 maxLength: 128
#url stringrequired

URL we fetch the picture from. Maximum 512 characters. HTTPS is strongly recommended.

Type: stringminLength: 1 maxLength: 512
#caption string

A custom caption of the picture, this can be used to override the default caption generated by our AI.

Type: stringminLength: 1 maxLength: 100
#shareableVideos array

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 ModelVideo Sharing Support
chat-2.1-pro✅ Enabled
chat-2.1-smart✅ Enabled
chat-2-pro✅ Enabled
chat-2-smart✅ Enabled
chat-2.1-auto✅ Enabled
chat-2-auto✅ Enabled
dating-pro-1❌ Not Supported
dating-smart-1❌ Not Supported
Type: array
#Array itemsType: object
#id stringrequired

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.

Type: stringminLength: 1 maxLength: 128
#url stringrequired

URL we fetch the video from. Maximum 512 characters. HTTPS is strongly recommended.

Type: stringminLength: 1 maxLength: 512
#caption string

A custom caption of the video, this can be used to override the default caption generated by our AI.

Type: stringminLength: 1 maxLength: 100
#emojis string

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

Emoji FrequencyDescription
FREQUENT50% at least 1 and maybe 1 more emoji if appropriate / 50% 1 if appropriate
SOMETIMES75% 1 if appropriate / 25% no emoji
RARELY75% no emoji / 25% 1 if appropriate
NEVER100% no emoji
Type: string

Allowed values: "FREQUENT", "SOMETIMES", "RARELY", "NEVER"

#fluencyDegradation string,null

Allows our chat model to degrade the text content generation quality to improve human-like response. Defaults to NONE or LOW randomly (50/50).

Type: string | nulldefault: null

Allowed values: "LOW", "MEDIUM", "HIGH", "NONE"

#multipleMessagesPerReply boolean,null

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.

Type: boolean | nulldefault: false
#multipleMessagesPerReplyFrequency string,null

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.

Type: string | nulldefault: null

Allowed values: "VERY_FREQUENT", "FREQUENT", "OCCASIONAL", "RARE"

#questionFrequency number

Deprecated — use questionFrequencyRate instead. Still honored everywhere, unchanged, and still defaults to 0.75. No removal is planned: it is the only question control on every model before chat-2.2, and those models are frozen. Nothing to change on your side, today or on a deadline.

A number from 0 to 1.

On every model before chat-2.2 — including chat-2-*, chat-2.1-* and dating-smart-1 — this is the only question control there is, and it behaves exactly as it always has, which is weaker than its name suggests: a value below 1 removes an encouragement rather than forbidding anything, so 0 still leaves the Persona free to ask. That behaviour is frozen on those models on purpose. Pinning a version is what keeps a prompt from changing underneath you, and questionFrequencyRate is ignored there entirely.

On chat-2.2 and later it is read as the same per-reply chance questionFrequencyRate expresses in named steps, so 0.5 here and MEDIUM there do the same thing, and a request that carries both follows the rate. Move to chat-2.2-smart / chat-2.2-pro (or chat-latest-smart / chat-latest-pro) to get the parameter its name describes.

The reason it is being retired is that the number promised a precision the mechanism never had: under it is a single decision per reply — ask, or do not ask — not a dial on how question-like a reply is. 0.37 and 0.4 were never two different things.

Type: numberformat: "double" minimum: 0 maximum: 1 deprecated: true
#questionFrequencyRate string,null

How often the Persona is asked to put a question to the User.

ValueMeaning
NONEThe Persona is told not to ask a question.
LOWRoughly one reply in four asks.
MEDIUMRoughly one reply in two asks.
HIGHRoughly four replies in five ask.
FULLThe Persona is asked to put a question to the User.

The steps in between are a per-reply coin toss, not a softening: on a reply the toss does not select, the Persona is told not to ask, the same way it is at NONE. So LOW is not "asks a little in every reply" — it is "asks fully in about a quarter of them, and not at all in the rest".

The control is best effort. It shapes the instruction the Persona is given, not the text it produces, so the share of replies that end up containing a question tracks the value closely without matching it exactly — that is inherent to AI-generated replies.

Where it applies. Casual and flirty conversations only. It has no effect on sexual or hostile conversations, nor on icebreakers, nudges, revives and late replies, all of which follow their own instructions.

Which models. chat-2.2 and later — so chat-2.2-smart, chat-2.2-pro, chat-2.2-auto, and chat-latest-smart / chat-latest-pro, which resolve to them. Sending it to an earlier model or to dating-smart-1 has no effect; those read the deprecated questionFrequency with the behaviour they shipped with.

If omitted, the deprecated questionFrequency applies, which defaults to 0.75.

Type: string | nulldefault: null

Allowed values: "NONE", "LOW", "MEDIUM", "HIGH", "FULL"

#replyTypingDelay string

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 use case for implementation example.

Type: stringdefault: "INSTANT"

Allowed values: "INSTANT", "FAST", "NORMAL"

#meetingPolicy string,null

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

ValueDescription
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_MEETINGExpresses genuine desire to meet first, then softly refuses with a personal excuse, and ends on a hopeful note.
RAINCHECKDeclines with a specific, time-bound excuse and explicitly signals that meeting will happen later. Re-engages by showing interest in the user.
CHAT_ONLYFirm but warm redirect back to the conversation. No implied future possibility of meeting. No personal-life excuses.
EAGER_TO_MEETAlways 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.
Type: string | nulldefault: null

Allowed values: "DEFAULT_MODE", "DEFERRED_MEETING", "RAINCHECK", "CHAT_ONLY", "EAGER_TO_MEET"

#fictionalDisclosure boolean

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.

Type: boolean
#disableSafetyFeatures boolean

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.

Type: boolean
#guardrails object

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.

Type: object
#maliciousContent boolean

Enable/Disable Malicious Content guardrail

Type: booleandefault: false
#maliciousContentOptionSet object

Overrides answer and banDurations for the Malicious Content guardrail. Only applies when maliciousContent is true.

Type: object
#answer boolean

Whether the persona still sends a final message when this guardrail bans the user. Defaults to true.

Type: boolean
#banDurations array

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.

Type: arrayminItems: 0 maxItems: 5
#Array itemsType: integerformat: "int64"
#aiSuspicion boolean

Enable/Disable AI Suspicion guardrail

Type: booleandefault: true
#aiSuspicionOptionSet object

Overrides answer and banDurations for the AI Suspicion guardrail. Only applies when aiSuspicion is true.

Type: object
#answer boolean

Whether the persona still sends a final message when this guardrail bans the user. Defaults to true.

Type: boolean
#banDurations array

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.

Type: arrayminItems: 0 maxItems: 5
#Array itemsType: integerformat: "int64"
#underageDetection boolean

Enable/Disable Underage Detection guardrail

Type: booleandefault: true
#underageDetectionOptionSet object

Overrides answer and banDurations for the Underage Detection guardrail. Only applies when underageDetection is true.

Type: object
#answer boolean

Whether the persona still sends a final message when this guardrail bans the user. Defaults to true.

Type: boolean
#banDurations array

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.

Type: arrayminItems: 0 maxItems: 5
#Array itemsType: integerformat: "int64"
#unknownLanguage boolean

Enable/Disable Unknown Language guardrail

Type: booleandefault: true
#unknownLanguageOptionSet object

Overrides answer and banDurations for the Unknown Language guardrail. Only applies when unknownLanguage is true.

Type: object
#answer boolean

Whether the persona still sends a final message when this guardrail bans the user. Defaults to true.

Type: boolean
#banDurations array

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.

Type: arrayminItems: 0 maxItems: 5
#Array itemsType: integerformat: "int64"
#messageRepetition boolean

Enable/Disable Message Repetition guardrail

Type: booleandefault: true
#messageRepetitionOptionSet object

Overrides answer and banDurations for the Message Repetition guardrail. Only applies when messageRepetition is true.

Type: object
#answer boolean

Whether the persona still sends a final message when this guardrail bans the user. Defaults to true.

Type: boolean
#banDurations array

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.

Type: arrayminItems: 0 maxItems: 5
#Array itemsType: integerformat: "int64"
#prohibitedIllegalContent boolean

[Deprecated: Is not used and will be removed in the future] Enables Prohibited Illegal Content guardrail

Type: booleandefault: false deprecated: true
#prohibitedIllegalContentOptionSet object

This guardrail is deprecated and will be removed in the future.

Type: objectdeprecated: true
#answer boolean

Whether the persona still sends a final message when this guardrail bans the user. Defaults to true.

Type: boolean
#banDurations array

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.

Type: arrayminItems: 0 maxItems: 5
#Array itemsType: integerformat: "int64"
#dangerousDrugUse boolean

[Deprecated: Is not used and will be removed in the future] Enables Dangerous Drug Use guardrail

Type: booleandefault: false deprecated: true
#dangerousDrugUseOptionSet object

This guardrail is deprecated and will be removed in the future.

Type: objectdeprecated: true
#answer boolean

Whether the persona still sends a final message when this guardrail bans the user. Defaults to true.

Type: boolean
#banDurations array

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.

Type: arrayminItems: 0 maxItems: 5
#Array itemsType: integerformat: "int64"
#preventAggressiveTone boolean

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.

Type: boolean
#serviceLoyalty boolean

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.

Type: boolean
#personaProfileOverrides object

Allows you to override a subset of persona profile attributes for the current request

Type: object
#sexualDrive string

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

ValueDescription
NONEThe Persona will never send sexually explicit replies.
LOWThe Persona will rarely initiate or respond to sexual topics, even if prompted.
NORMALThe Persona may engage in sexting if the conversation naturally leads there.
HIGHThe Persona will respond positively and proactively to sexual cues from the User faster.
VERY_HIGHThe Persona will initiate or escalate sexting as soon as the User shows any sexual intent.
Type: string

Allowed values: "VERY_HIGH", "HIGH", "NORMAL", "LOW", "NONE"

#vision object

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

Vision capability by model:

ModelVision Support
chat-2.1-pro✅ Enabled
chat-2.1-smart✅ Enabled
chat-2-pro✅ Enabled
chat-2-smart✅ Enabled
chat-2.1-auto✅ Enabled
chat-2-auto✅ Enabled
dating-pro-1❌ Not Supported
dating-smart-1❌ Not Supported
Type: object
#userProfilePictureAnalysis boolean

Enable user profile's picture analysis.

Type: booleandefault: false
#personaProfilePictureAnalysis boolean

Enable persona profile's picture analysis.

Type: booleandefault: false
#sharedPicturesAnalysis boolean

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.

Type: booleandefault: false
#sharedVideosAnalysis boolean

Enable user's shared videos analysis.

Type: booleandefault: false
#shareablePicturesAnalysis boolean

Enable persona's shareable pictures analysis, this will allows our chat model to understand each image it is sharing.

Type: boolean
#shareableVideosAnalysis boolean

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.

Type: booleandefault: false
#audio object

What the persona does with the sound a user sends.

Separate from vision because it is a separate sense. Like the analyses under vision, it is opt-in and defaults to false.

No table of supported models here, unlike vision. A voice message is transcribed when it arrives, by a dedicated speech model, before any chat model is picked — so every chat model can answer one.

Type: object
#sharedAudiosAnalysis boolean

Enable the analysis of the voice messages the user sends. The voice messages waiting for a reply are transcribed when the reply is composed, and the transcript becomes the message text, so the persona can answer what was said.

Defaults to false. Left off, the recording is never read: the message reaches the persona with no transcript and none of the spoken-language, delivery or tone metadata the conversation history would describe, and she is told she cannot play it rather than answering words nobody read to her.

Type: booleandefault: false
#pictureSharingMode string

Controls how willingly the persona shares photos. NORMAL (default): only shares when explicitly asked. EAGER: shares naturally when the conversation calls for it.

Type: string

Allowed values: "NORMAL", "EAGER"

#forcePictureSharing string

Force the persona to share a picture in this reply. The value "true" (case-insensitive, surrounding whitespace ignored) → force and auto-pick from shareablePictures. Any other value is treated as a picture URL to force (in shareablePictures, or arbitrary — analyzed on the fly). Null → no forcing; the persona decides naturally. chat-2 only.

Type: string
#forceVideoSharing string

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.

Type: string
#action object

Available actions:

ActionDescription
PAUSE_CONVERSATIONThis 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_REACTIONRequests 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.
ENGAGERequests the Persona to send an engagement message. Provide an engage object with a mode (AUTO, ICEBREAKER, NUDGE or REVIVE) and an optional type — the angle within that arc, same values as the top-level engageType parameter. This is the preferred form; the top-level engage and engageType parameters remain supported and take precedence over this action when sent on the same request.
Type: object
#type stringrequired

The type of the action.

Type: string

Allowed values: "PAUSE_CONVERSATION", "USER_PHOTO_REACTION", "ENGAGE"

#pauseConversation object

Optional pause conversation parameters.

Type: object
#duration integer

Optional duration of the pause in seconds (maximum 12 hours). By default, the conversation will not be paused on DumGum side.

Type: integerformat: "int32" minimum: 1 maximum: 43200
#userPhotoReaction objectType: object
#source stringrequired

The source of the photo.

Type: string

Allowed values: "PROFILE_PICTURE", "URL"

#url string,null

The URL of the photo. Required when source is set to URL.

Type: string | nulldefault: null
#caption string,null

Optional caption describing the photo. When set (non-blank), it is used as the photo description instead of the automatic vision analysis.

Type: string | nulldefault: null
#engage object

Requests an engagement message. Carries the same two options as the legacy top-level engage and engageType reply parameters, which remain supported and take precedence over this action when sent.

Type: object
#mode string

The engagement arc: which kind of engagement message to write. Same values as the legacy engage reply parameter — which, when sent on the same request, takes precedence over this action.

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.

ValueDescription
AUTOSelects best engagement type based on context
ICEBREAKERSends an icebreaker message when starting a new conversation. Specify an angle (engage.type on the action, engageType on the legacy parameter) to force one.
NUDGESends re-engagement message after inactivity
REVIVESends messages to reactivate dormant conversations
LATE_REPLYAnswers a User message that was left waiting, opening by owning the delay. Unlike the three above — which all assume the User went quiet and look for a reason to reach out — this one is for conversations where the Persona owes a reply.

LATE_REPLY is never selected by AUTO; ask for it explicitly. It needs a User message actually awaiting a reply, and one that has been waiting at least 3 hours of the User's waking time — hours between 22:00 and 07:00 in their own timezone do not count, since a message sent at bedtime and answered at breakfast is not a message anyone was left waiting on. With nothing waiting, or below that, the engagement is skipped and the request produces an ordinary reply instead of an apology out of proportion to the gap. The delay the Persona refers to is still the real elapsed time. No angle applies to it today; one sent alongside falls back to AUTO as usual.

Type: string

Allowed values: "AUTO", "ICEBREAKER", "NUDGE", "REVIVE", "LATE_REPLY"

#type string

The angle within the arc. Same values as the legacy engageType reply parameter — which, when sent on the same request, takes precedence over this action.

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

TypeDescription
AUTOAutomatically selects the appropriate angle
NO_PHOTOMessage about user having no photos
MISSING_DETAILMessage about incomplete profile details
MUCH_YOUNGERMessage addressing significant age difference (user younger)
MUCH_OLDERMessage addressing significant age difference (user older)
NEARBYMessage highlighting close proximity
GENERICGeneral conversation starter
USER_ONLINEMessage acknowledging user is currently online
USER_OFFLINEMessage for offline users
JUST_JOINEDWelcome message for new users
EROTICThe persona will initiate the conversation with a strongly erotic message
PHOTO_COMMENTThe Persona will engage the conversation by commenting the User main picture
HAPPY_BIRTHDAYWish 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 the arc to be AUTO or ICEBREAKER; if sent for an engage mode they are not valid for, they fall back to AUTO.

Two more silent fallbacks to AUTO to be aware of: when no arc is set the type is validated against ICEBREAKER, and PHOTO_COMMENT falls back to AUTO when the user profile has no main picture.

Type: string

Allowed values: "AUTO", "NO_PHOTO", "MISSING_DETAIL", "MUCH_YOUNGER", "MUCH_OLDER", "NEARBY", "GENERIC", "USER_ONLINE", "USER_OFFLINE", "JUST_JOINED", "PHOTO_COMMENT", "EROTIC", "HAPPY_BIRTHDAY"

#postProcessing object

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. Sending this object replaces your project's Language-specific formatting setting in full, for this request only — every rewrite you leave out is read as false, not as your project's value.

Type: object
#greekRewrite boolean

Used for Greek answer generations. Replace ";" by "?" and accentuated characters by their non-accentuated equivalents.

Omit this field to inherit your project's Language-specific formatting setting, configurable from the dashboard. Projects created before this setting existed inherit false.

Type: boolean
#russianRewrite boolean

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.

Omit this field to inherit your project's Language-specific formatting setting, configurable from the dashboard. Projects created before this setting existed inherit false.

Type: boolean
#romanianRewrite boolean

Used for Romanian answer generations. Replace diacritical characters by their non-diacritical equivalents.

Omit this field to inherit your project's Language-specific formatting setting, configurable from the dashboard. Projects created before this setting existed inherit false.

Type: boolean
#germanRewrite boolean

Used for German answer generations (including Austria and Switzerland). Remove apostrophes from the chat forms gehts, gibts, wenns, sichs and habs, preserving quotations and structured text.

Omit this field to inherit your project's Language-specific formatting setting, configurable from the dashboard. Projects created before this setting existed inherit false.

Type: boolean
Illustrative example
{
  "userProfileId": "<string>",
  "personaProfileId": "<string>",
  "language": "EN",
  "additionalLanguages": [
    "EN"
  ],
  "userProfileVersion": "<string>",
  "personaProfileVersion": "<string>",
  "tags": "<string>",
  "testMode": "<string>",
  "replyParameters": {
    "chatModel": "chat-2-smart",
    "bufferSeconds": "5",
    "maxProcessingTimeSeconds": "300",
    "enableSexualTextContent": null,
    "fixedResponseLength": false,
    "sentenceLength": null,
    "messageLength": null,
    "personaPersonality": null,
    "generatePersonality": null,
    "referencePersonaProfileId": null,
    "shareablePictures": [
      {
        "id": "<string>",
        "url": "<string>",
        "caption": "<string>"
      }
    ],
    "shareableVideos": [
      {
        "id": "<string>",
        "url": "<string>",
        "caption": "<string>"
      }
    ],
    "emojis": "FREQUENT",
    "fluencyDegradation": null,
    "multipleMessagesPerReply": false,
    "multipleMessagesPerReplyFrequency": null,
    "questionFrequency": 0,
    "questionFrequencyRate": null,
    "replyTypingDelay": "INSTANT",
    "meetingPolicy": null,
    "fictionalDisclosure": false,
    "disableSafetyFeatures": false,
    "guardrails": {
      "maliciousContent": false,
      "maliciousContentOptionSet": {
        "answer": false,
        "banDurations": [
          0
        ]
      },
      "aiSuspicion": true,
      "aiSuspicionOptionSet": {
        "answer": false,
        "banDurations": [
          0
        ]
      },
      "underageDetection": true,
      "underageDetectionOptionSet": {
        "answer": false,
        "banDurations": [
          0
        ]
      },
      "unknownLanguage": true,
      "unknownLanguageOptionSet": {
        "answer": false,
        "banDurations": [
          0
        ]
      },
      "messageRepetition": true,
      "messageRepetitionOptionSet": {
        "answer": false,
        "banDurations": [
          0
        ]
      },
      "prohibitedIllegalContent": false,
      "prohibitedIllegalContentOptionSet": {
        "answer": false,
        "banDurations": [
          0
        ]
      },
      "dangerousDrugUse": false,
      "dangerousDrugUseOptionSet": {
        "answer": false,
        "banDurations": [
          0
        ]
      }
    },
    "preventAggressiveTone": false,
    "serviceLoyalty": false,
    "personaProfileOverrides": {
      "sexualDrive": "VERY_HIGH"
    },
    "vision": {
      "userProfilePictureAnalysis": false,
      "personaProfilePictureAnalysis": false,
      "sharedPicturesAnalysis": false,
      "sharedVideosAnalysis": false,
      "shareablePicturesAnalysis": false,
      "shareableVideosAnalysis": false
    },
    "audio": {
      "sharedAudiosAnalysis": false
    },
    "pictureSharingMode": "NORMAL",
    "forcePictureSharing": "<string>",
    "forceVideoSharing": "<string>",
    "action": {
      "type": "PAUSE_CONVERSATION",
      "pauseConversation": {
        "duration": 0
      },
      "userPhotoReaction": {
        "source": "PROFILE_PICTURE",
        "url": null,
        "caption": null
      },
      "engage": {
        "mode": "AUTO",
        "type": "AUTO"
      }
    },
    "postProcessing": {
      "greekRewrite": false,
      "russianRewrite": false,
      "romanianRewrite": false,
      "germanRewrite": false
    }
  }
}

Responses

#204 Response

No Content