attach_media
ChatGPTAttach an image or other file from this chat to a memory the signed-in user already owns. Use when the prose should stay as it is, including after create if save_memory did not include the file. Audio and video that do not fit in this call use prepare_media_upload. Does not create a second memory. Send a stable idempotency_key so a retry does not store the file twice. Files in this call are limited to 15 MB. Optional after_paragraph places the figure after that blank-line paragraph, counting from 1. Omit it for no placement.
attach_photo
ChatGPTAttach an image or other file from this chat to a memory the signed-in user already owns. Use when the prose should stay as it is, including after create if save_memory did not include the file. Does not create a second memory. Send a stable idempotency_key so a retry does not store the file twice. Optional after_paragraph places the figure after that blank-line paragraph, counting from 1. Omit it for no placement.
correct_memory
ChatGPTUpdate a memory the signed-in user owns. Use when they ask to change, correct, or rewrite a saved memory. Read it first with get_memory and send based_on_version_id equal to current_version_id, the full new title and body, and a new idempotency_key. If another edit already landed, this does not overwrite. Optional photos or media attaches files from this chat onto that memory; a retry of the same key does not store them twice. If you are not changing the prose, use attach_photo instead.
get_memory
ChatGPTRead one memory the signed-in user owns. Returns current prose, the media list (photos and media: id, filename, content type, size), and links to other memories they own. Call this before correct_memory and send current_version_id as based_on_version_id. File bytes are not inlined; use get_photo when you need them.
get_memory_link
ChatGPTRead one stored link by link_id, including both memory ids and the explanation. Use when you already have a link id and need the pair before removing it.
get_photo
ChatGPTRead one image or file attached to a memory the user owns. Use the id from get_memory’s media list. Default is metadata and private viewing URLs. Set include_bytes true only when you need the original bytes in the chat.
link_memories
ChatGPTConnect two memories the same user already owns. Use when they ask to relate, link, or tie two saved memories together. explanation is required: why these two belong together. Optional kind is a short label, not a substitute for the explanation. Both ends can list the link. Does not invent other links. The same idempotency_key does not create a second pair.
list_memories
ChatGPTList the signed-in user’s private collection, with media counts. Use for a catalog or “what have I saved”. Archived memories are omitted unless include_archived is true. This is not a word search; use search_memories to recall by a phrase. Only this account’s memories are listed.
list_memory_neighbors
ChatGPTList links on one memory the user owns, including links that point at it. Each item has link_id, the other memory’s id and title, direction, and the stored explanation. Use this before unlink_memories. Does not invent connections.
permanently_delete_memory
ChatGPTPermanently erase one memory the signed-in user owns, including its prose, earlier versions, links, and files. Use when they ask to delete that memory. This is not a hide. It cannot be restored. The same idempotency_key does not delete a different memory.
prepare_media_upload
ChatGPTPrepare a short-lived put_url so a code sandbox can send original bytes to a memory this account already owns. Use this for audio and video. Send memory_id, filename, content_type, byte_size, sha256 as 64 hex characters, and a stable idempotency_key. Audio and video (audio/mpeg, audio/mp4, audio/wav, audio/webm, audio/ogg, video/mp4, video/webm, video/quicktime) may be up to 64 MB. Images and other files stay at 15 MB. Optional caption. Optional after_paragraph is the blank-line paragraph the figure follows, counting from 1. Omit after_paragraph for no placement. This call does not take the file and does not change the memory’s prose or fictional flag. PUT the raw bytes to put_url. The same idempotency_key does not store a second file.
prepare_photo_upload
ChatGPTPrepare a short-lived put_url so a code sandbox can send the original image bytes to a memory this account already owns. Send memory_id, filename, content_type, byte_size, sha256 as 64 hex characters, and a stable idempotency_key. Optional caption. Optional after_paragraph is the blank-line paragraph the figure follows, counting from 1. Omit after_paragraph for no placement. This call does not take the file and does not change the memory’s prose or fictional flag. PUT the raw bytes to put_url. The same idempotency_key does not store a second file.
publish_memory
ChatGPTPublish one memory onto the signed-in account’s /memories list. This stores a separate frozen copy of the title and body in the language they were written, not a translation and not a live view of the private collection. Later private edits do not change the published copy until you publish again. Only photos you list are included. This is not unpublish — use withdraw_public_memory to take it off the published list. Does not publish the whole private collection.
remove_photo
ChatGPTRemove one image or file from a memory the signed-in user owns. Use the media id from get_memory. The memory and its prose stay. The file is deleted from that user’s private storage only. Send idempotency_key. Repeating the same removal is safe and does not remove a different file. This does not delete the memory; use permanently_delete_memory for that.
save_memory
ChatGPTCreate one new memory in the signed-in user’s private collection. Use when they ask to save or remember something new. Send title, body, and a stable idempotency_key. The same key does not create a second memory. To store an image or file they handed you in this chat, include it in photos or media as filename, content_type, and data_base64. Files stay under that user’s private prefix. A later file on an existing memory uses attach_photo. Optional after_paragraph on a file is the blank-line paragraph that figure follows, counting from 1. Omit it for no placement.
search_memories
ChatGPTRecall memories in this private collection by words in titles, prose, attribution, filenames, and captions. Use when they mention a person, place, or phrase. One-hop linked memories are included with the stored explanation (matched_query vs linked_only). Does not invent links and does not search any other account.
unlink_memories
ChatGPTRemove one link between two memories the signed-in user owns. The memories themselves stay in the private collection. Pass link_id from list_memory_neighbors, or both from_memory_id and to_memory_id, plus idempotency_key. Repeating the same removal does not remove any other link.
whoami
ChatGPTReturn the profile for this connection’s credentials. The opaque id is the Kept Mems account and stays the same for Cursor PAT and ChatGPT OAuth.
withdraw_public_memory
ChatGPTUnpublish one memory. Removes that published copy from the signed-in account’s /memories list and hides its page. The private memory stays in the private collection. This is not publish and it is not permanent delete. Pass publication_id or memory_id, plus idempotency_key.