Summary
Importing ChatGPT conversations fails with Failed to import ChatGPT conversations: 'create_time' (a KeyError). Some conversations in current ChatGPT export archives lack a create_time field (or carry null), and the importer indexes the key unconditionally. In Basic Memory Cloud this surfaces as Import API returned 500 and the import job fails.
Evidence (from Basic Memory Cloud production)
RCA
- Trigger: user imports a real ChatGPT export where at least one conversation has no usable
create_time.
- Root cause: the ChatGPT importer treats
create_time as always present. OpenAI's export format does not guarantee it for every conversation object.
- Impact: the whole import fails with a 500; the user gets none of their conversations.
- Recovery: none; retrying the same archive fails identically.
Fix scope
- Tolerate missing/null
create_time (fall back to update_time, first message time, or epoch) and continue importing the remaining conversations; report per-conversation skips rather than failing the archive.
- While in there: return a 4xx with a clear message for undecodable JSON instead of a 500.
- Regression tests: conversation without
create_time; conversation with create_time: null; malformed JSON archive.
Acceptance criteria
- A ChatGPT export containing conversations without
create_time imports successfully.
- Cloud Logfire issue 1968 stops recurring for this cause.
Summary
Importing ChatGPT conversations fails with
Failed to import ChatGPT conversations: 'create_time'(aKeyError). Some conversations in current ChatGPT export archives lack acreate_timefield (or carrynull), and the importer indexes the key unconditionally. In Basic Memory Cloud this surfaces asImport API returned 500and the import job fails.Evidence (from Basic Memory Cloud production)
import_runtime.import_json_via_asgireceives HTTP 500 from the import API with detailFailed to import ChatGPT conversations: 'create_time'.Expecting property name enclosed in double quotes), which is a separate malformed-input case grouped under the same fingerprint; this issue is about thecreate_timeKeyError on well-formed exports.RCA
create_time.create_timeas always present. OpenAI's export format does not guarantee it for every conversation object.Fix scope
create_time(fall back toupdate_time, first message time, or epoch) and continue importing the remaining conversations; report per-conversation skips rather than failing the archive.create_time; conversation withcreate_time: null; malformed JSON archive.Acceptance criteria
create_timeimports successfully.