Base URL
/api/v1. For example, the bullying detection endpoint is at:
Authentication
Include your API key in every request using one of these methods:Response Format
Successful response
There are two response shapes, and which one you get depends on the endpoint family. Both carryconfidence, risk_score, rationale, recommended_action, language,
language_status and credits_used. They differ in how they name the verdict and how
they express severity, so read this before writing a shared parser.
Core safety family — /safety/bullying, /safety/unsafe, /safety/grooming.
Each names its own verdict field and returns a flat category vocabulary.
/safety/unsafe returns unsafe and categories in place of is_bullying and
bullying_type. /safety/grooming returns grooming_risk, flags and a per-message
message_analysis array; see Grooming detection.
Fraud and extended-harm family — /fraud/* and the extended /safety/* endpoints
(coercive-control, tfgbv, radicalisation, gambling-harm,
vulnerability-exploitation, distress-signals). These share one shape, identified by
the endpoint field, and carry evidence excerpts.
recommended_action is the field to branch on. It is a
stable enum, weakest to strongest: none, monitor, flag_for_review, block,
immediate_intervention. Prefer it to the verdict boolean, which fires at any severity
including low-severity cases you probably only want to log.
Error response
Every error uses the same envelope, andrequest_id is the value to quote in a support
ticket:
retry_after_ms alongside a Retry-After header, and add
degraded_components when a dependency is the cause.
Rate limit rejections carry an upgrade path instead, and are the one case that does not
include request_id:
Context Fields
Pass acontext object with any detection request to improve accuracy:
language and platform are accepted on every detection endpoint. The rest are accepted
on most, and a few belong to one endpoint only. Where a field is not part of an
endpoint’s schema it is ignored rather than rejected, so passing the full object
everywhere is safe.
/safety/grooming does not take a flat text field and its context is different: pass
messages with a sender_role per turn, and use context.child_age and
context.participant_age rather than age_group. See Grooming detection.
Carrying conversation state
There are two ways to give a detector the conversation rather than a single message, and which you use depends on your call pattern. Passcontext.prior_messages when you already hold the whole thread and want it seen in
one call. Pass the continuation_token from the previous response when you are calling
once per new message as it arrives: the token carries derived trajectory state without
resending history, and without anything being stored server-side. See
Continuation tokens.
Options
Stateless by Design
Tuteliq is fully stateless — every API call is independent, and no conversation text, context, or session state is retained between requests. This is a deliberate privacy-by-design decision, not a missing feature. Why stateless?- GDPR compliance — Processing children’s data under GDPR/COPPA demands the strictest data minimization. By retaining no cross-request state, there is zero risk of sensitive conversation data persisting in caches, logs, or backups.
- No data retention surface — There is no session store to breach, no conversation cache to leak, and no accumulated history to subpoena. Each request arrives, is analyzed, and the content is discarded.
- Simpler compliance audits — “We store nothing between requests” is the easiest privacy posture to audit and certify.
- Pass
context(age_group, platform, language, conversation_history) with every request that needs it. - Use
external_idandcustomer_idto correlate results with your own systems — these are echoed back but not stored. - If you need to track risk escalation across a conversation, aggregate results on your side using the
severity,risk_score, andlevelfields returned by each call.
This is intentional. Many child safety APIs offer session-based context accumulation. We chose not to — because when you’re processing messages from minors, the safest data is data you never store. Your integration handles context; Tuteliq handles detection.
Sandbox Mode
API keys withenvironment: "sandbox" run real analysis without consuming credits. Sandbox responses include "sandbox": true and the X-Sandbox-Mode: true header.
Create a sandbox key in your Dashboard under Settings > API Keys > Environment: Sandbox.
Sandbox limits:
- 10 requests per minute rate limit
- 50 calls per day (resets at midnight UTC)
- Real analysis, real results — not mocked
Rate Limits
Rate limits are enforced per API key per minute, based on your plan:
Your allowance is measured in detection credits, not requests. Endpoints
are weighted by cost: a text detection is 1 credit, an image 7, a video 95. See
pricing for the current plans.
Accounts on a legacy plan (Starter, Indie, Pro, Business) keep their existing
limits. Those plans are closed to new signups.
429 Too Many Requests with a Retry-After header.
Credits
Each endpoint consumes a different number of credits:
Every response includes
credits_used and credit balance headers:
Common Error Codes
For the full error reference and retry strategies, see Error Handling.
Endpoint Groups
Endpoint pages are auto-generated from the OpenAPI specification and appear in the sidebar. Each page includes request/response schemas, parameter descriptions, and an interactive playground.
Safety
Bullying, grooming, unsafe content, voice, image, and video analysis. Covers all 9 KOSA harm categories.
Synthetic Content
Detect AI-generated text, deepfake images, cloned voice audio, and manipulated video across all four modalities.
Fraud Detection
Social engineering, app fraud, romance scams, and money mule recruitment targeting minors.
Safety Extended
Gambling harm, coercive control, vulnerability exploitation, and radicalisation detection.
Document Analysis
Upload PDFs for per-page multi-endpoint safety detection with chain-of-custody hashing.
Multi-Endpoint
Fan-out a single text to up to 10 detectors in parallel with aggregated results.
Analysis
Emotional trend analysis — dominant emotions, sentiment trajectory, depression/anxiety indicators.
Guidance
Age-appropriate action plans for children, parents, or professionals.
Reports
Professional incident reports for schools, counselors, and moderators.
Verification
Age verification (document + biometric) and identity verification (face match + liveness).
Batch
Analyze up to 50 items in a single request with parallel processing.
Webhooks
HMAC-signed webhook alerts for critical incidents, with retry and secret rotation.
Usage
Credit balance, daily summaries, per-tool breakdowns, and billing period usage.
Compliance
GDPR data subject rights — erasure, portability, rectification, consent, audit trail.
Health
Liveness probes, readiness checks, and component-level status.