Admin - Speaker Embedding Models
Administer concrete embedding model configurations and manage embedding model aliases. User-facing alias discovery endpoints are documented in Embedding Models.
Admin base path: /api/v1/speaker-services/admin
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/v1/speaker-services/admin/speaker-embeddings/models |
Admin List Embedding Models |
POST |
/api/v1/speaker-services/admin/speaker-embeddings/models |
Register Embedding Model |
PUT |
/api/v1/speaker-services/admin/speaker-embeddings/models/{name} |
Update Embedding Model |
PATCH |
/api/v1/speaker-services/admin/speaker-embeddings/models/{name}/status |
Update Embedding Model Status |
DELETE |
/api/v1/speaker-services/admin/speaker-embeddings/models/{name} |
Delete Embedding Model |
GET |
/api/v1/speaker-services/admin/speaker-embeddings/model-aliases |
Admin List Embedding Model Aliases |
PUT |
/api/v1/speaker-services/admin/speaker-embeddings/model-aliases/{alias} |
Create or Update Embedding Model Alias |
PUT |
/api/v1/speaker-services/admin/speaker-embeddings/model-aliases/{alias}/resolve |
Update Embedding Model Alias Resolution |
PUT |
/api/v1/speaker-services/admin/speaker-embeddings/model-aliases/{alias}/deprecate |
Deprecate Embedding Model Alias |
PUT |
/api/v1/speaker-services/admin/speaker-embeddings/model-aliases/{alias}/undeprecate |
Undeprecate Embedding Model Alias |
DELETE |
/api/v1/speaker-services/admin/speaker-embeddings/model-aliases/{alias} |
Delete Embedding Model Alias |
Admin Model Management
Admin List Embedding Models
GET /api/v1/speaker-services/admin/speaker-embeddings/models
Requires Authentication - Scopes: admin:speaker-embedding-models:write
Returns concrete embedding model configurations for the tenant.
Response: AdminSpeakerEmbeddingModelResponse[]
Register Embedding Model
POST /api/v1/speaker-services/admin/speaker-embeddings/models
Requires Authentication - Scopes: admin:speaker-embedding-models:write
Registers a concrete embedding model configuration. The name is immutable after creation and remains the concrete model identifier used by aliases and retained voice prints.
SpeakerEmbeddingModelAdminRequest
| Field | Type | Required | Description |
|---|---|---|---|
name |
string |
Yes | Concrete model identifier. |
displayName |
string |
Yes | Human-readable name. |
description |
string |
No | Optional description. |
status |
SpeakerEmbeddingModelStatus |
No | Initial model status. After creation, update status only through PATCH /models/{name}/status. |
supportedLocales |
string[] |
No | Locales validated for this model. |
grpc |
SpeakerEmbeddingGrpcClientConfig |
Yes | gRPC client settings for the inference server. |
thresholdDefaults |
ModelThresholdDefaults |
No | Per-mode threshold defaults for this model. When omitted or null, global service defaults apply. |
{
"name": "spk-embed-he-v3",
"displayName": "Hebrew Speaker Embedding v3",
"status": "AVAILABLE",
"supportedLocales": ["he-IL", "en-US"],
"grpc": {
"target": "dns:///speaker-embedding-prod:443",
"tlsMode": "SYSTEM_TRUST",
"authority": "speaker-embedding-prod",
"deadlineMs": 30000,
"maxInboundMessageBytes": 4194304,
"metadata": {
"x-client": "speaker-services"
}
}
}
Response: AdminSpeakerEmbeddingModelResponse
Update Embedding Model
PUT /api/v1/speaker-services/admin/speaker-embeddings/models/{name}
Requires Authentication - Scopes: admin:speaker-embedding-models:write
Replaces editable configuration for an existing concrete embedding model. Required fields must be supplied. Nullable fields may be supplied, omitted, or set to null; omitted nullable fields are cleared.
This endpoint is for configuration updates such as display text, locale coverage, timeout values, and inference server connection settings. It does not change which concrete model an alias resolves to and does not rebuild existing voice prints.
name is immutable and is not accepted in the request body. status is updated only through PATCH /models/{name}/status.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string |
Yes | Concrete embedding model identifier. |
UpdateSpeakerEmbeddingModelRequest
| Field | Type | Required | Nullable | Description |
|---|---|---|---|---|
displayName |
string |
Yes | No | Human-readable name. |
description |
string |
No | Yes | Optional description. Omit or set to null to clear. |
supportedLocales |
string[] |
No | Yes | Locales validated for this model. Omit or set to null to clear. |
grpc |
UpdateSpeakerEmbeddingGrpcClientConfig |
Yes | No | gRPC client settings for the inference server. |
thresholdDefaults |
ModelThresholdDefaults |
No | Yes | Per-mode threshold defaults. Omit or set to null to clear (revert to global service defaults). |
{
"displayName": "Hebrew Speaker Embedding v3.1",
"description": "Production Hebrew speaker embedding model",
"supportedLocales": ["he-IL"],
"grpc": {
"target": "dns:///speaker-embedding-prod-v3:443",
"tlsMode": "SYSTEM_TRUST",
"authority": "speaker-embedding-prod",
"deadlineMs": 45000
}
}
{
"displayName": "Hebrew Speaker Embedding v3.1",
"grpc": {
"target": "dns:///speaker-embedding-prod-v3:443",
"tlsMode": "SYSTEM_TRUST",
"deadlineMs": 45000
}
}
| Status | Description |
|---|---|
200 OK |
Model configuration updated. Returns AdminSpeakerEmbeddingModelResponse. |
400 Bad Request |
Request body is invalid or omits a required field. |
401 Unauthorized |
Missing or invalid authentication. |
403 Forbidden |
Insufficient scope. |
404 Not Found |
Model not found. |
Update Embedding Model Status
PATCH /api/v1/speaker-services/admin/speaker-embeddings/models/{name}/status
Requires Authentication - Scopes: admin:speaker-embedding-models:write
Updates a concrete model status. DEPRECATED means the model is still usable for existing voice prints during migration. When a concrete model becomes INACTIVE, voice-print retention starts for voice prints produced by that resolved model.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string |
Yes | Concrete embedding model identifier. |
UpdateSpeakerEmbeddingModelStatusRequest
| Field | Type | Required | Nullable | Description |
|---|---|---|---|---|
status |
SpeakerEmbeddingModelStatus |
Yes | No | New model status. |
statusMessage |
string |
No | Yes | Optional operator-facing reason for the status change. |
{
"status": "MAINTENANCE",
"statusMessage": "Inference server maintenance"
}
| Status | Description |
|---|---|
200 OK |
Model status updated. Returns AdminSpeakerEmbeddingModelResponse. |
400 Bad Request |
Request body is invalid. |
401 Unauthorized |
Missing or invalid authentication. |
403 Forbidden |
Insufficient scope. |
404 Not Found |
Model not found. |
Delete Embedding Model
DELETE /api/v1/speaker-services/admin/speaker-embeddings/models/{name}
Requires Authentication - Scopes: admin:speaker-embedding-models:delete
Deletes a concrete model only when no aliases or retained voice prints reference it.
Admin Alias Management
Admin List Embedding Model Aliases
GET /api/v1/speaker-services/admin/speaker-embeddings/model-aliases
Requires Authentication - Scopes: admin:speaker-embedding-model-aliases:write
Returns all embedding model aliases for the tenant.
Create or Update Embedding Model Alias
PUT /api/v1/speaker-services/admin/speaker-embeddings/model-aliases/{alias}
Requires Authentication - Scopes: admin:speaker-embedding-model-aliases:write
Creates or updates an alias. Exactly one alias per tenant can be marked as default.
SpeakerEmbeddingModelAliasAdminRequest
| Field | Type | Required | Description |
|---|---|---|---|
type |
string |
Yes | Alias type: FAMILY, PINNED, or CONCRETE. |
displayName |
string |
Yes | Human-readable alias name. |
description |
string |
No | Optional alias description. |
resolvedModel |
string |
Yes | Concrete model identifier. |
isDefault |
boolean |
No | Whether this is the tenant default alias. |
deprecated |
boolean |
No | Whether the alias is deprecated. |
deprecationDate |
string (date) |
No | Date deprecation started. |
sunsetDate |
string (date) |
No | Date after which public requests should reject the alias. |
deprecationMessage |
string |
No | User-facing deprecation message. |
minHierarchyOrder |
integer |
No | Minimum user hierarchy level allowed to see this alias. |
Update Embedding Model Alias Resolution
PUT /api/v1/speaker-services/admin/speaker-embeddings/model-aliases/{alias}/resolve
Requires Authentication - Scopes: admin:speaker-embedding-model-aliases:write
Changes the concrete model an alias resolves to. Existing voice prints keep their previous resolved model metadata; clients create replacement voice prints through the user-facing voice-print creation endpoint.
Deprecate Embedding Model Alias
PUT /api/v1/speaker-services/admin/speaker-embeddings/model-aliases/{alias}/deprecate
Requires Authentication - Scopes: admin:speaker-embedding-model-aliases:write
Marks an alias as deprecated and optionally sets a sunset date.
Undeprecate Embedding Model Alias
PUT /api/v1/speaker-services/admin/speaker-embeddings/model-aliases/{alias}/undeprecate
Requires Authentication - Scopes: admin:speaker-embedding-model-aliases:write
Removes the deprecated status from an embedding model alias, clearing the deprecation date, sunset date, and deprecation message. The alias becomes fully active again.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
alias |
string |
Yes | Alias identifier. |
Delete Embedding Model Alias
DELETE /api/v1/speaker-services/admin/speaker-embeddings/model-aliases/{alias}
Requires Authentication - Scopes: admin:speaker-embedding-model-aliases:delete
Deletes an alias. Existing voice prints keep their requested alias and resolved model metadata.
Data Types
AdminSpeakerEmbeddingModelResponse
| Field | Type | Nullable | Description |
|---|---|---|---|
name |
string |
No | Unique model identifier. |
displayName |
string |
No | Human-readable display name. |
description |
string |
Yes | Optional model description. |
status |
SpeakerEmbeddingModelStatus |
No | Current model status. |
statusMessage |
string |
Yes | Optional human-readable status message. |
deprecatedAt |
string (ISO 8601) |
Yes | Timestamp when the model was marked as DEPRECATED. |
inactiveAt |
string (ISO 8601) |
Yes | Timestamp when the model was marked as INACTIVE. |
supportedLocales |
string[] |
Yes | Supported BCP-47 speaker locales. |
grpc |
SpeakerEmbeddingGrpcClientConfig |
No | gRPC client settings for the inference server. |
createdAt |
string (ISO 8601) |
No | Creation timestamp. |
updatedAt |
string (ISO 8601) |
No | Last update timestamp. |
thresholdDefaults |
ModelThresholdDefaults |
Yes | Per-mode threshold defaults. Null fields use global service defaults. |
activeVoicePrintCount |
long |
No | Number of active, non-deleted voice prints using this concrete model. |
defaultVoicePrintSpeakerCount |
long |
No | Number of speakers whose default voice print uses this concrete model. |
SpeakerEmbeddingGrpcClientConfig
Embedding inference calls use round-robin load balancing. Targets may be a single host:port, a DNS target such as dns:///embedding-headless:443, an unprefixed list such as server-a:2222,server-b:2222, or the preferred explicit form static:///server-a:2222,server-b:2222. Static lists have fixed membership; use DNS for dynamic membership. DNS targets are refreshed periodically even while another endpoint remains healthy. TLS endpoints must share a certificate identity or use the authority override.
| Field | Type | Nullable | Description |
|---|---|---|---|
target |
string |
No | Single, DNS, or explicit static gRPC target. |
tlsMode |
GrpcTlsMode |
No | TLS mode for the gRPC connection. |
authority |
string |
Yes | Optional gRPC authority override. |
deadlineMs |
integer |
No | Request deadline/timeout in milliseconds. |
maxInboundMessageBytes |
integer |
Yes | Optional maximum inbound message size. |
metadata |
object |
Yes | Metadata sent with inference requests. |
UpdateSpeakerEmbeddingGrpcClientConfig
| Field | Type | Required | Nullable | Description |
|---|---|---|---|---|
target |
string |
Yes | No | Single, DNS, or explicit static gRPC target. |
tlsMode |
GrpcTlsMode |
Yes | No | TLS mode for the gRPC connection. |
authority |
string |
No | Yes | Optional gRPC authority override. Omit or set to null to clear. |
deadlineMs |
integer |
Yes | No | Request deadline/timeout in milliseconds. Must be positive. |
maxInboundMessageBytes |
integer |
No | Yes | Optional maximum inbound message size. Omit or set to null to clear. |
metadata |
object |
No | Yes | Metadata sent with inference requests. Omit or set to null to clear. |
ModelThresholdDefaults
Per-mode threshold defaults for a concrete model. All fields are optional and nullable. A null field means "use the global service default" for that mode. Thresholds are floating-point values in the range [0.0, 1.0].
| Field | Type | Nullable | Description |
|---|---|---|---|
strictAcceptThreshold |
number |
Yes | Accept threshold for STRICT mode. Scores ≥ this value are accepted. |
strictReviewThreshold |
number |
Yes | Review threshold for STRICT mode. Scores in [reviewThreshold, acceptThreshold) are flagged for review. |
balancedAcceptThreshold |
number |
Yes | Accept threshold for BALANCED mode (the default mode). |
balancedReviewThreshold |
number |
Yes | Review threshold for BALANCED mode. |
lenientAcceptThreshold |
number |
Yes | Accept threshold for LENIENT mode. |
lenientReviewThreshold |
number |
Yes | Review threshold for LENIENT mode. |
{
"strictAcceptThreshold": 0.88,
"strictReviewThreshold": 0.78,
"balancedAcceptThreshold": 0.72,
"balancedReviewThreshold": 0.58,
"lenientAcceptThreshold": 0.58,
"lenientReviewThreshold": 0.42
}
GrpcTlsMode
| Value | Description |
|---|---|
PLAINTEXT |
Connect without TLS. Use only for trusted private networks. |
SYSTEM_TRUST |
Use TLS with the system trust store. |
MTLS |
Use mutual TLS when configured for the deployment. |
SpeakerEmbeddingModelStatus
| Value | Description |
|---|---|
AVAILABLE |
Model can process embedding inference requests. |
DEPRECATED |
Model remains usable for existing voice prints during migration. |
MAINTENANCE |
Model is temporarily unavailable. |
INACTIVE |
Model cannot process embedding inference requests. |