> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo-helix/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo-helix/_mcp/server.

# List ModelProviders By Workspace

GET /apis/models/v2/workspaces/{workspace}/providers

List model providers for a specific workspace.

Reference: https://docs.nvidia.com/nemo-helix/documentation/reference/api-reference/model-providers/list-providers-apis-models-v-2-workspaces-workspace-providers-get

## Request

### Path parameters

- `workspace` (string, required)

### Query parameters

- `page` (integer, optional, default: 1) — Page number.
- `page_size` (integer, optional, default: 100) — Page size.
- `sort` (enum, optional, default: created_at) — The field to sort by. To sort in decreasing order, use `-` in front of the field name.
  - Allowed values: `name`, `-name`, `created_at`, `-created_at`, `updated_at`, `-updated_at`, `status`, `-status`
- `filter` (ModelProviderFilter, optional) — Filter model providers by workspace, project, status, model_deployment_id, name, description, host_url, created_at, and updated_at.

## Response

### 200

Return model providers for a workspace

- `data` (list of ModelProvider, required)
- `pagination` (PaginationData, optional) — Pagination information.
- `sort` (string, optional) — The field on which the results are sorted.
- `filter` (map from string to any, optional) — Filtering information.

## Errors

### 422 Unprocessable Entity Error

Validation Error

- `detail` (list of ValidationError, optional)

## Types

### ModelProviderFilter

Filter for ModelProvider queries.

- `workspace` (string, optional) — Filter by workspace.
- `project` (string, optional) — Filter by project URN.
- `status` (enum, optional) — Filter by status.
  - Allowed values: `UNKNOWN`, `CREATED`, `PENDING`, `READY`, `ERROR`, `DELETING`, `DELETED`, `LOST`
- `model_deployment_id` (string, optional) — Filter by associated deployment ID.
- `name` (ModelProviderFilterName, optional) — Filter by name.
- `description` (ModelProviderFilterDescription, optional) — Filter by description.
- `host_url` (ModelProviderFilterHostUrl, optional) — Filter by host URL.
- `created_at` (DatetimeFilter, optional) — Filter by creation date.
- `updated_at` (DatetimeFilter, optional) — Filter by update date.

### ModelProvider

A ModelProvider defines a reachable network endpoint that provides an inference service for one or more Model Entities. Examples of Model Providers include OpenAI, NIMs, Bedrock, NVIDIA Build, etc. A ModelProvider may be provisioned automatically by Models Controller for ModelDeployments, or it may be provisioned manually by an end user for an endpoint that does not have its lifecycle managed by models service (like an external provider.) The unique identifier for a ModelProvider is the combination of workspace/name.

- `name` (string, required) — Name of the entity. Name/workspace combo must be unique across all entities. Name must start with a lowercase letter, be 2-63 characters, and use lowercase letters, digits, hyphens, and dots (no consecutive hyphens, cannot end with a hyphen).
- `workspace` (string, required) — The workspace of the entity. Allowed characters: letters (a-z, A-Z), digits (0-9), underscores, hyphens, and dots.
- `created_at` (datetime, required) — The timestamp of model entity creation
- `updated_at` (datetime, required) — The timestamp of the last model entity update
- `host_url` (string, required) — The network endpoint URL for the model provider
- `id` (string, optional) — Unique identifier for the model provider
- `project` (string, optional) — The URN of the project associated with this entity.
- `description` (string, optional) — Optional description of the model provider
- `api_key_secret_name` (string, optional) — Reference to the API key stored in Secrets service
- `served_models` (list of ServedModelMapping, optional) — List of models served by this provider with routing information for IGW
- `enabled_models` (list of string, optional) — Optional list of specific models to enable from this provider. If not set, all discovered models are enabled.
- `status` (enum, optional, default: UNKNOWN) — Current status of the model provider, populated by models service
  - Allowed values: `UNKNOWN`, `CREATED`, `PENDING`, `READY`, `ERROR`, `DELETING`, `DELETED`, `LOST`
- `status_message` (string, optional, default: ) — Detailed status message, populated by models service
- `default_extra_body` (map from string to any, optional) — Default body parameters for inference requests. Can be overridden by user requests.
- `default_extra_headers` (map from string to string, optional) — Default headers for inference requests. Can be overridden by user requests.
- `required_extra_body` (map from string to any, optional) — Required body parameters for inference requests. Cannot be overridden by user requests.
- `required_extra_headers` (map from string to string, optional) — Required headers for inference requests. Cannot be overridden by user requests.
- `model_deployment_id` (string, optional) — Optional reference to the ModelDeployment ID if this provider was auto-created for a deployment
- `auth_context` (AuthContext, optional) — Auth context captured at provider creation.
- `auth_header_format` (string, optional) — Jinja2 template string controlling how the API key secret is sent to the upstream. Must contain exactly one variable named `auth_secret`, which is substituted with the resolved secret value at request time. Example: `'X-Api-Key: {{ auth_secret }}'`. If not set, defaults to `'Authorization: Bearer {{ auth_secret }}'`.

