Create a new Space
POST /v1/spaces: Creates a new space with the provided name, labels, and embedder configuration.
Creates a new space with the provided name, labels, and embedder configuration. A space is a container for organizing related memories.
OWNER DEFAULTS: Owner defaults to the authenticated principal unless ownerId is provided; CREATE_SPACE is evaluated against the proposed space and owner.
EMBEDDER REQUIREMENTS: At least one embedder configuration must be specified. Every referenced embedder must exist, and the caller must have EXECUTE_EMBEDDER on each one.
DUPLICATE DETECTION: Returns ALREADY_EXISTS if another space exists with identical {ownerId, name} (case-sensitive). This operation is NOT idempotent.
In: header
Space configuration details
The desired name for the space. Must be unique within the user's scope.
"My Research Space"1 <= length <= 255A set of key-value pairs to categorize or tag the space. Used for filtering and organizational purposes.
{"category":"research","project":"ai-embeddings"}properties <= 20Empty Object
List of embedder configurations to associate with this space. At least one embedder configuration is required. Each specifies an embedder ID and a relative default retrieval weight used when no per-request overrides are provided.
[{"embedderId":"a867b266-2f63-485c-897d-3494669db253","defaultRetrievalWeight":1}]1 <= itemsOptional owner principal UUID. If omitted, defaults to the authenticated principal. CREATE_SPACE is evaluated against the proposed space and owner.
"70e025f6-76ca-4cbe-b8fc-7dab8e84590a"uuidDefault chunking strategy for memories in this space
Configuration for text chunking strategy used when processing content. Exactly one of none, recursive, or sentence must be provided.
No chunking strategy - preserve original content as single unit
Configuration for text chunking strategy used when processing content. Exactly one of none, recursive, or sentence must be provided.
Recursive hierarchical chunking strategy with configurable separators
{"chunkSize":1000,"chunkOverlap":200,"separators":["\n\n","\n","."," "],"keepStrategy":"KEEP_END","separatorIsRegex":false,"lengthMeasurement":"CHARACTER_COUNT"}Configuration for text chunking strategy used when processing content. Exactly one of none, recursive, or sentence must be provided.
Sentence-based chunking strategy with language detection
{"maxChunkSize":1000,"minChunkSize":100,"enableLanguageDetection":true,"lengthMeasurement":"CHARACTER_COUNT"}Optional client-provided UUID for idempotent creation. If not provided, server generates a new UUID. Returns ALREADY_EXISTS if ID is already in use.
"550e8400-e29b-41d4-a716-446655440000"uuidResponse Body
curl -X POST "https://your-goodmem-server.example.com/v1/spaces" \ -H "Content-Type: application/json" \ -d '{ "name": "My Research Space", "labels": { "category": "research", "project": "ai-embeddings" }, "spaceEmbedders": [ { "embedderId": "a867b266-2f63-485c-897d-3494669db253", "defaultRetrievalWeight": 1 } ], "ownerId": "70e025f6-76ca-4cbe-b8fc-7dab8e84590a", "defaultChunkingConfig": { "recursive": { "chunkSize": 1000, "chunkOverlap": 200, "separators": [ "\\n\\n", "\\n", ".", " " ], "separatorIsRegex": false, "keepStrategy": "KEEP_END", "lengthMeasurement": "CHARACTER_COUNT" } }, "spaceId": "550e8400-e29b-41d4-a716-446655440000" }'{
"spaceId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Research Project Space",
"labels": {
"project": "AI Research",
"team": "NLP Group"
},
"spaceEmbedders": [
{
"spaceId": "550e8400-e29b-41d4-a716-446655440000",
"embedderId": "550e8400-e29b-41d4-a716-446655440000",
"defaultRetrievalWeight": 1,
"createdAt": 1651483320000,
"updatedAt": 1651483320000,
"createdById": "550e8400-e29b-41d4-a716-446655440000",
"updatedById": "550e8400-e29b-41d4-a716-446655440000"
}
],
"createdAt": 1651483320000,
"updatedAt": 1651483320000,
"ownerId": "550e8400-e29b-41d4-a716-446655440000",
"createdById": "550e8400-e29b-41d4-a716-446655440000",
"updatedById": "550e8400-e29b-41d4-a716-446655440000",
"defaultChunkingConfig": {
"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"
}
}
}