Skip to main content
Provider methods are deliberately small. The gateway owns API provider configuration, stores credentials in its keystore, discovers models, and normalizes model metadata for clients. Configuration is workspace-scoped: every provider method takes workspace_id, and API keys use workspace-specific secret ids. Clients do not need to contact each model provider directly to build a model picker. CLI-backed agent runtimes are not provider adapters. Use CLI Runtime API for runtime listing, runtime model catalogs, approvals, and cliAgentRuntime turn execution. Use these methods when a client needs to show available providers for a workspace, fetch model catalogs, or update the API key used by that workspace.

Methods

Listing providers

provider/list requires the workspace id because provider configuration belongs to a workspace on the gateway.
Response:
The name is the stable provider identifier used in model_provider, provider/models/list, and provider configuration methods. proxy_url, when present, is the gateway-side network route for that provider; clients should display it as configuration state, not as a secret-bearing URL.

Listing models

Use provider/models/list after the user selects a provider. The gateway returns normalized metadata that a client can use for filtering, badges, warnings, or default selection.
Response shape:
Model metadata is advisory. Providers differ in how much information they expose, so clients must tolerate null for limits, pricing, lifecycle state, and individual capabilities. Embedding and transcription catalogs use the same normalized model shape, but are separate methods because these models serve gateway services rather than ordinary chat selection. Use the embedding catalog for thread-context/vector-search configuration and the transcription catalog for voice input settings.

Model metadata

ProviderModelInfo is the normalized model object. Clients should select by id, display name when present, and tolerate metadata fields that are null.

Reasoning metadata

ProviderModelCapabilities.reasoning describes model-level reasoning controls when the provider or runtime can report them. Shared client helpers normalize effort labels and order known values for model selectors. Clients should only show a reasoning effort picker when supported is true and effort_options is non-empty. If the user changes provider or model, clear the selected effort unless a resolved thread selection explicitly carries one.

Setting an API key

API keys are stored in the gateway keystore under the workspace id and provider name. If the desktop app connects to a remote gateway, the key is stored on that remote gateway, not in the desktop process.
Response:
After updating a key, clients usually refresh provider/models/list for that provider because a newly valid credential can change what the gateway can discover.

Configuring a provider proxy

provider/configure can update a workspace provider proxy without changing its API key. Pioneer validates HTTP and SOCKS proxy URLs before storing them in the gateway keystore. The proxy is applied by the gateway when it creates the provider HTTP client, so it affects model discovery and provider requests from that gateway. Send clear_proxy: true to remove the proxy. Do not send proxy_url and clear_proxy together. The response reports whether the proxy changed or was deleted and returns the current URL when one is configured.

Deleting an API key

Response:
Deleting a key does not delete threads or turns that already used that provider. It only affects future provider calls and model discovery in that workspace.

Client behavior

Provider setup is workspace-local inside a gateway. A client connected to three gateways should show provider status for the selected workspace on the selected gateway, because each workspace may have different keys and each gateway may have different local runtime availability and network access. For ordinary API-provider thread creation and turn execution, pass the selected provider id through model_provider and the selected model id through model. For CLI-backed turns, pass the selected runtime through execution_backend instead. See Threads API, Turns API, and CLI Runtime API. When a client has a selected reasoning effort, include it in the thread or turn model selection path that supports reasoning effort. Do not invent effort values: use the canonical values returned in model metadata or normalized by shared client helpers.