Dating Safety API
Classify text with structured, versioned results. The Dating Safety analyzer classifies text against 200 indicators in 5 groups across 40 supported languages.
Use the returned groups, indicators, confidence values, and version metadata in your own triage and review workflows.
POST /v1/analyze · REST · JSON · Bearer authentication
Make your first request
curl -X POST https://sentiqra.tech/v1/analyze \
-H "Authorization: Bearer $SENTIQRA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "I've never asked you for anything before, but my daughter needs surgery and I can't cover the hospital bill \u2014 can you help me just this once?",
"language": "en",
"analyzers": [
"dating-safety"
]
}'
Example response:
{
"language": "en",
"language_source": "declared",
"signals": [
{
"analyzer": "dating-safety",
"code": "deception_manipulation",
"label": "Deception & Manipulation",
"score": 0.94,
"level": "category"
},
{
"analyzer": "dating-safety",
"code": "scam_money_request",
"label": "Direct request for money or financial help",
"score": 0.92,
"level": "label",
"parent": "deception_manipulation"
},
{
"analyzer": "dating-safety",
"code": "scam_emergency_medical",
"label": "Fabricated medical emergency needing funds",
"score": 0.9,
"level": "label",
"parent": "deception_manipulation"
}
],
"meta": {
"analyzers": [
{
"name": "dating-safety",
"status": "completed",
"applicability": "analyzable",
"assessment": "signals_detected",
"signal_count": 3,
"billed": true
}
]
},
"usage": {
"analyzer_runs": 1
},
"verification": {
"configuration": "sqcfg_SNEEC9V3",
"fingerprint": "fp_8a72...19f",
"input_commitment": "ic_31bd...a42",
"signature": "sig_ed25519_4c1f...e2a",
"key_id": "edk_af4f218e"
}
}
Don't have an API key? Generate one from the API Keys page in your dashboard.
Endpoint
/v1/analyze
Analyzes submitted text and returns structured signals with scores and a verification receipt. Select this analyzer via the analyzers parameter with ID dating-safety.
Request
{
"text": "I've never asked you for anything before, but my daughter needs surgery and I can't cover the hospital bill \u2014 can you help me just this once?",
"language": "en",
"analyzers": [
"dating-safety"
]
}
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| text | string | Yes | - | Text to analyze |
| language | string | No | "en" | Supported language code |
| analyzers | string[] | Yes | - | 1–2 analyzer slugs to run (never defaults to all) |
Related endpoints
GET /v1/meta/domains
Lists all analyzers with identifiers, status, and endpoints - no authentication required. Send a Bearer API key for taxonomy size and language counts.
GET /v1/meta/domains/dating-safety
Identifier, availability, and endpoint for this analyzer. Send a Bearer API key for taxonomy summary and supported languages.
GET /v1/account/usage
Current-period usage and quota for your API key. Requires authentication.
Response fields
| Field | Type | Description |
|---|---|---|
| analyzer | string | Analyzer that produced this signal |
| code | string | Stable machine identifier - immutable across API versions; use for storage and cross-referencing |
| label | string | Human-readable display name |
| score | float | Signal-match strength (0.0-1.0) |
| level | string | "category" or "label" |
| parent | string | Parent category code (label-level only) |
Important behavior
Determinism
For the same normalized input evaluated against the same pinned configuration and output profile, Sentiqra returns the same canonical signals. Version changes are explicit.
Confidence
A score expresses signal-match strength under a particular analyzer configuration. It is not a probability that the signal or a downstream action is correct. Validate action thresholds on representative labeled data.
Privacy
Submitted text is processed in memory and not retained. See data handling for exact retention behavior.
Limits
Character limit, RPS, and monthly quota depend on your plan. See pricing for current limits.
Supported languages
Dating Safety currently supports 40 languages.
| Code | Language | Status |
|---|---|---|
| ar | Arabic | Production |
| arz | Egyptian Arabic | Production |
| be | Belarusian | Production |
| bg | Bulgarian | Production |
| bn | Bengali | Production |
| cs | Czech | Production |
| da | Danish | Production |
| de | German | Production |
| el | Greek | Production |
| en | English | Production |
| es | Spanish | Production |
| fi | Finnish | Production |
| fr | French | Production |
| hi | Hindi | Production |
| hr | Croatian | Production |
| hu | Hungarian | Production |
| id | Indonesian | Production |
| it | Italian | Production |
| ja | Japanese | Production |
| ko | Korean | Production |
| lt | Lithuanian | Production |
| mr | Marathi | Production |
| nl | Dutch | Production |
| no | Norwegian | Production |
| pcm | Nigerian Pidgin | Production |
| pl | Polish | Production |
| pt | Portuguese | Production |
| ro | Romanian | Production |
| ru | Russian | Production |
| sk | Slovak | Production |
| sr | Serbian | Production |
| sv | Swedish | Production |
| sw | Swahili | Production |
| ta | Tamil | Production |
| te | Telugu | Production |
| tr | Turkish | Production |
| uk | Ukrainian | Production |
| ur | Urdu | Production |
| vi | Vietnamese | Production |
| zh | Chinese | Production |
All languages this detector supports are enabled on every plan. Custom or restricted arrangements may scope language access - check the dashboard or GET /v1/account/entitlements for account-specific availability.
Detector does not support language → 400 unsupported_language
Detector supports language but the account is not entitled (restricted/custom arrangements only - GA plans include all supported languages) → 403 language_not_in_plan
Taxonomy
The Dating Safety taxonomy contains 5 groups and 200 indicators. Representative entries are shown publicly - the complete taxonomy is available to customers after request access .
1
Deception Manipulation
deception_manipulation
50 indicators
Deception Manipulation
deception_manipulation
The complete signal list is available to customers. Request access to view it.
2
Abuse Threats
abuse_threats
50 indicators
Abuse Threats
abuse_threats
The complete signal list is available to customers. Request access to view it.
3
Sexual Boundaries
sexual_boundaries
30 indicators
Sexual Boundaries
sexual_boundaries
The complete signal list is available to customers. Request access to view it.
4
Exploitation
exploitation
30 indicators
Exploitation
exploitation
The complete signal list is available to customers. Request access to view it.
5
Platform Misc
platform_misc
40 indicators
Platform Misc
platform_misc
The complete signal list is available to customers. Request access to view it.
Reading Dating Safety output
What you can safely infer from a result - and what you must not.
Intended task
Flag documented dating-risk patterns - scam lures, coercion, unsafe-contact escalation - in member text for review and warning flows.
Input requirements
text- the only field analyzed; up to 4,096 Unicode code points. Over the limit is rejected withinput_too_long, never truncated.language- must be a language this analyzer supports. Unsupported codes are rejected with400 unsupported_language, never analyzed as a different language.analyzers- include"dating-safety"; up to 2 analyzers per request, one billed run each.- No context beyond
text- no user IDs, history, profiles, or attachments are read or inferred. - Analyzes the submitted message only - profiles, photos, match history, and payment records are not inputs.
Ordinary positive
“My love, the customs office is holding your package. I need EUR 400 for the release fee - can you send it today?”
Safe inference: The message matches documented romance-scam and money-request patterns - route it to the specialized queue before money moves.
Confusing negative · Quotation
“He wrote "the customs office is holding your gift - I need EUR 400 for the release fee" - is this a scam?”
What happens: Scam signals can still fire: the member is quoting the lure to report it, but the analyzer scores the submitted text as written. The signal means the text contains documented scam language - not that the sender of this message is a scammer.
Why it's tricky: Reports, safety warnings, and appeals all quote the messages they describe. Combine the signal with who sent the text and your own context - and remember that a bare "can you send me money?" may be too thin to match strongly. Absence is "not detected," never clearance.
What you can safely infer
- Which documented risk behaviors the text matched, and at what signal-match strength.
- That the receipt ties each flag to the configuration that produced it - a replayable record for investigators.
What you must not infer
- ✕That the sender is actually a scammer - the signal describes the text, not the person.
- ✕That the recipient is a victim or that a reported incident occurred.
- ✕That unflagged conversations are safe - a missing signal means "not detected," never "cleared."
- ✕Anything outside the submitted text - no photos, profiles, or account metadata are analyzed.
Boundary: Dating Safety signals flag risk language in a message - they do not determine that a user is a scammer, and a clean result is not clearance. Enforcement stays with your moderation team.