API Reference
Generate (asynchronous)
/cs/v1/content_creation/conversations/enqueueEnqueue 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:objectuserProfileId stringrequiredA user profile ID; this will represent the profile that will receive the generated reply.
Type:stringpersonaProfileId stringrequiredA persona profile ID; this will represent the profile that our operator will impersonate.
Type:stringlanguage stringrequiredThe language used to generate the reply.
Type:stringAllowed 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 items
Type:stringAllowed 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,nullSpecify the current user profile version. If it differs from the stored version, it will trigger a profile data refresh.
Type:string | nullpersonaProfileVersion string,nullSpecify the current persona profile version. If it differs from the stored version, it will trigger a profile data refresh.
Type:string | nulltestMode boolean,nullSpecify whether the conversation should be processed in test mode. In test mode, you will receive a dummy answer, which is useful for testing purposes.
Type:You will not be charged when using test mode.
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 | nullchatModel string,nullAllows 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.
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 integerAllows 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.
integerformat: "int32" default: "5" minimum: 0 maximum: 180maxProcessingTimeSeconds integerAllows 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.
Type:WARNING: This value may occasionally be exceeded by several seconds due to various factors.
integerformat: "int32" default: "300" minimum: 300 maximum: 86400enableSexualTextContent booleanAllows our chat models to generate sexual text content.
If not specified, defaults to true.
booleandefault: nullfixedResponseLength booleanForce our chat model to strictly respect aiSentenceLength and aiMessageLength parameters.
If not specified, defaults to false.
booleandefault: falsesentenceLength string,nullAllow you to specify the length of the sentences composing the response.
Type:string | nulldefault: nullAllowed values: "SHORT", "REGULAR", "LONG"
messageLength string,nullAllow you to specify the length of the response
Type:string | nulldefault: nullAllowed values: "SHORT", "REGULAR", "LONG", "VERY_LONG"
personaPersonality string,nullAllow you to override the personality given to the persona
Type:string | nulldefault: nullAllowed values: "SUPPORTIVE", "TEASING", "CONFIDENT", "GEEKY", "POETIC", "HIGH_ENERGY", "INTELLECTUAL", "ROMANTIC", "SARCASTIC", "POSSESSIVE", "NATURAL", "APPRECIATIVE", "PASSIONATE"
generatePersonality boolean,nullAutomatically generate the personality of the persona profile (SoulEngine). This will incurs an additional cost to the reply.
Type:boolean | nulldefault: nullreferencePersonaProfileId string,nullThe 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.
string | nulldefault: null minLength: 1 maxLength: 64emojis stringAllows 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 |
stringAllowed values: "FREQUENT", "SOMETIMES", "RARELY", "NEVER"
fluencyDegradation string,nullAllows our chat model to degrade the text content generation quality to improve human-like response. Defaults to NONE or LOW randomly (50/50).
string | nulldefault: nullAllowed values: "LOW", "MEDIUM", "HIGH", "NONE"
multipleMessagesPerReply boolean,nullAllows 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.
boolean | nulldefault: falsemultipleMessagesPerReplyFrequency string,nullChanges 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.
string | nulldefault: nullAllowed values: "VERY_FREQUENT", "FREQUENT", "OCCASIONAL", "RARE"
questionFrequency numberDeprecated — 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.
numberformat: "double" minimum: 0 maximum: 1 deprecated: truequestionFrequencyRate string,nullHow often the Persona is asked to put a question to the User.
| Value | Meaning |
|---|---|
NONE | The Persona is told not to ask a question. |
LOW | Roughly one reply in four asks. |
MEDIUM | Roughly one reply in two asks. |
HIGH | Roughly four replies in five ask. |
FULL | The 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.
string | nulldefault: nullAllowed values: "NONE", "LOW", "MEDIUM", "HIGH", "FULL"
replyTypingDelay stringIntroduces 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,nullControls 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. |
string | nulldefault: nullAllowed values: "DEFAULT_MODE", "DEFERRED_MEETING", "RAINCHECK", "CHAT_ONLY", "EAGER_TO_MEET"
fictionalDisclosure booleanWhen 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.
booleandisableSafetyFeatures booleanAllows 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.
object#maliciousContentOptionSet object
Overrides answer and banDurations for the Malicious Content guardrail. Only applies when maliciousContent is true.
objectanswer booleanWhether the persona still sends a final message when this guardrail bans the user. Defaults to true.
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.
arrayminItems: 0 maxItems: 5#aiSuspicionOptionSet object
Overrides answer and banDurations for the AI Suspicion guardrail. Only applies when aiSuspicion is true.
objectanswer booleanWhether the persona still sends a final message when this guardrail bans the user. Defaults to true.
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.
arrayminItems: 0 maxItems: 5#underageDetectionOptionSet object
Overrides answer and banDurations for the Underage Detection guardrail. Only applies when underageDetection is true.
objectanswer booleanWhether the persona still sends a final message when this guardrail bans the user. Defaults to true.
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.
arrayminItems: 0 maxItems: 5#unknownLanguageOptionSet object
Overrides answer and banDurations for the Unknown Language guardrail. Only applies when unknownLanguage is true.
objectanswer booleanWhether the persona still sends a final message when this guardrail bans the user. Defaults to true.
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.
arrayminItems: 0 maxItems: 5#messageRepetitionOptionSet object
Overrides answer and banDurations for the Message Repetition guardrail. Only applies when messageRepetition is true.
objectanswer booleanWhether the persona still sends a final message when this guardrail bans the user. Defaults to true.
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.
arrayminItems: 0 maxItems: 5prohibitedIllegalContent 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: trueanswer booleanWhether the persona still sends a final message when this guardrail bans the user. Defaults to true.
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.
arrayminItems: 0 maxItems: 5dangerousDrugUse 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: trueanswer booleanWhether the persona still sends a final message when this guardrail bans the user. Defaults to true.
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.
arrayminItems: 0 maxItems: 5preventAggressiveTone booleanIf 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:booleanserviceLoyalty booleanIf 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:objectsexualDrive stringThis 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. |
stringAllowed 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:
| Model | Vision 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 |
objectuserProfilePictureAnalysis booleanEnable user profile's picture analysis.
Type:booleandefault: falsepersonaProfilePictureAnalysis booleanEnable persona profile's picture analysis.
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.
objectpictureSharingMode stringControls how willingly the persona shares photos. NORMAL (default): only shares when explicitly asked. EAGER: shares naturally when the conversation calls for it.
Type:stringAllowed values: "NORMAL", "EAGER"
forcePictureSharing stringForce 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:stringforceVideoSharing stringForce 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.
string#action object
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. |
ENGAGE | Requests 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. |
objecttype stringrequiredThe type of the action.
Type:stringAllowed values: "PAUSE_CONVERSATION", "USER_PHOTO_REACTION", "ENGAGE"
#pauseConversation object
Optional pause conversation parameters.
Type:objectduration integerOptional 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 object
Type: objecturl string,nullThe URL of the photo. Required when source is set to URL.
string | nulldefault: nullcaption string,nullOptional 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.
objectmode stringThe 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.
| Value | Description |
|---|---|
AUTO | Selects best engagement type based on context |
ICEBREAKER | Sends an icebreaker message when starting a new conversation. Specify an angle (engage.type on the action, engageType on the legacy parameter) to force one. |
NUDGE | Sends re-engagement message after inactivity |
REVIVE | Sends messages to reactivate dormant conversations |
LATE_REPLY | Answers 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.
stringAllowed values: "AUTO", "ICEBREAKER", "NUDGE", "REVIVE", "LATE_REPLY"
type stringThe 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.
| Type | Description |
|---|---|
AUTO | Automatically selects the appropriate angle |
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 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.
stringAllowed 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.
objectgreekRewrite booleanUsed 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.
booleanrussianRewrite booleanUsed 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.
booleanromanianRewrite booleanUsed 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.
booleangermanRewrite booleanUsed 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.
booleanIllustrative 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