Detect grooming patterns in conversations
Analyze a sequence of messages for multi-stage grooming tactics: trust building, isolation, secrecy requests, boundary testing, and sexual escalation. Accepts full conversation history with sender roles to detect patterns that single-message analysis would miss. Returns grooming risk level, identified tactics as flags, and recommended intervention actions.
Authorizations
API key as Bearer token
Body
Sequence of messages to analyze. Consecutive same-role messages of ≤3 characters are automatically defragmented before tactic analysis to prevent letter-by-letter evasion.
100Opaque signed token from a previous /grooming call. Carries derived analysis state across calls without server-side storage.
Discard any continuation_token and start a fresh conversation.
Optional customer-side identifier for this batch (used as the evidence pointer in the issued continuation_token).
128Top-level alias for options.support_threshold. Minimum severity to show crisis support resources (default: high). Critical always shows.
low, medium, high, critical Your unique identifier (e.g. message ID, content ID) for correlating Tuteliq results with your own system. Echoed back in the response and included in webhook payloads so you can match alerts to the original content.
255Your end-customer identifier for multi-tenant / B2B2C scenarios. If you serve multiple customers (schools, apps, brands) from a single API key, set this to route webhook alerts to the correct customer. Echoed back in the response and included in webhook payloads as "customerId".
255Arbitrary key-value pairs for additional context (e.g. { "channel": "discord", "region": "eu" }). Stored with the detection result, echoed in the response, and included in webhook payloads. Maximum 20 properties.
Per-call override of your account incident logging setting. When set, it takes precedence over the account-level flag for THIS request: true forces the incident to be persisted, false suppresses persistence. Omit to use your account default (which itself defaults to enabled). Lets you control incident logging per request, e.g. suppress logging for test traffic.
Response
Default Response
Grooming-risk level. "low" indicates a signal worth monitoring but no action required; branch your alerting on recommended_action (flag_for_review / block / immediate_intervention), not the bare presence of a low-level risk.
none, low, medium, high, critical Routing key — a single stable token, safe to switch on. Ordered weakest to strongest: none (no signal), monitor (log, no human needed), flag_for_review (queue for a moderator), block (withhold or limit the content), immediate_intervention (crisis path). Human-readable guidance is in action_detail, not here.
none, monitor, flag_for_review, block, immediate_intervention Optional one-to-two-sentence explanation of recommended_action, intended for a moderator UI. Never branch on this field — it is free text and its wording is not stable across releases.
Per-message risk breakdown showing how risk escalates across the conversation
Language code used for analysis (auto-detected or provided)
Language support maturity: "stable" (en) or "beta" (all others)
stable, beta Number of credits consumed by this request
Privacy-first signed token carrying derived analysis state across calls. Pass back on the next /grooming request.
ISO 8601 expiry timestamp of the continuation_token.
How prior state was sourced for this call.
token, fresh, reset Status of the analysis. ok is the default. engine_error means the analysis engine could not produce a verdict (malformed/adversarial input) and recommended_action is forced to flag_for_review. out_of_scope_adults means the caller provided 2+ adult ages (via context.participant_age, context.child_age, or per-message sender_age) and the call was short-circuited as out of scope for grooming — consider /safety/coercive-control or /safety/social-engineering for adult-adult dynamics.
ok, engine_error, out_of_scope_adults Echo of the external_id you provided in the request
Echo of the customer_id you provided in the request
Echo of the metadata you provided in the request
Country-specific crisis helplines and response guidance (only included for high/critical severity)