Platforms
Zendesk
Protect ticket messages and AI-drafted agent responses.
About 5 minutes hands-on
What this guide does not cover
- Guards ticket and draft content. It does not alter Zendesk retention policy or purge historical tickets.
- Does not cover Zendesk app publishing or marketplace review.
Integration pattern
1. Guard inbound ticket messages before they reach the AI agent
2. Guard AI draft replies before they are sent to customers
3. Use distinct SoterAI projects per brand or client for isolation
4. Use webhooks and scheduled reports for security review
Environment
Terminal
SOTER_API_KEY=ck_live_your_key_here
# SOTER_BASE_URL is optional if using the SDK — a default is includedAPI example
TypeScript
1// Guard incoming ticket message (server-side)
2const inputResult = await fetch(`${process.env.SOTER_BASE_URL}/api/guard/input`, {
3 method: "POST",
4 headers: {
5 "x-api-key": process.env.SOTER_API_KEY,
6 "Content-Type": "application/json",
7 },
8 body: JSON.stringify({ message: ticketBody }),
9}).then((r) => r.json());
10
11if (inputResult.action === "BLOCK") {
12 // 🛑 Block unsafe ticket content before AI processes it
13 return { reply: "This message could not be processed.", blocked: true };
14}
15
16// Guard AI draft before sending to customer
17const outputResult = await fetch(`${process.env.SOTER_BASE_URL}/api/guard/output`, {
18 method: "POST",
19 headers: {
20 "x-api-key": process.env.SOTER_API_KEY,
21 "Content-Type": "application/json",
22 },
23 body: JSON.stringify({ aiResponse: aiDraft }),
24}).then((r) => r.json());Best practices
Use separate projects per client
Isolate data with distinct SoterAI projects per brand or client.
Always guard output too
Run the output guard on AI drafts before they reach customers.
Redact audit logs
Store only redacted/guarded text in audit logs, never raw text.
Use webhooks for alerts
Configure webhooks for real-time blocking alerts.
Coordinate with support owners
Get buy-in from support teams before enabling blocking mode.