Data retention and zero data retention
Parts of this page already hold today; each row of the retention table says whether it is current or planned.
This page says what Syntic keeps when you use the API, for how long, and what changes when your organization runs in zero data retention (ZDR) mode. Every API feature has a row in the table below; a feature is not released until its row is filled in.
What the chat completions API keeps today
For each POST /v1/chat/completions request, Syntic records a usage record: the organization, the member or key, the model, token counts (prompt, completion and cached), the cost, whether the plan or credits paid, the status and the request ID. The usage record does not contain your prompts, your files or the model’s reply.
Prompts and replies pass through Syntic to the model and back. Syntic does not write them to its own database. For ZDR organizations, the model service is also told not to store the request.
Retention by feature
| Feature | What is stored | Default retention | ZDR behaviour | Status |
|---|---|---|---|---|
| Chat completions | Usage record only (no content) | Kept for billing and audit for as long as the organization exists | Usage record only; models that need standard retention are refused with 400 model_unavailable | Current |
| Prompt caching | Processed prompt prefixes, keyed to your organization | Minutes; evicted when unused | Cache held in memory only, never written to disk | Current |
| Usage and cost reports | Aggregated usage records | Life of the organization | Same | Planned |
Request user and metadata fields | Stored on the usage record | Same as the usage record | Same; avoid personal data in these fields | Planned |
| Files | File content and name | 1 to 90 days, default 30, set per file | Only expires_after_days: 1; deleted as soon as the last request using the file ends | Planned |
| Batches | Input and results files | Results kept 30 days after the batch ends | Not available | Planned |
| Sessions | Event history, messages, tool calls | 30 days after the session is archived; deletable at any time | Events kept only while the session is open, then deleted; no replay after archive | Planned |
| Executions and traces | Inputs, outputs and step traces | 30 days | Inputs and outputs replaced by sizes and hashes; timing and status kept | Planned |
| Memory stores | Memories you or agents write | Until deleted or expired (default_ttl_days) | Off unless an Owner allows agent memory | Planned |
| Environments | Container files during a session | Deleted when the session’s container stops | Same | Planned |
| Vaults | Encrypted secret values | Until deleted | Same | Planned |
| Webhooks | Delivery log: status codes and timings, not payloads | 30 days | Same | Planned |
| Built-in web search and fetch tools | Queries and fetched URLs on the usage record | Same as usage record | Query text not stored; counts only | Planned |
| Audit events | Who did what, when, from where | 1 year (Enterprise: configurable up to 7 years) | Same; audit events never contain prompt content | Planned |
Zero data retention mode
ZDR is an organization-wide setting for customers who must not have prompt and output content stored at rest outside their own systems, for example under healthcare or financial regulation. Today it is switched on with the HIPAA add-on. A plain ZDR switch without the add-on is planned for Enterprise organizations.
With ZDR on:
- Only models whose serving path guarantees no storage can be used. Others return
400 model_unavailablebefore anything is billed.GET /v1/modelsmarks eligible models withzero_data_retention: true. - Features that cannot work without storing content are refused with
403 permission, codefeature_unavailable_zdr, or limited as the table says. - Usage records, billing and audit events continue; they contain no content.
- The setting is recorded in the audit log whenever it changes.
If the platform cannot confirm whether an organization is in ZDR mode, it treats the organization as ZDR (fail closed).
Organization retention period
Owners will be able to set a shorter retention period for stored content in organization settings: 7, 30, 90 or 365 days. The same setting already controls how long conversations are kept in Syntic’s own chat product. It applies to every content-holding feature in the table whose default is longer. A shorter setting on an individual resource (for example a file’s expires_after_days) always wins.
With the Admin API the same setting is readable at GET /v1/organizations/me under settings.data_retention_days and writable by Owners with PATCH /v1/organizations/me.
curl -sS https://app.syntic.ai/v1/organizations/me \
-H "Authorization: Bearer $SYNTIC_ADMIN_KEY" \
-H "syntic-beta: admin-2026-11-01" \
| jq '.settings | {zero_data_retention, data_retention_days}'Deleting data
- Resources you create (files, sessions, memory stores, vaults, batches) can each be deleted through their own
DELETEendpoint at any time. Deletion removes them from use immediately and from backups within 30 days. - To delete everything about one end user, delete the sessions you tagged with their
contact.idand the memory scope you used for them. - Closing an organization deletes all stored content within 30 days. Usage and billing records are kept as required by tax law.
Errors
| Status | type | code | When |
|---|---|---|---|
| 400 | invalid_request | model_unavailable | A model that needs standard retention, from a ZDR organization. Current. |
| 403 | permission | feature_unavailable_zdr | A feature that stores content, from a ZDR organization. Planned. |
| 403 | permission | memory_disabled_by_retention | A memory store from a ZDR organization without agent memory allowed. Planned. |
Build notes for the platform team
- Every new feature’s design doc declares its row in the table above, including ZDR behaviour, before build starts.
- Enforce retention with the existing scheduled cleanup function, extended per feature table; record each purge in a retention-jobs log.
- Fail closed on ZDR lookups, as chat completions does today.