Embedders API
Embedders API documentation for .NET SDK
All URIs are relative to *http://localhost:8080*
| Method | HTTP request | Description |
|---|---|---|
| CreateEmbedder | POST /v1/embedders | Create a new embedder |
| DeleteEmbedder | DELETE /v1/embedders/{id} | Delete an embedder |
| GetEmbedder | GET /v1/embedders/{id} | Get an embedder by ID |
| ListEmbedders | GET /v1/embedders | List embedders |
| UpdateEmbedder | PUT /v1/embedders/{id} | Update an embedder |
CreateEmbedder
EmbedderResponse CreateEmbedder (EmbedderCreationRequest embedderCreationRequest)
Create a new embedder
Creates a new embedder configuration for vectorizing content. Embedders represent connections to different embedding API services (like OpenAI, vLLM, etc.) and include all the necessary configuration to use them with memory spaces. DUPLICATE DETECTION: Returns ALREADY_EXISTS if another embedder exists with identical {owner_id, provider_type, endpoint_url, api_path, model_identifier, credentials_fingerprint} after URL canonicalization. Uniqueness is enforced per-owner, allowing different users to have identical configurations. Credentials are hashed (SHA-256) for uniqueness while remaining encrypted. The api_path field defaults to '/embeddings' if omitted. Requires CREATE_EMBEDDER_OWN permission (or CREATE_EMBEDDER_ANY for admin users).
Example
using System.Collections.Generic;
using System.Diagnostics;
using System.Net.Http;
using Pairsystems.Goodmem.Client.Api;
using Pairsystems.Goodmem.Client.Client;
using Pairsystems.Goodmem.Client.Model;
namespace Example
{
public class CreateEmbedderExample
{
public static void Main()
{
Configuration config = new Configuration();
config.BasePath = "[http://localhost";](http://localhost";)
// create instances of HttpClient, HttpClientHandler to be reused later with different Api classes
HttpClient httpClient = new HttpClient();
HttpClientHandler httpClientHandler = new HttpClientHandler();
var apiInstance = new EmbeddersApi(httpClient, config, httpClientHandler);
var embedderCreationRequest = new EmbedderCreationRequest(); // EmbedderCreationRequest | Embedder configuration details
try
{
// Create a new embedder
EmbedderResponse result = apiInstance.CreateEmbedder(embedderCreationRequest);
Debug.WriteLine(result);
}
catch (ApiException e)
{
Debug.Print("Exception when calling EmbeddersApi.CreateEmbedder: " + e.Message);
Debug.Print("Status Code: " + e.ErrorCode);
Debug.Print(e.StackTrace);
}
}
}
}Using the CreateEmbedderWithHttpInfo variant
This returns an ApiResponse object which contains the response data, status code and headers.
try
{
// Create a new embedder
`ApiResponse<EmbedderResponse>` response = apiInstance.CreateEmbedderWithHttpInfo(embedderCreationRequest);
Debug.Write("Status Code: " + response.StatusCode);
Debug.Write("Response Headers: " + response.Headers);
Debug.Write("Response Body: " + response.Data);
}
catch (ApiException e)
{
Debug.Print("Exception when calling EmbeddersApi.CreateEmbedderWithHttpInfo: " + e.Message);
Debug.Print("Status Code: " + e.ErrorCode);
Debug.Print(e.StackTrace);
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| embedderCreationRequest | EmbedderCreationRequest | Embedder configuration details |
Return type
Authorization
No authorization required
HTTP request headers
- Content-Type: application/json
- Accept: application/json
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 201 | Successfully created embedder | * Location - URL of the created embedder resource |
| 400 | Invalid request - missing required fields or invalid format | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to create embedders | - |
| 409 | Conflict - embedder already exists with identical owner_id, provider_type, endpoint_url, api_path, model_identifier, and credentials_fingerprint | - |
DeleteEmbedder
void DeleteEmbedder (string id)
Delete an embedder
Permanently deletes an embedder configuration. This operation cannot be undone and removes the embedder record and securely deletes stored credentials. IMPORTANT: This does NOT invalidate or delete embeddings previously created with this embedder - existing embeddings remain accessible. Requires DELETE_EMBEDDER_OWN permission for embedders you own (or DELETE_EMBEDDER_ANY for admin users).
Example
using System.Collections.Generic;
using System.Diagnostics;
using System.Net.Http;
using Pairsystems.Goodmem.Client.Api;
using Pairsystems.Goodmem.Client.Client;
using Pairsystems.Goodmem.Client.Model;
namespace Example
{
public class DeleteEmbedderExample
{
public static void Main()
{
Configuration config = new Configuration();
config.BasePath = "[http://localhost";](http://localhost";)
// create instances of HttpClient, HttpClientHandler to be reused later with different Api classes
HttpClient httpClient = new HttpClient();
HttpClientHandler httpClientHandler = new HttpClientHandler();
var apiInstance = new EmbeddersApi(httpClient, config, httpClientHandler);
var id = 550e8400-e29b-41d4-a716-446655440000; // string | The unique identifier of the embedder to delete
try
{
// Delete an embedder
apiInstance.DeleteEmbedder(id);
}
catch (ApiException e)
{
Debug.Print("Exception when calling EmbeddersApi.DeleteEmbedder: " + e.Message);
Debug.Print("Status Code: " + e.ErrorCode);
Debug.Print(e.StackTrace);
}
}
}
}Using the DeleteEmbedderWithHttpInfo variant
This returns an ApiResponse object which contains the response data, status code and headers.
try
{
// Delete an embedder
apiInstance.DeleteEmbedderWithHttpInfo(id);
}
catch (ApiException e)
{
Debug.Print("Exception when calling EmbeddersApi.DeleteEmbedderWithHttpInfo: " + e.Message);
Debug.Print("Status Code: " + e.ErrorCode);
Debug.Print(e.StackTrace);
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| id | string | The unique identifier of the embedder to delete |
Return type
void (empty response body)
Authorization
No authorization required
HTTP request headers
- Content-Type: Not defined
- Accept: Not defined
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 204 | Embedder successfully deleted | - |
| 400 | Invalid request - embedder ID in invalid format | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to delete this embedder | - |
| 404 | Not found - embedder with the specified ID does not exist | - |
GetEmbedder
EmbedderResponse GetEmbedder (string id)
Get an embedder by ID
Retrieves the details of a specific embedder configuration by its unique identifier. Requires READ_EMBEDDER_OWN permission for embedders you own (or READ_EMBEDDER_ANY for admin users to view any user's embedders). This is a read-only operation with no side effects.
Example
using System.Collections.Generic;
using System.Diagnostics;
using System.Net.Http;
using Pairsystems.Goodmem.Client.Api;
using Pairsystems.Goodmem.Client.Client;
using Pairsystems.Goodmem.Client.Model;
namespace Example
{
public class GetEmbedderExample
{
public static void Main()
{
Configuration config = new Configuration();
config.BasePath = "[http://localhost";](http://localhost";)
// create instances of HttpClient, HttpClientHandler to be reused later with different Api classes
HttpClient httpClient = new HttpClient();
HttpClientHandler httpClientHandler = new HttpClientHandler();
var apiInstance = new EmbeddersApi(httpClient, config, httpClientHandler);
var id = 550e8400-e29b-41d4-a716-446655440000; // string | The unique identifier of the embedder to retrieve
try
{
// Get an embedder by ID
EmbedderResponse result = apiInstance.GetEmbedder(id);
Debug.WriteLine(result);
}
catch (ApiException e)
{
Debug.Print("Exception when calling EmbeddersApi.GetEmbedder: " + e.Message);
Debug.Print("Status Code: " + e.ErrorCode);
Debug.Print(e.StackTrace);
}
}
}
}Using the GetEmbedderWithHttpInfo variant
This returns an ApiResponse object which contains the response data, status code and headers.
try
{
// Get an embedder by ID
`ApiResponse<EmbedderResponse>` response = apiInstance.GetEmbedderWithHttpInfo(id);
Debug.Write("Status Code: " + response.StatusCode);
Debug.Write("Response Headers: " + response.Headers);
Debug.Write("Response Body: " + response.Data);
}
catch (ApiException e)
{
Debug.Print("Exception when calling EmbeddersApi.GetEmbedderWithHttpInfo: " + e.Message);
Debug.Print("Status Code: " + e.ErrorCode);
Debug.Print(e.StackTrace);
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| id | string | The unique identifier of the embedder to retrieve |
Return type
Authorization
No authorization required
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 200 | Successfully retrieved embedder | - |
| 400 | Invalid request - embedder ID in invalid format | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to view this embedder | - |
| 404 | Not found - embedder with the specified ID does not exist | - |
ListEmbedders
ListEmbeddersResponse ListEmbedders (string? ownerId = null, string? providerType = null, string? label = null)
List embedders
Retrieves a list of embedder configurations accessible to the caller, with optional filtering. PERMISSION-BASED FILTERING: With LIST_EMBEDDER_OWN permission, you can only see your own embedders (owner_id filter is ignored if set to another user). With LIST_EMBEDDER_ANY permission, you can see all embedders or filter by any owner_id. This is a read-only operation with no side effects.
Example
using System.Collections.Generic;
using System.Diagnostics;
using System.Net.Http;
using Pairsystems.Goodmem.Client.Api;
using Pairsystems.Goodmem.Client.Client;
using Pairsystems.Goodmem.Client.Model;
namespace Example
{
public class ListEmbeddersExample
{
public static void Main()
{
Configuration config = new Configuration();
config.BasePath = "[http://localhost";](http://localhost";)
// create instances of HttpClient, HttpClientHandler to be reused later with different Api classes
HttpClient httpClient = new HttpClient();
HttpClientHandler httpClientHandler = new HttpClientHandler();
var apiInstance = new EmbeddersApi(httpClient, config, httpClientHandler);
var ownerId = 550e8400-e29b-41d4-a716-446655440000; // string? | Filter embedders by owner ID. With LIST_EMBEDDER_ANY permission, omitting this shows all accessible embedders; providing it filters by that owner. With LIST_EMBEDDER_OWN permission, only your own embedders are shown regardless of this parameter. (optional)
var providerType = OPENAI; // string? | Filter embedders by provider type (e.g., OPENAI, OPENAI_COMPATIBLE, COHERE, etc.) (optional)
var label = ?label.environment=production&label.team=nlp; // string? | Filter by label value. Multiple label filters can be specified (e.g., ?label.environment=production&label.team=nlp) (optional)
try
{
// List embedders
ListEmbeddersResponse result = apiInstance.ListEmbedders(ownerId, providerType, label);
Debug.WriteLine(result);
}
catch (ApiException e)
{
Debug.Print("Exception when calling EmbeddersApi.ListEmbedders: " + e.Message);
Debug.Print("Status Code: " + e.ErrorCode);
Debug.Print(e.StackTrace);
}
}
}
}Using the ListEmbeddersWithHttpInfo variant
This returns an ApiResponse object which contains the response data, status code and headers.
try
{
// List embedders
`ApiResponse<ListEmbeddersResponse>` response = apiInstance.ListEmbeddersWithHttpInfo(ownerId, providerType, label);
Debug.Write("Status Code: " + response.StatusCode);
Debug.Write("Response Headers: " + response.Headers);
Debug.Write("Response Body: " + response.Data);
}
catch (ApiException e)
{
Debug.Print("Exception when calling EmbeddersApi.ListEmbeddersWithHttpInfo: " + e.Message);
Debug.Print("Status Code: " + e.ErrorCode);
Debug.Print(e.StackTrace);
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| ownerId | string? | Filter embedders by owner ID. With LIST_EMBEDDER_ANY permission, omitting this shows all accessible embedders; providing it filters by that owner. With LIST_EMBEDDER_OWN permission, only your own embedders are shown regardless of this parameter. | [optional] |
| providerType | string? | Filter embedders by provider type (e.g., OPENAI, OPENAI_COMPATIBLE, COHERE, etc.) | [optional] |
| label | string? | Filter by label value. Multiple label filters can be specified (e.g., ?label.environment=production&label.team=nlp) | [optional] |
Return type
Authorization
No authorization required
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 200 | Successfully retrieved embedders | - |
| 400 | Invalid request - invalid filter parameters or pagination token | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to list embedders | - |
UpdateEmbedder
EmbedderResponse UpdateEmbedder (string id, UpdateEmbedderRequest updateEmbedderRequest)
Update an embedder
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. IMPORTANT: provider_type is IMMUTABLE after creation and cannot be changed. CRITICAL: Returns FAILED_PRECONDITION if attempting to update core fields (dimensionality, distribution_type, model_identifier) while the embedder is actively referenced by spaces or ingestion jobs. Requires UPDATE_EMBEDDER_OWN permission for embedders you own (or UPDATE_EMBEDDER_ANY for admin users).
Example
using System.Collections.Generic;
using System.Diagnostics;
using System.Net.Http;
using Pairsystems.Goodmem.Client.Api;
using Pairsystems.Goodmem.Client.Client;
using Pairsystems.Goodmem.Client.Model;
namespace Example
{
public class UpdateEmbedderExample
{
public static void Main()
{
Configuration config = new Configuration();
config.BasePath = "[http://localhost";](http://localhost";)
// create instances of HttpClient, HttpClientHandler to be reused later with different Api classes
HttpClient httpClient = new HttpClient();
HttpClientHandler httpClientHandler = new HttpClientHandler();
var apiInstance = new EmbeddersApi(httpClient, config, httpClientHandler);
var id = 550e8400-e29b-41d4-a716-446655440000; // string | The unique identifier of the embedder to update
var updateEmbedderRequest = new UpdateEmbedderRequest(); // UpdateEmbedderRequest | Embedder update details
try
{
// Update an embedder
EmbedderResponse result = apiInstance.UpdateEmbedder(id, updateEmbedderRequest);
Debug.WriteLine(result);
}
catch (ApiException e)
{
Debug.Print("Exception when calling EmbeddersApi.UpdateEmbedder: " + e.Message);
Debug.Print("Status Code: " + e.ErrorCode);
Debug.Print(e.StackTrace);
}
}
}
}Using the UpdateEmbedderWithHttpInfo variant
This returns an ApiResponse object which contains the response data, status code and headers.
try
{
// Update an embedder
`ApiResponse<EmbedderResponse>` response = apiInstance.UpdateEmbedderWithHttpInfo(id, updateEmbedderRequest);
Debug.Write("Status Code: " + response.StatusCode);
Debug.Write("Response Headers: " + response.Headers);
Debug.Write("Response Body: " + response.Data);
}
catch (ApiException e)
{
Debug.Print("Exception when calling EmbeddersApi.UpdateEmbedderWithHttpInfo: " + e.Message);
Debug.Print("Status Code: " + e.ErrorCode);
Debug.Print(e.StackTrace);
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| id | string | The unique identifier of the embedder to update | |
| updateEmbedderRequest | UpdateEmbedderRequest | Embedder update details |
Return type
Authorization
No authorization required
HTTP request headers
- Content-Type: application/json
- Accept: application/json
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 200 | Successfully updated embedder | - |
| 400 | Invalid request - ID format or update parameters invalid | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to update this embedder | - |
| 404 | Not found - embedder with the specified ID does not exist | - |
| 412 | Precondition failed - cannot update core fields while embedder is actively referenced by spaces or ingestion jobs | - |