Our own proposal: normalise the sender field before you trust any count, because Grok writes the assistant's role three ways. In our real export of 309 conversations, 2,190 responses carry the sender values human (1,087), ASSISTANT (792), assistant (310) and grok-4 (1), so matching one spelling finds only 310 of the 1,103 responses that are not yours.
In Grok, open Settings, then Data Controls, then Export account data. That link leads to accounts.x.ai/data, where you request the export and download the zip when it is ready. These are the steps described in TidyChats' guide to exporting a Grok chat, which we read on October 30, 2026.
Our zip had 450 entries and unpacked to 357 MB. Almost all of that was uploaded media and asset files. The conversations are one JSON file of 10.8 MB at ttl/30d/export_data/<uuid>/prod-grok-backend.json. Its root holds conversations (309), projects (10), media_posts (330) and tasks. No conversation in ours was marked temporary.
The assistant is written three different ways in this file. Across 2,190 responses we found these sender values:
| sender value | Responses |
|---|---|
| human | 1,087 |
| ASSISTANT | 792 |
| assistant | 310 |
| grok-4 | 1 |
A tool that matches the lowercase word assistant finds 310 of the 1,103 responses that are not from the human. Compare case-insensitively, and treat only a case-insensitive human as you. Anything else is the model.
Responses link to their parents through parent_response_id and path. A conversation can name its final response in leaf_response_id, but 200 of our 309 conversations have no such field. For those, the end of the thread is the newest response that no other response lists as its parent. Dates arrive wrapped in an object, {"$date": {"$numberLong": ...}}, so unwrap them before sorting.
The model values in ours included grok-3, grok-4-auto, grok-4-mini-thinking-tahoe, grok-4, an empty string, and one long internal build name. Do not assume the field is clean enough to group by.
On the 0.6.6 development build, this file indexed with zero failures: 309 conversations became 9,525 chunks (1,347 user, 7,869 assistant, 309 with no role) in 6 seconds, with a peak of 740 MiB. The comparison with the other two exports is in ChatGPT, Claude and Grok export formats compared, and the Claude file is covered in how to export Claude conversations.