Install Guide
Collecting the compliance logs of a ChatGPT Enterprise workspace takes three steps.
- Get an admin key and the workspace ID from the ChatGPT admin console
- Register a connect profile in Logpresso
- Enable the collectors
1. Issuing an admin key
The admin key must be workspace-scoped. It is not the organization admin key issued on the API platform (platform.openai.com), and the two are not interchangeable.
1-1. Open the admin console
Go to https://admin.openai.com and sign in with an account that administers the workspace.
This is a different address from chatgpt.com, which members use, and from platform.openai.com, which developers use. Neither of those has the compliance admin key in its settings.
1-2. Find and select the workspace
Signing in lands on the overview screen. In the table below, copy the ID of the row whose product is ChatGPT workspace.
With the ID copied, switch to the workspace whose logs you want to collect, using the selector at the top left. While an organization is selected, the Credentials menu is not shown. This is the easy place to get stuck: if you cannot find Credentials, check whether a workspace is selected.
1-3. Credentials
Once a workspace is selected, Credentials appears in the menu. Open it.
1-4. Admin keys tab
On the Credentials screen, open the Admin keys tab and create a key.
The key is shown in full only once, right after it is created. Copy it immediately — you cannot read it again after leaving the screen.
2. Registering a connect profile
In Logpresso, go to Settings > Connect profiles and add a profile of type ChatGPT Enterprise: Workspace.
| Field | Notes |
|---|---|
| Admin key | Required. The value copied in 1-4. Masked once saved |
| Workspace ID | Required. The value copied in 1-2 |
| HTTP proxy | Optional. IP:port |
| Connect timeout | Optional. Seconds, default 30 |
| Read timeout | Optional. Seconds, default 300 |
Register one profile per workspace. Collectors and search screens both work per profile, so data from different workspaces never mixes.
Profile naming
The profile name is used verbatim as the trailing part of every collection table name. Name the profile HQ and the tables are CHATGPT_CHAT_HQ, CHATGPT_AUDIT_HQ, and so on.
Use a short Latin abbreviation that identifies the workspace. The name goes through a conversion that keeps only what a table name can hold.
- Letters are upper-cased, and anything that is not a letter, digit, or underscore becomes an underscore
- Anything past 24 characters is cut
- If nothing is left — a name written entirely in a non-Latin script, for instance — the first 8 characters of the profile identifier are used instead, giving unreadable names like
CHATGPT_CHAT_3F9A1C07
Renaming the profile later does not rename tables that already exist, so it is worth settling on a name now.
3. Enabling the collectors
Pick a workspace on ChatGPT Enterprise > Collectors and the ten collection targets are listed. Enabling one creates both the table and the collector; there is nothing to prepare beforehand.
| Target | Table | Log schema |
|---|---|---|
| Conversation messages | CHATGPT_CHAT_{workspace} | chatgpt-ent-chat |
| Audit | CHATGPT_AUDIT_{workspace} | chatgpt-ent-audit |
| Authentication | CHATGPT_AUTH_{workspace} | chatgpt-ent-auth |
| App auth | CHATGPT_APP_AUTH_{workspace} | chatgpt-ent-app-auth |
| App calls | CHATGPT_APP_{workspace} | chatgpt-ent-app |
| Codex | CHATGPT_CODEX_{workspace} | chatgpt-ent-codex |
| Codex security | CHATGPT_CODEX_SECURITY_{workspace} | chatgpt-ent-codex-security |
| Presentations | CHATGPT_SLIDE_{workspace} | chatgpt-ent-presentation |
| Spreadsheets | CHATGPT_SHEET_{workspace} | chatgpt-ent-spreadsheet |
| Custom agents | CHATGPT_CUSTOM_AGENT_{workspace} | chatgpt-ent-custom-agents |
The {workspace} part is derived from the profile name.
Interval and initial scan
Both are set per row. Conversation messages and Codex logs arrive at very different rates, so one workspace-wide interval would be wrong for at least one of them.
- Interval: 60 to 3600 seconds, default 300
- Initial scan days: 1 to 30, default 30
Initial scan days decides how far back the first run reaches. The default is the maximum because the API retains only the last 30 days and never backfills. Later runs continue from the last record read.
4. Verifying
After enabling a collector, check that its status turns to running and that the record count climbs.
A wrong key or workspace ID makes the collector report why it failed.
| Symptom | Cause |
|---|---|
| HTTP 401 | The admin key was rejected — most likely an organization admin key |
| HTTP 404 | The workspace ID does not match |
| HTTP 429 | Too many requests. Raise the interval |
Once collection starts, the data is searchable under ChatGPT Enterprise > Logs. See the user guide for how to use those screens.