diff --git a/apps/docs/api-reference/overview.mdx b/apps/docs/api-reference/overview.mdx index 9e7ce0c8..0a0edfac 100644 --- a/apps/docs/api-reference/overview.mdx +++ b/apps/docs/api-reference/overview.mdx @@ -48,7 +48,7 @@ Same `containerTag` scopes ingest, search, and profiles — one engine, multiple ## Suggested order 1. **Ingest** — `POST /v3/documents` (SDK: `client.add`) -2. **Documents** — `GET /v3/documents/{id}` until `status: "done"` +2. **Documents** — `GET /v3/documents/{id}` until `status: "done"` for searchable content, and `dreamingStatus: "done"` before you read memories or profiles 3. **Search** — `POST /v4/search` 4. **Profiles** — `POST /v4/profile` diff --git a/apps/docs/install.md b/apps/docs/install.md index a38a4a0e..9ea40e82 100644 --- a/apps/docs/install.md +++ b/apps/docs/install.md @@ -272,8 +272,8 @@ await fetch(`https://api.supermemory.ai/ns/${userId}/document/file`, { body: formData, }) -// Processing is async - check status before assuming searchable -// client.documents.get(userId, documentId) → wait for system.status === "done" +// Processing is async: client.documents.get(userId, documentId) +// wait for system.status === "done" for chunks (searchable content), and system.dreamingStatus === "done" for memories ``` ## STEP 8: SEARCH MODES diff --git a/apps/docs/quickstart.mdx b/apps/docs/quickstart.mdx index d0b95173..6dc8af96 100644 --- a/apps/docs/quickstart.mdx +++ b/apps/docs/quickstart.mdx @@ -179,7 +179,7 @@ curl -X POST "https://api.supermemory.ai/ns/user_4f8a/document" \ ## 3. Wait until both are `done` -Poll document status. With **`dreaming: "instant"`**, once `system.status` is `done` the document is indexed **and** memories for that document should be available for search and profiles (`queued → extracting → … → done`). +Poll each document. `system.status` reaches `done` once the content is indexed and searchable (`queued → extracting → … → done`). Memories are ready when `system.dreamingStatus` is also `done`; it reads `dreaming` while they are generated. **`dreaming: "instant"`** starts memory generation right away instead of waiting for the next batch. > Note that the preferred way is to have `dreaming: dynamic`. supermemory charges one extra operation for instant dreaming. Instant is good for one off tests, setup, debugging and benchmarking. @@ -188,7 +188,8 @@ Poll document status. With **`dreaming: "instant"`**, once `system.status` is `d async function waitUntilDone(id: string) { for (;;) { const d = await supermemory.documents.get(user, id); - if (d.system.status === "done" || d.system.status === "failed") return d; + if (d.system.status === "failed") return d; + if (d.system.status === "done" && d.system.dreamingStatus === "done") return d; await new Promise((r) => setTimeout(r, 1500)); } } @@ -204,7 +205,9 @@ import time def wait_until_done(doc_id: str): while True: d = client.documents.get(user, doc_id) - if d.system.status in ("done", "failed"): + if d.system.status == "failed": + return d + if d.system.status == "done" and d.system.dreaming_status == "done": return d time.sleep(1.5) @@ -217,7 +220,7 @@ print("ready to search") # replace DOC_ID with each document id from the add responses curl "https://api.supermemory.ai/ns/user_4f8a/document/DOC_ID" \ -H "Authorization: Bearer $SUPERMEMORY_API_KEY" -# repeat until "system": { "status": "done" } +# repeat until "system": { "status": "done", "dreamingStatus": "done" } ``` diff --git a/apps/docs/supermemory-mcp/chatgpt-web.mdx b/apps/docs/supermemory-mcp/chatgpt-web.mdx index 5ba60715..5dce7104 100644 --- a/apps/docs/supermemory-mcp/chatgpt-web.mdx +++ b/apps/docs/supermemory-mcp/chatgpt-web.mdx @@ -170,7 +170,7 @@ ChatGPT opens the **Add Supermemory MCP to ChatGPT** dialog. Select **Sign in wi On the Supermemory authorization page: -- Select **Read + Write** to let ChatGPT search and save Supermemory context. Select **Read only** if you only want search access. +- Select **Read and write** to let ChatGPT search and save Supermemory context. Select **Read only** if you only want search access. - Select **Full access** to use every available space, or **Scoped** to choose specific spaces. - Choose how long the connection should remain active. - Select **Approve**. diff --git a/apps/docs/supermemory-mcp/claude-desktop.mdx b/apps/docs/supermemory-mcp/claude-desktop.mdx index 30446d7b..5559f63a 100644 --- a/apps/docs/supermemory-mcp/claude-desktop.mdx +++ b/apps/docs/supermemory-mcp/claude-desktop.mdx @@ -34,7 +34,7 @@ Supermemory appears under your connectors. Click **Connect**. ## Step 4: Authorize -You’ll be redirected to Supermemory to sign in and choose access scopes (for example **Read + Write** or **Full access**). Select the scopes you want, then click **Authorize**. +You’ll be redirected to Supermemory to sign in and choose the permission (**Read and write** or **Read only**) and the scope (**All memories** or **Only some tags**). Select the access you want, then click **Authorize**. ![Authorize MCP screen with scope options and Authorize button](/images/supermemory-mcp/claude-desktop/step-4.png)