Skip to content

client.providers

client.providers — the providers operations.

On AsyncKindgi every method is the same, awaited.

list(
*,
limit: int | None = None,
cursor: str | None = None,
feature: str | None = None,
timeout: float | None = None,
) -> ProviderCollectionPage

List model providers. GET /v1/providers

Cursor-paginated. Optional ?feature= filters to providers whose metadata.features includes the given feature (exact match).

register(
*,
idempotency_key: str | None = None,
timeout: float | None = None,
**fields: Any,
) -> RegisterProviderResult

Register a model provider. POST /v1/providers

Body is a full ProviderMetadata. Server validates shape: provider-level id + region non-empty; models[] non-empty with unique name per entry; per-model contextWindow positive integer; per-model features against the closed enum; per-model cost non-negative; optional per-model p95LatencyMs / maxOutputTokens well-shaped — same rules as @kindgi/capabilities.createProviderRegistry. Secrets (API keys, endpoints) are NOT part of the wire shape; deployments store them inside the binding.

get(*, timeout: float | None = None) -> ProviderMetadata

Fetch a provider. GET /v1/providers/{providerId}

Returns the wire-safe ProviderMetadata (routing metadata only — secrets never cross the wire).

capabilities(*, timeout: float | None = None) -> ProviderCapabilitiesResult

List capabilities a provider satisfies. GET /v1/providers/{providerId}/capabilities

Sub-resource: returns the catalog capability descriptors the provider fulfils. Empty array = known provider with no matches; 404 = unknown provider.

unregister(
*,
idempotency_key: str | None = None,
timeout: float | None = None,
) -> UnregisterProviderResult

Unregister a model provider. POST /v1/providers/{providerId}/unregister