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

# Returns the AI models available to agents.

GET https://api.awork.com/api/v1/agents/models

Returns the agent model catalog with effective availability for the current workspace.
The response includes model providers, model details, defaults, and available image capabilities.
Use these values when selecting a model for an agent or conversation.Any authenticated user.

Reference: https://developers.awork.com/apiv1/agent-runtime/get-models

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Response

### 200

OK

- `defaultProvider` (string, optional, nullable) — The default provider.
- `defaultModel` (string, optional, nullable) — The default model.
- `providers` (list of AgentRuntimeProviderModelsResponseModel, optional, nullable) — The available providers and their models.
- `performanceLevels` (list of AgentRuntimePerformanceLevelResponseModel, optional, nullable) — The predefined performance levels that resolve to available models.
- `workspaceSettings` (AgentRuntimeWorkspaceModelSettingsResponseModel, optional) — Represents effective workspace AI model policy.
- `availableImageCapabilities` (list of string, optional, nullable) — Image capability keys available in this workspace.
- `imageCapabilityModels` (map from string to AgentRuntimeModelResponseModel, optional, nullable) — The configured runtime model for each image capability, using the workspace catalog metadata.

## Errors

### 401 Unauthorized Error

Unauthorized

- `code` (string, required) — The error code.
- `description` (string, required) — The description of the error.
- `link` (string, required) — The link to the API documentation page.
- `details` (list of string, optional, nullable) — A list of details describing the error.
- `validationErrors` (list of ValidationErrorResponse, optional, nullable) — If a validation error occurred, this contains the validation errors for each property.
- `traceId` (string, optional, nullable) — The request trace id for tracking the request.

## Types

### AgentRuntimeProviderModelsResponseModel

Describes the models available from one provider.

- `provider` (string, optional, nullable) — The stable provider key.
- `displayName` (string, optional, nullable) — The provider name shown to users.
- `defaultModel` (string, optional, nullable) — The provider model selected by default.
- `models` (list of string, optional, nullable) — The available provider model keys.
- `modelDetails` (list of AgentRuntimeModelResponseModel, optional, nullable) — Rich model metadata for model pickers.

### AgentRuntimePerformanceLevelResponseModel

Represents a predefined performance level for the agent model selector.

- `id` (string, optional, nullable) — The stable identifier used by clients to present the performance level.
- `provider` (string, optional, nullable) — The selected model provider.
- `model` (string, optional, nullable) — The selected model name.
- `reasoningLevel` (string, optional, nullable) — The selected reasoning level.
- `isDefault` (boolean, optional) — Whether this is the default performance level for new personal agent chats.

### AgentRuntimeWorkspaceModelSettingsResponseModel

Represents effective workspace AI model policy.

- `autoEnableNewModels` (boolean, optional) — Whether new models in enabled parents are enabled automatically.
- `vendors` (list of AgentRuntimeWorkspaceModelSwitchResponseModel, optional, nullable) — The effective vendor states.
- `regions` (list of AgentRuntimeWorkspaceModelSwitchResponseModel, optional, nullable) — The effective region states.
- `presets` (list of AgentRuntimeWorkspaceModelPresetResponseModel, optional, nullable) — Effective Fast, Balanced, and Deep preset assignments.
- `models` (list of AgentRuntimeModelResponseModel, optional, nullable) — The full effective catalog used by workspace model settings.
- `availableImageCapabilities` (list of string, optional, nullable) — Image capability keys available in this workspace.

### AgentRuntimeModelResponseModel

Represents one agent runtime model exposed by the catalog.

- `id` (string, optional, nullable) — The model id used by the provider API.
- `key` (string, optional, nullable) — The stable catalog key.
- `kind` (string, optional, nullable) — The model kind.
- `vendorKey` (string, optional, nullable) — The stable vendor key.
- `vendorCountry` (string, optional, nullable) — The vendor country shown in the model picker.
- `regionKey` (string, optional, nullable) — The stable serving-region key.
- `displayName` (string, optional, nullable) — The display label.
- `status` (string, optional, nullable) — The lifecycle status of the model.
- `isNew` (boolean, optional) — Whether the model is newly published.
- `isWorkspaceEnabled` (boolean, optional) — Whether workspace policy enables the model.
- `isInUse` (boolean, optional) — Whether a current workspace configuration or thread uses the model.
- `isAvailable` (boolean, optional) — Whether provider readiness makes the model available.
- `disabledReason` (string, optional, nullable) — The reason the model is unavailable.
- `canToggle` (boolean, optional) — Whether the workspace can change this model's switch.
- `creditFactor` (double, optional, nullable) — The Terra-relative cost factor for the representative cached-input workload.
- `servedFrom` (string, optional, nullable) — The serving region label.
- `servingFlag` (string, optional, nullable) — The serving region flag.
- `supportsImageInput` (boolean, optional) — Whether the model accepts native image input.
- `supportedReasoningLevels` (list of string, optional, nullable) — The reasoning levels supported by this model.

### ValidationErrorResponse

The validation error response.

