Python 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.

from syntic import SynticAdmin
 
admin = SynticAdmin()  # reads SYNTIC_ADMIN_KEY
MethodEndpointReturns
compliance.activities.listGET /v1/compliance/activitiesSyncPage[Activity]
compliance.exports.createPOST /v1/compliance/exportsComplianceExport
compliance.exports.downloadGET /v1/compliance/exports/{export_id}/contentNone (writes the file)
compliance.legal_holds.createPOST /v1/compliance/legal_holdsLegalHold

Methods

compliance.activities.list

Iterate activity records. Maps to GET /v1/compliance/activities.

for item in admin.compliance.activities.list(
    starting_at="2026-11-01T00:00:00Z",
    product="chat,code",
):
    print(item.id if hasattr(item, 'id') else item)

compliance.exports.create

Start a bulk export. Maps to POST /v1/compliance/exports.

result = 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.

result = admin.compliance.exports.download('cexp_01JCS5T7V9X1Z3B5D7F9', path="chats.jsonl")

compliance.legal_holds.create

Preserve records for named people. Maps to POST /v1/compliance/legal_holds.

result = admin.compliance.legal_holds.create(
    name="Matter 2026-117",
    user_ids=["user_01J9Y0A2C4E6G8J0L2N4"],
)

Conventions

Every method accepts extra_headers, extra_query, extra_body and timeout keyword arguments, and has an async twin on AsyncSyntic. List methods return pages that iterate across all pages automatically.

See the Python SDK overview for installation, errors and retries.

Was this page helpful?