Get a memory by ID
GET /v1/memories/{id}: Retrieves a single memory by its ID.
Retrieves a single memory by its ID.
AUTHORIZATION: Requires READ_MEMORY on the requested memory; authority may be granted directly or through DIRECT_MEMBERS_OF its containing space. This is a read-only operation with no side effects and is safe to retry. Returns NOT_FOUND if the memory or its parent space does not exist.
ApiKeyAuthx-api-key<token>id*stringThe UUID of the memory to retrieve
includeContent?booleanWhether to include the original content in the response (defaults to false). The snake_case alias include_content is also accepted.
falseincludeProcessingHistory?booleanWhether to include background job processing history in the response (defaults to false). The snake_case alias include_processing_history is also accepted.
falseGoodMem-Timeout-Ms?integerOptional waiting budget in milliseconds, measured from REST servlet ingress and shared across all internal gRPC calls. Supply one decimal integer from 1 to 86400000. Omission adds no deadline. Existing shorter deadlines still apply. Expiry returns HTTP 504 before streaming starts; after streaming starts, no successful completion event is sent. Use SSE or opt into GoodMem-Stream-Terminal for an explicit terminal outcome. Retrieval work is cooperatively cancelled. An accepted mutation may still commit after timeout or disconnect; a failed response does not imply rollback.
int641 <= value <= 86400000Successfully retrieved memory
application/json- response
Memory object containing stored content and metadata
memoryId*stringUnique identifier of the memory
uuid"550e8400-e29b-41d4-a716-446655440000"spaceId*stringID of the space containing this memory
uuid"550e8400-e29b-41d4-a716-446655440001"originalContent?|Original content (only included if requested)
binary"VGhpcyBpcyBiYXNlNjQgYmluYXJ5Lg=="originalContentLength?|Size in bytes of the inline original content
int640 <= valueoriginalContentSha256?|SHA-256 digest of the inline original content, hex encoded
"9f2c8c5a9d740eb56d..."originalContentRef?|Reference to external content location
"s3://my-bucket/document.pdf"contentType*stringMIME type of the content
"text/plain"processingStatus*stringProcessing status of the memory
"COMPLETED""UNSPECIFIED""PENDING""PROCESSING""COMPLETED""FAILED"pageImageStatus*stringProcessing status of page-image extraction for this memory
"COMPLETED""UNSPECIFIED""PENDING""PROCESSING""COMPLETED""FAILED"pageImageCount*integerNumber of extracted page-image renditions linked to this memory
int320 <= value12metadata?|Additional metadata for the memory. A top-level textual title may have been used as a document-title hint when its chunks were embedded; changing it does not automatically re-embed existing chunks.
{ "source": "document", "author": "John Doe"}createdAt*integerTimestamp when the memory was created (milliseconds since epoch)
int641672531200000updatedAt*integerTimestamp when the memory was last updated (milliseconds since epoch)
int641672531200000createdById*stringExact principal or API-key audit actor that created this memory
uuid"550e8400-e29b-41d4-a716-446655440002"updatedById*stringExact principal or API-key audit actor that last updated this memory
uuid"550e8400-e29b-41d4-a716-446655440002"chunkingConfig?||Chunking strategy used for this memory
{ "recursive": { "chunkSize": 1000, "chunkOverlap": 200, "separators": [ "\n\n", "\n", ".", " " ], "keepStrategy": "KEEP_END", "separatorIsRegex": false, "lengthMeasurement": "CHARACTER_COUNT" }, "sentence": { "maxChunkSize": 1000, "minChunkSize": 100, "enableLanguageDetection": true, "lengthMeasurement": "CHARACTER_COUNT" }}processingHistory?|Background job processing history associated with this memory
{ "latestJob": { "jobId": 42, "jobType": "document_processor", "status": "BACKGROUND_JOB_RUNNING", "attempts": 1, "maxAttempts": 5, "runAt": 1714713600000, "leaseUntil": 1714713660000, "lockedBy": "worker-1", "lastError": "Transient network failure", "updatedAt": 1714713615000, "failureStage": "DOCUMENT_PROCESSING_STAGE_GENERATING_EMBEDDINGS" }}curl -X GET 'https://your-goodmem-server.example.com/v1/memories/550e8400-e29b-41d4-a716-446655440000?includeContent=false&includeProcessingHistory=false' \ -H 'GoodMem-Timeout-Ms: 30000'{ "memoryId": "550e8400-e29b-41d4-a716-446655440000", "spaceId": "550e8400-e29b-41d4-a716-446655440001", "originalContent": "VGhpcyBpcyBiYXNlNjQgYmluYXJ5Lg==", "originalContentLength": 0, "originalContentSha256": "9f2c8c5a9d740eb56d...", "originalContentRef": "s3://my-bucket/document.pdf", "contentType": "text/plain", "processingStatus": "COMPLETED", "pageImageStatus": "COMPLETED", "pageImageCount": 12, "metadata": { "source": "document", "author": "John Doe" }, "createdAt": 1672531200000, "updatedAt": 1672531200000, "createdById": "550e8400-e29b-41d4-a716-446655440002", "updatedById": "550e8400-e29b-41d4-a716-446655440002", "chunkingConfig": { "recursive": { "chunkSize": 1000, "chunkOverlap": 200, "separators": [ "\n\n", "\n", ".", " " ], "keepStrategy": "KEEP_END", "separatorIsRegex": false, "lengthMeasurement": "CHARACTER_COUNT" }, "sentence": { "maxChunkSize": 1000, "minChunkSize": 100, "enableLanguageDetection": true, "lengthMeasurement": "CHARACTER_COUNT" } }, "processingHistory": { "latestJob": { "jobId": 42, "jobType": "document_processor", "status": "BACKGROUND_JOB_RUNNING", "attempts": 1, "maxAttempts": 5, "runAt": 1714713600000, "leaseUntil": 1714713660000, "lockedBy": "worker-1", "lastError": "Transient network failure", "updatedAt": 1714713615000, "failureStage": "DOCUMENT_PROCESSING_STAGE_GENERATING_EMBEDDINGS" } }}