- `property` (string, optional, nullable) — The name of the property that failed validation.
- `message` (string, optional, nullable) — The reason why this property failed validation.

### AgentRuntimeWorkspaceModelSwitchResponseModel

Represents one effective workspace model switch.

- `key` (string, optional, nullable) — The stable switch key.
- `displayName` (string, optional, nullable) — The display name.
- `country` (string, optional, nullable) — The vendor country, when this switch represents a vendor.
- `isEnabled` (boolean, optional) — Whether the switch is enabled.
- `isNew` (boolean, optional) — Whether this switch is newly published.
- `canToggle` (boolean, optional) — Whether this parent switch can be changed.
- `disabledReason` (string, optional, nullable) — The authoritative reason the switch or its children are unavailable.

### AgentRuntimeWorkspaceModelPresetResponseModel

Represents one effective workspace preset assignment.

- `presetKey` (string, optional, nullable) — The preset key.
- `isAuto` (boolean, optional) — Whether the preset uses central Auto resolution.
- `modelKey` (string, optional, nullable) — The explicit model key.
- `reasoningLevel` (string, optional, nullable) — The effective reasoning level.
- `modelStatus` (string, optional, nullable) — The stored model lifecycle status.
- `warning` (string, optional, nullable) — The warning shown for a deprecated stored reference.
- `error` (string, optional, nullable) — The error shown for a removed or unavailable stored reference.

## Examples

**Response**

```json
{
  "defaultProvider": "openai",
  "defaultModel": "gpt-5.6-terra",
  "providers": [
    {
      "provider": "openai",
      "displayName": "OpenAI",
      "defaultModel": "gpt-5.6-terra",
      "models": [
        "string"
      ],
      "modelDetails": [
        {
          "id": "gpt-5.6-terra",
          "key": "openai:gpt-5.6-terra",
          "kind": "text",
          "vendorKey": "openai",
          "vendorCountry": "EU",
          "regionKey": "europe",
          "displayName": "GPT-5.6 Terra",
          "status": "active",
          "isNew": false,
          "isWorkspaceEnabled": true,
          "isInUse": true,
          "isAvailable": true,
          "disabledReason": "Its vendor or region is disabled.",
          "canToggle": true,
          "creditFactor": 1,
          "servedFrom": "Europe",
          "servingFlag": "🇪🇺",
          "supportsImageInput": true,
          "supportedReasoningLevels": [
            "string"
          ]
        }
      ]
    }
  ],
  "performanceLevels": [
    {
      "id": "balanced",
      "provider": "openai",
      "model": "gpt-5.6-terra",
      "reasoningLevel": "medium",
      "isDefault": true
    }
  ],
  "workspaceSettings": {
    "autoEnableNewModels": true,
    "vendors": [
      {
        "key": "openai",
        "displayName": "OpenAI",
        "country": "US",
        "isEnabled": true,
        "isNew": false,
        "canToggle": true,
        "disabledReason": "Its vendor or region is disabled."
      }
    ],
    "regions": [
      {
        "key": "openai",
        "displayName": "OpenAI",
        "country": "US",
        "isEnabled": true,
        "isNew": false,
        "canToggle": true,
        "disabledReason": "Its vendor or region is disabled."
      }
    ],
    "presets": [
      {
        "presetKey": "balanced",
        "isAuto": false,
        "modelKey": "openai:gpt-5.6-terra",
        "reasoningLevel": "medium",
        "modelStatus": "active",
        "warning": "This preset uses a deprecated model and remains visible for existing agents.",
        "error": "This preset model is disabled by workspace settings."
      }
    ],
    "models": [
      {
        "id": "gpt-5.6-terra",
        "key": "openai:gpt-5.6-terra",
        "kind": "text",
        "vendorKey": "openai",
        "vendorCountry": "EU",
        "regionKey": "europe",
        "displayName": "GPT-5.6 Terra",
        "status": "active",
        "isNew": false,
        "isWorkspaceEnabled": true,
        "isInUse": true,
        "isAvailable": true,
        "disabledReason": "Its vendor or region is disabled.",
        "canToggle": true,
        "creditFactor": 1,
        "servedFrom": "Europe",
        "servingFlag": "🇪🇺",
        "supportsImageInput": true,
        "supportedReasoningLevels": [
          "string"
        ]
      }
    ],
    "availableImageCapabilities": [
      "string"
    ]
  },
  "availableImageCapabilities": [
    "string"
  ],
  "imageCapabilityModels": {}
}
```

**SDK Code**

```python
import requests

url = "https://api.awork.com/api/v1/agents/models"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.awork.com/api/v1/agents/models';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

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.awork.com/api/v1/agents/models"

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

	req.Header.Add("Authorization", "Bearer <token>")

	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.awork.com/api/v1/agents/models")

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

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

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.awork.com/api/v1/agents/models")
  .header("Authorization", "Bearer <token>")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.awork.com/api/v1/agents/models', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.awork.com/api/v1/agents/models");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.awork.com/api/v1/agents/models")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

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()
```