Create and manage model provider services
This feature is in Beta. Account admins can manage access to this feature from the account console Previews page. See Manage Databricks previews.
This page describes how to create a model provider service, grant access to it, configure Unity AI Gateway features, and delete it.
Requirements
- Unity AI Gateway preview enabled for your account. See Manage Databricks previews.
CREATE SERVICEon the schema where you create the model provider service, plusUSE CATALOGandUSE SCHEMAon its catalog and schema.CREATE CONNECTIONon the same schema. Creating a model provider service with inline credentials stores them in a Unity Catalog connection, which requires this privilege.- The credentials for the external provider you want to register (for example, an OpenAI API key or an AWS access key pair).
Create a model provider service
Model provider services and model services share a single name namespace within a Unity Catalog schema. You can't use a name for a model provider service if a model service in the schema already uses it, and vice versa.
Use the UI
- Do one of the following:
- In the workspace sidebar, click AI Gateway, then open the Providers tab and click Create.
- In Catalog Explorer, go to the schema where you want to create the model provider service, then click Create > Service > Model provider service.
- Enter a name for the model provider service, and select the catalog and schema to create it in. If you start from Catalog Explorer, Catalog Explorer prefills the catalog and schema.
- Select the provider type, and enter the provider's connection details and credentials.
- Click Create. Databricks encrypts and stores the credentials. The UI does not display them after this point.
Use the REST API
Create a model provider service with a POST to the model provider services endpoint. The parent query parameter is the schema resource name, and model_provider_service_id is the leaf name. Supply the credential inline as plaintext. Databricks encrypts it and does not return it on read.
The following example registers an OpenAI provider with an inline API key.
curl https://<workspace-url>/api/2.1/unity-catalog/model-provider-services \
-X POST \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-G \
--data-urlencode "parent=schemas/main.default" \
--data-urlencode "model_provider_service_id=openai_prod" \
--data '{
"config": {
"provider_type": "EXTERNAL_MODEL_PROVIDER_TYPE_OPENAI",
"openai": { "direct": { "api_key": { "plaintext": "sk-..." } } },
"targets": [
{
"model": "gpt-5.5",
"native_api_types": ["openai/v1/chat/completions", "openai/v1/responses"]
}
]
},
"comment": "Production OpenAI provider"
}'
targets lists the specific models the model provider service can route to, each with the provider-native API types it supports. To instead allow any model the provider offers, set allow_all_targets to true and omit targets.
targets and allow_all_targets restrict only requests to supported APIs. They do not apply to other APIs, which are forwarded to the provider unchanged when forward_unmanaged_paths is enabled.
Other providers set a different block inside config and use the matching provider_type. For example, an Azure OpenAI provider that authenticates with a Microsoft Entra ID Databricks service principal:
curl https://<workspace-url>/api/2.1/unity-catalog/model-provider-services \
-X POST \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-G \
--data-urlencode "parent=schemas/main.default" \
--data-urlencode "model_provider_service_id=azure_openai_prod" \
--data '{
"config": {
"provider_type": "EXTERNAL_MODEL_PROVIDER_TYPE_AZURE_OPENAI",
"azure_openai": {
"direct": {
"base_url": "https://myresource.openai.azure.com",
"tenant_id": "<tenant-id>",
"client_id": "<client-id>",
"client_secret": { "plaintext": "<client-secret>" }
}
},
"targets": [
{
"model": "gpt-5.5",
"native_api_types": ["openai/v1/chat/completions", "openai/v1/responses"]
}
]
},
"comment": "Azure OpenAI provider (Entra ID)"
}'
For the full list of providers and their authentication methods, see Model provider services in Unity Catalog.
Grant access
Grant EXECUTE to let a user or group query the model provider service. The principal also needs USE CATALOG and USE SCHEMA on the catalog and schema.
GRANT USE CATALOG ON CATALOG main TO ai_team;
GRANT USE SCHEMA ON SCHEMA main.default TO ai_team;
GRANT EXECUTE ON MODEL PROVIDER SERVICE main.default.openai_prod TO ai_team;
For more on governing access, see Discover and govern access to model provider services.
Configure features
Because a model provider service routes through Unity AI Gateway, apply the same governance and observability features you use for other Unity AI Gateway traffic:
- Inference logging. Log requests and responses to a Unity Catalog table. See Monitor model services using inference tables.
- Rate limits. Cap queries per minute to manage capacity and cost. See Configure rate limits for AI services using Unity AI Gateway.
- Service policies. Govern the content of each interaction — for example, block unsafe content or redact sensitive data — by attaching a service policy. See Service policies for AI securables and Create and attach a service policy.
Delete a model provider service
Delete a model provider service from the UI, or with a DELETE request to its resource name. Deleting a model provider service removes its stored credentials.
curl https://<workspace-url>/api/2.1/unity-catalog/model-provider-services/main.default.openai_prod \
-X DELETE \
-H "Authorization: Bearer $DATABRICKS_TOKEN"