Delete memories in batch
POST /v1/memories:batchDelete: Deletes memories using selector entries.
Deletes memories using selector entries. Each selector can target either a specific memory ID or a filtered subset scoped to a specific space. Each selected memory requires DELETE_MEMORY; authority may be granted through DIRECT_MEMBERS_OF its containing space.
ApiKeyAuthx-api-key<token>GoodMem-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 <= 86400000Batch memory deletion details
application/json- body
Request body for deleting memories using ID and/or filtered selectors
requests*array<>Array of delete selectors
[ { "memoryId": "550e8400-e29b-41d4-a716-446655440000" }, { "filterSelector": { "spaceId": "550e8400-e29b-41d4-a716-446655440001", "statusFilter": "FAILED", "filter": "val('$.source') = 'email'" } }]Results of batch memory deletion operation
application/json- response
Response containing per-item results for a batch memories operation
results*array<>Array of per-item results
curl -X POST 'https://your-goodmem-server.example.com/v1/memories:batchDelete' \ -H 'GoodMem-Timeout-Ms: 30000' \ -H 'Content-Type: application/json' \ -d '{ "requests": [ { "memoryId": "550e8400-e29b-41d4-a716-446655440000", "filterSelector": { "spaceId": "70e025f6-76ca-4cbe-b8fc-7dab8e84590a", "filter": "val('\''$.source'\'') = '\''email'\''" } } ]}'{ "results": [ { "success": true, "memoryId": "550e8400-e29b-41d4-a716-446655440000", "memory": { "memoryId": "550e8400-e29b-41d4-a716-446655440000", "spaceId": "550e8400-e29b-41d4-a716-446655440001", "originalContent": "VGhpcyBpcyBiYXNlNjQgYmluYXJ5Lg==", "originalContentSha256": "9f2c8c5a9d740eb56d...", "originalContentRef": "s3://my-bucket/document.pdf", "contentType": "text/plain", "processingStatus": "COMPLETED", "pageImageStatus": "COMPLETED", "pageImageCount": 12, "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" } } }, "error": { "code": 403, "message": "Forbidden - insufficient permissions" } } ]}Create multiple memories in a batch
POST /v1/memories:batchCreate: Creates multiple memories in a single operation, with individual success/failure results.
Get multiple memories by ID
POST /v1/memories:batchGet: Retrieves multiple memories in a single operation, with individual success/failure results.