Skip to content

Data Formats

HAEVN uses a canonical internal format called HAEVN.Chat to represent conversations from all platforms. This is the format used in JSON exports.

{
"id": "uuid-v4",
"source": "chatgpt",
"sourceId": "original-platform-id",
"title": "Conversation title",
"createdAt": "2024-01-15T14:23:00.000Z",
"modifiedAt": "2024-01-15T15:47:00.000Z",
"messages": {
"message-id-1": {
"id": "message-id-1",
"parentId": null,
"timestamp": "2024-01-15T14:23:00.000Z",
"request": {
"kind": "request",
"parts": [
{ "type": "text", "text": "Hello, can you help me with..." }
]
},
"responses": [
{
"kind": "response",
"parts": [
{ "type": "text", "text": "Of course! I'd be happy to help..." }
]
}
]
}
}
}

Each message part has a type field:

TypeDescription
textPlain or Markdown text content
codeCode block with optional language field
imageImage — either url (external) or data (base64)
documentFile attachment with name, mimeType, and optionally data
audioAudio file or URL
videoVideo file or URL
thinkingModel thinking/reasoning block
tool_callTool invocation with name and input
tool_resultTool output with name and output

When exporting multiple conversations, HAEVN creates a ZIP with this layout:

export.zip
├── chats/
│ ├── {chat-id}.json (or .md for Markdown export)
│ └── ...
└── attachments/
├── {chat-id}/
│ ├── image-filename.png
│ └── document-filename.pdf
└── ...