High-level scenario guidance
Compliance API → Full access to full logs and metadata for eDiscovery, DLP use cases.
User Analytics → Aggregated subset of the Compliance API data focused on usage, adoption, and engagement insights.
When to use the Compliance API
Regulated auditing & e-discovery: Preserve every message, file, Memory, Canvas, or Automation for legal or security review.
Fine-grained retention: Programmatically delete a single item (right-to-be-forgotten, IP removal, etc.).
Incident evidence: Immutable logs (up to 30-day post-deletion window) let security teams trace actions
External integrations: Push raw JSON to Microsoft Purview, Netskope, Relativity, or a custom data lake.
Key traits: REST API, raw JSON, rate-limited, Enterprise-only, dedicated API-key scopes, no dashboards or aggregates.
Not for analytics. The Compliance API returns every user input, output, and system-generated/injected message (e.g., “be more concise,” python tool calls) for e-discovery and DLP. This raw JSON is noisy and requires heavy ETL work and custom dashboards to extract adoption or engagement metrics. If you need clean usage insights, rely on the built-in User Analytics dashboard in your ChatGPT workspace instead.
When to use User Analytics in your ChatGPT Enterprise/Edu workspace
Adoption & engagement tracking. Leadership wants to know “How many active users or GPTs did we have this month?” and see trends (+/‑ %).
License management. Spot unused seats, pending invites, and high-usage teams without code.
Top GPT / tool insight. See which custom GPTs or built-in tools (DALL·E, Canvas, etc.) drive value.
Lightweight exports: Download weekly/monthly CSVs for slides or BI tools but you don’t need message content.
Key traits: Point-and-click dashboard (Workspace Settings → Analytics), refreshed daily, aggregated counts only, no API, no message text.
Why Compliance API counts can differ from your User Analytics dashboard
Additional message types: Compliance API includes ChatGPT-generated “processing” and “system” messages that never surface in the dashboard.
Messages without timestamps: Internal system records (no created_at) appear only in the API.
Conversation update logic: API returns conversations by last update time, so:
Older messages reappear if a thread is updated, inflating counts.
Non-message updates (e.g., title change) can surface a conversation even when no new user message exists.
Keep these factors in mind when reconciling the User Analytics tab in your ChatGPT Workspace with data from our Compliance API.