Update an embedder
PUT /v1/embedders/{id}: Updates an existing embedder configuration including display information, endpoint configuration, model parameters, credentials, and labels.
Updates an existing embedder configuration including display information, endpoint configuration, model parameters, credentials, and labels. All fields are optional - only specified fields will be updated. Omitting apiPath preserves the existing path; setting it blank resets it to '/v2/embed' for Cohere, '/v1/embeddings' for Jina, '/embed' for TEI, or '/embeddings' for other providers.
IMPORTANT: providerType is IMMUTABLE after creation and cannot be changed.
CRITICAL: Returns HTTP 412 Precondition Failed (FAILED_PRECONDITION) if attempting to update core fields (dimensionality, distributionType, modelIdentifier) while the embedder is actively referenced by spaces or ingestion jobs.
DUPLICATE DETECTION: Returns HTTP 409 Conflict (ALREADY_EXISTS) if the update would create a duplicate embedder with the same provider, endpoint, model, dimensionality, distribution, and credentials for this owner. Requires UPDATE_EMBEDDER on the requested embedder.
In: header
Path Parameters
The unique identifier of the embedder to update
Embedder update details
User-facing name of the embedder
"Updated OpenAI Embedder"1 <= length <= 255Description of the embedder
"Updated description for OpenAI's text embedding model"API endpoint URL
"https://api.openai.com/v1"API path for embeddings requests. Omit to keep the existing path; set blank to reset to the provider default (Cohere /v2/embed, Jina /v1/embeddings, TEI /embed, others /embeddings).
"/embeddings"Model identifier
"text-embedding-3-small"Output vector dimensions
1536int321 <= valueType of embedding distribution (DENSE or SPARSE)
"DENSE"Maximum input sequence length
8192int321 <= valueReplace stored credentials. Omit this field to preserve the current credentials; a present empty payload is invalid and never clears them.
{"kind":"CREDENTIAL_KIND_API_KEY","apiKey":{"inlineSecret":"sk-rotated-api-key"}}Structured credential payload describing how GoodMem should authenticate with an upstream provider.
Credential strategy — fixed to CREDENTIAL_KIND_API_KEY for this variant
Configuration when kind is CREDENTIAL_KIND_API_KEY
{"inlineSecret":"sk-1234567890abcdef","secretRef":{"uri":"vault://path/to/secret"},"headerName":"Authorization","prefix":"Bearer "}Optional annotations to aid operators (e.g., "owner=vertex")
properties <= 20Empty Object
Structured credential payload describing how GoodMem should authenticate with an upstream provider.
Credential strategy — fixed to CREDENTIAL_KIND_GCP_ADC for this variant
Configuration when kind is CREDENTIAL_KIND_GCP_ADC
{"scopes":["https://www.googleapis.com/auth/cloud-platform"],"quotaProjectId":"my-quota-project"}Optional annotations to aid operators (e.g., "owner=vertex")
properties <= 20Empty Object
Replace all existing labels with these (mutually exclusive with mergeLabels)
{"environment":"production","team":"nlp"}properties <= 20Empty Object
Merge these labels with existing ones (mutually exclusive with replaceLabels)
{"environment":"production","team":"nlp"}properties <= 20Empty Object
Version information
"1.0.0"Monitoring endpoint URL
"https://monitoring.example.com/embedders/status"Response Body
curl -X PUT "https://your-goodmem-server.example.com/v1/embedders/550e8400-e29b-41d4-a716-446655440000" \ -H "Content-Type: application/json" \ -d '{ "displayName": "Updated Production Embedder", "description": "Updated OpenAI embedding model with enhanced configuration for production use", "endpointUrl": "https://api.openai.com/v1", "apiPath": "/embeddings", "modelIdentifier": "text-embedding-3-large", "dimensionality": 3072, "distributionType": "DENSE", "maxSequenceLength": 8192, "credentials": { "apiKey": { "inlineSecret": "sk-updated-api-key-here", "secretRef": { "uri": "vault://path/to/secret" }, "headerName": "Authorization", "prefix": "Bearer " }, "kind": "CREDENTIAL_KIND_API_KEY" }, "replaceLabels": { "environment": "production", "team": "ml-platform", "cost-center": "ai-infrastructure" }, "mergeLabels": { "environment": "production", "team": "nlp" }, "version": "2.0.1", "monitoringEndpoint": "https://monitoring.company.com/embedders/status" }'{
"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"
}