Create a new embedder
POST /v1/embedders: Creates an embedder configuration for use with memory spaces.
Creates an embedder configuration for use with memory spaces. If ownerId is omitted, the authenticated principal becomes the owner; CREATE_EMBEDDER is evaluated against that proposed embedder and owner. Returns 409 when an equivalent embedder configuration already exists for the owner. See the embedder provider guide for provider-specific configuration.
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 <= 86400000Embedder configuration details
application/json- body
Request body for creating a new Embedder. An Embedder represents a configuration for vectorizing content.
displayName*stringUser-facing name of the embedder
1 <= length <= 255"OpenAI Ada-2"description?|Description of the embedder
"OpenAI's text embedding model with 1536 dimensions"providerType*ProviderTypeType of embedding provider
"OPENAI""OPENAI""VLLM""TEI""LLAMA_CPP""VOYAGE""COHERE""JINA""DASHSCOPE""GEMINI"endpointUrl*stringBase HTTP(S) endpoint for provider requests. Gemini endpoint URLs must not contain query parameters.
"https://api.openai.com/v1"apiPath?|Provider-relative request path. Omit or send blank to use the provider default. For Gemini, this is an API version: /v1beta for Developer and /v1 for Google Cloud.
"/embeddings"modelIdentifier*stringModel identifier
"text-embedding-3-small"dimensionality*integerOutput vector dimensions
int321 <= value1536distributionType*DistributionTypeType of embedding distribution (DENSE or SPARSE)
"DENSE""DENSE""SPARSE"maxSequenceLength?|Maximum input sequence length
int321 <= value8192supportedModalities?array<>|Supported content modalities (defaults to TEXT if not provided)
[ "TEXT"]credentials?||Structured credential payload describing how to authenticate with the provider. Required for SaaS providers; optional for local or proxy providers.
{ "kind": "CREDENTIAL_KIND_API_KEY", "apiKey": { "inlineSecret": "sk-example-api-key" }}labels?|User-defined labels for categorization
properties <= 20{ "environment": "production", "team": "nlp"}version?|Version information
"1.0.0"monitoringEndpoint?|Monitoring endpoint URL
"https://monitoring.example.com/embedders/status"ownerId?|Optional owner principal UUID. If omitted, defaults to the authenticated principal. CREATE_EMBEDDER is evaluated against the proposed embedder and owner.
uuid"550e8400-e29b-41d4-a716-446655440000"embedderId?|Optional client-provided UUID for idempotent creation. If not provided, server generates a new UUID. Returns ALREADY_EXISTS if ID is already in use.
uuid"550e8400-e29b-41d4-a716-446655440000"dashscopeApiDialect?|DashScope request and response API dialect. Valid only for the DASHSCOPE provider. Omit to infer the dialect from apiPath, the model catalog, or the native text default.
"EMBEDDING_NATIVE_TEXT""EMBEDDING_NATIVE_TEXT""EMBEDDING_NATIVE_CONTENTS""OPENAI_COMPATIBLE"geminiEndpointConfig?|Gemini backend routing. Valid only for the GEMINI provider. Omit to use the Developer API; when present, backend is required and the gRPC service validates the backend-specific projectId and location contract.
{ "backend": "GOOGLE_CLOUD", "projectId": "goodmem-production", "location": "us-central1"}Successfully created embedder
application/json- response
Embedder configuration information
embedderId*stringUnique identifier of the embedder
uuid"550e8400-e29b-41d4-a716-446655440000"displayName*stringUser-facing name of the embedder
"OpenAI Ada-2"description?|Description of the embedder
"OpenAI's text embedding model with 1536 dimensions"providerType*ProviderTypeType of embedding provider
"OPENAI""OPENAI""VLLM""TEI""LLAMA_CPP""VOYAGE""COHERE""JINA""DASHSCOPE""GEMINI"endpointUrl*stringCanonical base HTTP(S) endpoint used for provider requests.
"https://api.openai.com/v1"apiPath?|Configured provider-relative request path. For Gemini, this is the selected API version: /v1beta for Developer or /v1 for Google Cloud.
"/embeddings"modelIdentifier*stringModel identifier
"text-embedding-3-small"dimensionality*integerOutput vector dimensions
int321 <= value1536distributionType*DistributionTypeType of embedding distribution (DENSE or SPARSE)
"DENSE""DENSE""SPARSE"maxSequenceLength?|Maximum input sequence length
int321 <= value8192supportedModalities*array<>Supported content modalities
credentials?||Stored credentials; present only when GetEmbedder explicitly requests them and the caller has READ_EMBEDDER_CREDENTIALS. Always omitted from create, update, and list responses.
{ "apiKey": { "inlineSecret": "sk-1234567890abcdef", "secretRef": { "uri": "vault://path/to/secret" }, "headerName": "Authorization", "prefix": "Bearer " }, "gcpAdc": { "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "quotaProjectId": "my-quota-project" }}labels*User-defined labels for categorization
{ "environment": "production", "team": "nlp"}version?|Version information
"1.0.0"monitoringEndpoint?|Monitoring endpoint URL
"https://monitoring.example.com/embedders/status"ownerId*stringOwner ID of the embedder
uuid"550e8400-e29b-41d4-a716-446655440000"createdAt*integerCreation timestamp (milliseconds since epoch)
int641617293472000updatedAt*integerLast update timestamp (milliseconds since epoch)
int641617293472000createdById*stringID of the user who created the embedder
uuid"550e8400-e29b-41d4-a716-446655440000"updatedById*stringID of the user who last updated the embedder
uuid"550e8400-e29b-41d4-a716-446655440000"dashscopeApiDialect?|Configured DashScope request and response API dialect; present only for DashScope configurations with a persisted dialect.
"EMBEDDING_NATIVE_TEXT""EMBEDDING_NATIVE_TEXT""EMBEDDING_NATIVE_CONTENTS""OPENAI_COMPATIBLE"geminiEndpointConfig?|Persisted Gemini backend routing; present only for Gemini embedder resources.
{ "backend": "DEVELOPER", "projectId": "goodmem-production", "location": "us-central1"}curl -X POST 'https://your-goodmem-server.example.com/v1/embedders' \ -H 'GoodMem-Timeout-Ms: 30000' \ -H 'Content-Type: application/json' \ -d '{ "displayName": "OpenAI Embedding Model", "description": "OpenAI text embedding model with 1536 dimensions", "endpointUrl": "https://api.openai.com/v1", "apiPath": "/embeddings", "modelIdentifier": "text-embedding-3-small", "dimensionality": 1536, "maxSequenceLength": 8192, "supportedModalities": [ "TEXT" ], "credentials": { "apiKey": { "inlineSecret": "sk-your-api-key-here", "secretRef": { "uri": "vault://path/to/secret" }, "headerName": "Authorization", "prefix": "Bearer " }, "kind": "CREDENTIAL_KIND_API_KEY" }, "labels": { "environment": "production", "team": "nlp" }, "version": "1.0.0", "monitoringEndpoint": "https://monitoring.example.com/embedders/status", "ownerId": "550e8400-e29b-41d4-a716-446655440000", "embedderId": "550e8400-e29b-41d4-a716-446655440000", "dashscopeApiDialect": "EMBEDDING_NATIVE_TEXT", "geminiEndpointConfig": { "projectId": "goodmem-production", "location": "us-central1" }, "providerType": "OPENAI", "distributionType": "DENSE"}'{ "embedderId": "550e8400-e29b-41d4-a716-446655440000", "displayName": "OpenAI Ada-2", "description": "OpenAI's text embedding model with 1536 dimensions", "providerType": "OPENAI", "endpointUrl": "https://api.openai.com/v1", "apiPath": "/embeddings", "modelIdentifier": "text-embedding-3-small", "dimensionality": 1536, "distributionType": "DENSE", "maxSequenceLength": 8192, "supportedModalities": [ "TEXT" ], "credentials": { "apiKey": { "inlineSecret": "sk-1234567890abcdef", "secretRef": { "uri": "vault://path/to/secret" }, "headerName": "Authorization", "prefix": "Bearer " }, "gcpAdc": { "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "quotaProjectId": "my-quota-project" } }, "labels": { "environment": "production", "team": "nlp" }, "version": "1.0.0", "monitoringEndpoint": "https://monitoring.example.com/embedders/status", "ownerId": "550e8400-e29b-41d4-a716-446655440000", "createdAt": 1617293472000, "updatedAt": 1617293472000, "createdById": "550e8400-e29b-41d4-a716-446655440000", "updatedById": "550e8400-e29b-41d4-a716-446655440000", "dashscopeApiDialect": "EMBEDDING_NATIVE_TEXT", "geminiEndpointConfig": { "backend": "DEVELOPER", "projectId": "goodmem-production", "location": "us-central1" }}