TypeScript SDK: Compliance API
⚠️
Preview — this feature is being built; the design below is the spec.
Enterprise records access with a compliance-scoped Admin key: SynticAdmin(compliance=True) sets the compliance beta flag.
import { SynticAdmin } from '@syntic/sdk'
const admin = new SynticAdmin() // reads SYNTIC_ADMIN_KEY| Method | Endpoint | Returns |
|---|---|---|
compliance.activities.list | GET /v1/compliance/activities | SyncPage[Activity] |
compliance.exports.create | POST /v1/compliance/exports | ComplianceExport |
compliance.exports.download | GET /v1/compliance/exports/{export_id}/content | None (writes the file) |
compliance.legalHolds.create | POST /v1/compliance/legal_holds | LegalHold |
Methods
compliance.activities.list
Iterate activity records. Maps to GET /v1/compliance/activities.
for await (const item of admin.compliance.activities.list({
starting_at: "2026-11-01T00:00:00Z",
product: "chat,code"
})) {
console.log(item)
}compliance.exports.create
Start a bulk export. Maps to POST /v1/compliance/exports.
const result = await admin.compliance.exports.create({
kind: "chats",
starting_at: "2026-10-01T00:00:00Z",
ending_at: "2026-11-01T00:00:00Z"
})compliance.exports.download
Stream an export to disk. Maps to GET /v1/compliance/exports/{export_id}/content.
const result = await admin.compliance.exports.download("cexp_01JCS5T7V9X1Z3B5D7F9", {
path: "chats.jsonl"
})compliance.legalHolds.create
Preserve records for named people. Maps to POST /v1/compliance/legal_holds.
const result = await admin.compliance.legalHolds.create({
name: "Matter 2026-117",
user_ids: [
"user_01J9Y0A2C4E6G8J0L2N4"
]
})Conventions
Every method accepts a final options object with headers, query, timeout, maxRetries and signal (an AbortSignal). List methods return pages that work with for await across all pages.
See the TypeScript SDK overview for installation, errors and retries.
Was this page helpful?