---
{
  "id": "platform.memory.import-review-and-limits",
  "topic": "memory",
  "title": "Free import review flow, limits, and deduplication",
  "locale": "en",
  "version": "2026-07-26",
  "summary": "Import permanently costs zero, creates a resumable review capsule, and writes memories only after complete user decisions in the UI.",
  "content": "`import_memories` parses inline text into a permanently free review capsule; action success does not mean the entries are in Memory. Always send the user to the returned review `url`. The compatibility fields are fixed: `isFree: true`, `chargedPoints: 0`, and dry-run `wouldChargePoints: 0`.\n\nInputs are Arinova JSON, ChatGPT conversations JSON, generic JSON, CSV, Markdown, and plain text. Web/REST accept an official ChatGPT export ZIP, `conversations.json`, or numbered files. Preview reports conversation, text-message, and chunk counts without samples. Capsules progress `pending → extracting → ready → imported`; `failed → pending` retries. Pending, extracting, and ready are open. Extracting stale for 10 minutes becomes retryable failed.\n\nThe action accepts inline content only: at most 63 KB and 500 entries. Empty or oversized input yields `NO_IMPORTABLE_ENTRIES`, `FILE_TOO_LARGE`, or `ENTRY_LIMIT_EXCEEDED`. One owner may have three open capsules; `OPEN_IMPORT_LIMIT_REACHED` includes links, so finish or close one. Ordinary UI uploads are 5 MB; ChatGPT ZIP/JSON is 50 MB with stricter inner limits. Relay `EMPTY_ROWS_SKIPPED`, `UNKNOWN_METADATA_IGNORED`, and `LONG_ENTRY_TRUNCATED`. Replay returns `idempotencyReplayed: true`.\n\nChatGPT evidence must be user-authored; assistant text is context, and Saved Memories are not exported. Review must decide every entry exactly once as `import`, `skip`, or `replace`; replace archives the old row. Missing or repeated entries fail with `INCOMPLETE_ENTRIES` or `DUPLICATE_ENTRY`. Dedup uses a 0.95 similarity threshold and never chooses for the user. `arguments.content` is redacted; import writes only to the current Agent’s own `agent` scope.\n",
  "aliases": [
    "import memories",
    "memory import review",
    "review capsule",
    "import is free",
    "duplicate memory",
    "ChatGPT archive",
    "匯入記憶",
    "記憶膠囊"
  ],
  "tags": [
    "memory",
    "import",
    "review",
    "limits"
  ],
  "relatedActions": [
    "arinova.memory.import_memories"
  ],
  "relatedActionPrefixes": [],
  "url": "https://docs.arinova.ai/en/kb/memory/import-review-and-limits/"
}
---

`import_memories` parses inline text into a permanently free review capsule; action success does not mean the entries are in Memory. Always send the user to the returned review `url`. The compatibility fields are fixed: `isFree: true`, `chargedPoints: 0`, and dry-run `wouldChargePoints: 0`.

Inputs are Arinova JSON, ChatGPT conversations JSON, generic JSON, CSV, Markdown, and plain text. Web/REST accept an official ChatGPT export ZIP, `conversations.json`, or numbered files. Preview reports conversation, text-message, and chunk counts without samples. Capsules progress `pending → extracting → ready → imported`; `failed → pending` retries. Pending, extracting, and ready are open. Extracting stale for 10 minutes becomes retryable failed.

The action accepts inline content only: at most 63 KB and 500 entries. Empty or oversized input yields `NO_IMPORTABLE_ENTRIES`, `FILE_TOO_LARGE`, or `ENTRY_LIMIT_EXCEEDED`. One owner may have three open capsules; `OPEN_IMPORT_LIMIT_REACHED` includes links, so finish or close one. Ordinary UI uploads are 5 MB; ChatGPT ZIP/JSON is 50 MB with stricter inner limits. Relay `EMPTY_ROWS_SKIPPED`, `UNKNOWN_METADATA_IGNORED`, and `LONG_ENTRY_TRUNCATED`. Replay returns `idempotencyReplayed: true`.

ChatGPT evidence must be user-authored; assistant text is context, and Saved Memories are not exported. Review must decide every entry exactly once as `import`, `skip`, or `replace`; replace archives the old row. Missing or repeated entries fail with `INCOMPLETE_ENTRIES` or `DUPLICATE_ENTRY`. Dedup uses a 0.95 similarity threshold and never chooses for the user. `arguments.content` is redacted; import writes only to the current Agent’s own `agent` scope.