### PaginationData

- `page` (integer, required) — The current page number.
- `page_size` (integer, required) — The page size used for the query.
- `current_page_size` (integer, required) — The size for the current page.
- `total_pages` (integer, required) — The total number of pages.
- `total_results` (integer, required) — The total number of results.

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)
- `input` (any, optional)
- `ctx` (map from string to any, optional)

### ModelProviderFilterName

Filter by name.

### ModelProviderFilterDescription

Filter by description.

### ModelProviderFilterHostUrl

Filter by host URL.

### DatetimeFilter

- `$gte` (datetime, optional) — Filter for results greater than or equal to this datetime.
- `$lte` (datetime, optional) — Filter for results less than or equal to this datetime.

### ServedModelMapping

Mapping between a Model Entity and how it's served by this provider.

- `model_entity_id` (string, required) — Model Entity identifier as workspace/name (e.g., 'my-ws/my-model')
- `served_model_name` (string, required) — The actual model name to send to the backend endpoint in the 'model' field

### AuthContext

Auth context captured at resource creation for delegated access. Stores a snapshot of the creating principal's identity so that controllers can later act on their behalf (e.g., accessing secrets).

- `principal_id` (string, required) — The principal's unique identifier
- `principal_account_id` (string, optional) — Stable NeMo account identifier for the principal
- `principal_email` (string, optional) — The principal's email address
- `principal_groups` (list of string, optional) — Groups the principal belongs to
- `principal_authz_aliases` (list of string, optional) — Alternate trusted identifiers for the principal
- `principal_on_behalf_of` (string, optional) — If acting on behalf of another principal, their principal ID
- `principal_on_behalf_of_groups` (list of string, optional) — Groups the on-behalf-of principal belongs to
- `principal_on_behalf_of_email` (string, optional) — The on-behalf-of principal's email address
- `principal_on_behalf_of_account_id` (string, optional) — Stable NeMo account identifier for the on-behalf-of principal
- `principal_on_behalf_of_authz_aliases` (list of string, optional) — Alternate trusted identifiers for the on-behalf-of principal

### ValidationErrorLocItems

### StringFilter

- `$eq` (string, optional) — Filter for results equal to this value.
- `$like` (string, optional) — Filter for results matching this pattern.
- `$in` (list of string, optional) — Filter for results in this list of values.
- `$nin` (list of string, optional) — Filter for results not in this list of values.

## Examples

**Response**

```json
{
  "data": [
    {
      "name": "llama-3.1-8b",
      "workspace": "string",
      "created_at": "2024-01-15T09:30:00Z",
      "updated_at": "2024-01-15T09:30:00Z",
      "host_url": "string",
      "id": "string",
      "project": "string",
      "description": "string",
      "api_key_secret_name": "string",
      "served_models": [
        {
          "model_entity_id": "string",
          "served_model_name": "string"
        }
      ],
      "enabled_models": [
        "string"
      ],
      "status": "UNKNOWN",
      "status_message": "",
      "default_extra_body": {},
      "default_extra_headers": {},
      "required_extra_body": {},
      "required_extra_headers": {},
      "model_deployment_id": "string",
      "auth_context": {
        "principal_id": "string",
        "principal_account_id": "string",
        "principal_email": "string",
        "principal_groups": [
          "string"
        ],
        "principal_authz_aliases": [
          "string"
        ],
        "principal_on_behalf_of": "string",
        "principal_on_behalf_of_groups": [
          "string"
        ],
        "principal_on_behalf_of_email": "string",
        "principal_on_behalf_of_account_id": "string",
        "principal_on_behalf_of_authz_aliases": [
          "string"
        ]
      },
      "auth_header_format": "string"
    }
  ],
  "pagination": {
    "page": 1,
    "page_size": 1,
    "current_page_size": 1,
    "total_pages": 1,
    "total_results": 1
  },
  "sort": "string",
  "filter": {}
}
```

**SDK Code**

```python
import requests

url = "https://api.example.com/apis/models/v2/workspaces/workspace/providers"

response = requests.get(url)

print(response.json())
```

```javascript
const url = 'https://api.example.com/apis/models/v2/workspaces/workspace/providers';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.example.com/apis/models/v2/workspaces/workspace/providers"

	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.example.com/apis/models/v2/workspaces/workspace/providers")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.example.com/apis/models/v2/workspaces/workspace/providers")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.example.com/apis/models/v2/workspaces/workspace/providers');

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.example.com/apis/models/v2/workspaces/workspace/providers");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.example.com/apis/models/v2/workspaces/workspace/providers")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```