The Tuteliq .NET SDK provides an async client for the Tuteliq child safety API. It supports .NET 6.0+ and ships with full XML documentation and nullable reference type annotations.
using Tuteliq;var tuteliq = new TuteliqClient("YOUR_API_KEY");
Never hardcode API keys in source code. Use IConfiguration, user secrets, or a secrets manager.
using Microsoft.Extensions.Configuration;var config = new ConfigurationBuilder() .AddUserSecrets<Program>() .Build();var tuteliq = new TuteliqClient(config["Tuteliq:ApiKey"]);
Scan a single text input for harmful content across all KOSA categories.
var result = await tuteliq.DetectUnsafeAsync( text: "Let's meet at the park after school, don't tell your parents", ageGroup: AgeGroup.TenToTwelve);Console.WriteLine(result.Safe); // falseConsole.WriteLine(result.Severity); // Severity.HighConsole.WriteLine(result.Categories); // [Category.Grooming, Category.Secrecy]
Analyze a conversation history for grooming indicators.
var result = await tuteliq.DetectGroomingAsync( messages: new[] { new Message(Role.Stranger, "Hey, how old are you?"), new Message(Role.Child, "I'm 11"), new Message(Role.Stranger, "Cool. Do you have your own phone?"), new Message(Role.Stranger, "Let's talk on a different app, just us"), }, ageGroup: AgeGroup.TenToTwelve);Console.WriteLine(result.GroomingDetected); // trueConsole.WriteLine(result.RiskScore); // 0.92Console.WriteLine(result.Stage); // GroomingStage.Isolation
Evaluate emotional well-being from conversation text.
var result = await tuteliq.AnalyzeEmotionsAsync( text: "Nobody at school talks to me anymore. I just sit alone every day.", ageGroup: AgeGroup.ThirteenToFifteen);Console.WriteLine(result.Emotions); // [Emotion { Label = "sadness", Score = 0.87 }, ...]Console.WriteLine(result.Distress); // trueConsole.WriteLine(result.RiskLevel); // RiskLevel.Elevated
Detect financial exploitation, social engineering, and scam patterns targeting minors. Other methods — DetectAppFraudAsync, DetectMuleRecruitmentAsync — follow the same pattern.
var result = await tuteliq.DetectSocialEngineeringAsync( text: "If you really trusted me you'd send me your home address. All my real friends do.", ageGroup: AgeGroup.TenToTwelve);Console.WriteLine(result.Detected); // trueConsole.WriteLine(result.RiskScore); // 0.88Console.WriteLine(result.Level); // "high"Console.WriteLine(result.Categories); // [{ Tag = "TRUST_EXPLOITATION", ... }]
var result = await tuteliq.DetectRomanceScamAsync( text: "I've never felt this way about anyone before. You're so mature for your age. Keep us a secret.", ageGroup: AgeGroup.ThirteenToFifteen);Console.WriteLine(result.Detected); // trueConsole.WriteLine(result.RiskScore); // 0.91
var result = await tuteliq.DetectVulnerabilityExploitationAsync( text: "I know you said your parents don't listen to you. I'm different — I actually care.", ageGroup: AgeGroup.ThirteenToFifteen);Console.WriteLine(result.Detected); // trueConsole.WriteLine(result.RiskScore); // 0.85
var result = await tuteliq.DetectRadicalisationAsync( text: "They're all against us. Only our group understands the truth. Are you ready to act?", ageGroup: AgeGroup.ThirteenToFifteen);Console.WriteLine(result.Detected); // trueConsole.WriteLine(result.Level); // "high"
Run multiple detection endpoints on a single text in one API call.
var result = await tuteliq.AnalyseMultiAsync( text: "You're so special. Nobody else understands you like I do. Send me a photo.", detections: new[] { Detection.SocialEngineering, Detection.Grooming, Detection.RomanceScam }, ageGroup: AgeGroup.ThirteenToFifteen);Console.WriteLine(result.Summary.OverallRiskLevel); // "high"Console.WriteLine(result.Summary.DetectedCount); // 2foreach (var r in result.Results){ Console.WriteLine($"{r.Endpoint}: {r.Detected} (risk: {r.RiskScore})");}
AnalyseMultiAsync is billed per individual detection endpoint, not per request.