# Assistants Endpoint Object Structure

This page applies to both the `assistants` and `azureAssistants` endpoints.

**Note:** To enable `azureAssistants`, see the [Azure OpenAI Configuration](/docs/configuration/azure#using-assistants-with-azure) for more information.

## Example

```yaml filename="Assistants Endpoint"
endpoints:
  # azureAssistants: # <-- Azure-specific configuration has the same structure as `assistants`
    #  pollIntervalMs: 500
    #  timeoutMs: 10000

  assistants:
    disableBuilder: false
    # Use either `supportedIds` or `excludedIds` but not both
    supportedIds: ["asst_supportedAssistantId1", "asst_supportedAssistantId2"]
    # excludedIds: ["asst_excludedAssistantId"]
    # `privateAssistants` do not work with `supportedIds` or `excludedIds`
    # privateAssistants: false
    # (optional) Models that support retrieval, will default to latest known OpenAI models that support the feature
    # retrievalModels: ["gpt-4-turbo-preview"]
    # (optional) Assistant Capabilities available to all users. Omit the ones you wish to exclude. Defaults to list below.
    # capabilities: ["code_interpreter", "retrieval", "actions", "tools", "image_vision"]
```
> This configuration enables the builder interface for assistants, sets a polling interval of 500ms to check for run updates, and establishes a timeout of 10 seconds for assistant run operations.

## disableBuilder

**Key:**
<OptionTable
  options={[
    ['disableBuilder', 'Boolean', 'Controls the visibility and use of the builder interface for assistants.', 'When set to `true`, disables the builder interface for the assistant, limiting direct manual interaction.'],
  ]}
/>

**Default:** `false`

**Example:**
```yaml filename="endpoints / assistants / disableBuilder"
disableBuilder: false
```

## pollIntervalMs

**Key:**
<OptionTable
  options={[
    ['pollIntervalMs', 'Integer', 'Specifies the polling interval in milliseconds for checking run updates or changes in assistant run states.', 'Specifies the polling interval in milliseconds for checking assistant run updates.'],
  ]}
/>

**Default:** `2000`

**Example:**
```yaml filename="endpoints / assistants / pollIntervalMs"
pollIntervalMs: 2500
```
**Note:** Currently, this is only used by Azure Assistants. Higher values are recommended for Azure Assistants to avoid rate limiting errors.

## timeoutMs

**Key:**
<OptionTable
  options={[
    ['timeoutMs', 'Integer', 'Defines the maximum time in milliseconds that an assistant can run before the request is cancelled.', 'Sets a timeout in milliseconds for assistant runs. Helps manage system load by limiting total run operation time.'],
  ]}
/>

**Default:** `180000`

**Example:**
```yaml filename="endpoints / assistants / timeoutMs"
timeoutMs: 10000
```
**Note:** Defaults to 3 minutes (180,000 ms). Run operation times can range between 50 seconds to 2 minutes but also exceed this. If the `timeoutMs` value is exceeded, the run will be cancelled.

## supportedIds

**Key:**
<OptionTable
  options={[
    ['supportedIds', 'Array/List of Strings', 'List of supported assistant Ids', 'Use this or `excludedIds` but not both (the `excludedIds` field will be ignored if so).'],
  ]}
/>

**Example:**
```yaml filename="endpoints / assistants / supportedIds"
supportedIds:
  - "asst_supportedAssistantId1"
  - "asst_supportedAssistantId2"
```

## excludedIds

**Key:**
<OptionTable
  options={[
    ['excludedIds', 'Array/List of Strings', 'List of excluded assistant Ids', 'Use this or `supportedIds` but not both (the `excludedIds` field will be ignored if so).'],
  ]}
/>

**Example:**
```yaml filename="endpoints / assistants / excludedIds"
excludedIds:
  - "asst_excludedAssistantId1"
  - "asst_excludedAssistantId2"
```

## privateAssistants

**Key:**
<OptionTable
  options={[
    ['privateAssistants', 'Boolean', 'Controls whether assistants are private to the user that created them', 'Does not work with `supportedIds` or `excludedIds` (`supportedIds` and `excludedIds` will be ignored).'],
  ]}
/>

**Default:** `false`

**Example:**
```yaml filename="endpoints / assistants / privateAssistants"
privateAssistants: false
```

## retrievalModels

**Key:**
<OptionTable
  options={[
    ['retrievalModels', 'Array/List of Strings', 'Specifies the models that support retrieval for the assistants endpoint.', 'Defines the models that support retrieval capabilities for the assistants endpoint. By default, it uses the latest known OpenAI models that support the official Retrieval feature.'],
  ]}
/>

**Default:** `[]` (uses the latest known OpenAI models that support retrieval)

**Example:**
```yaml filename="endpoints / assistants / retrievalModels"
retrievalModels:
  - "gpt-4-turbo-preview"
```

## capabilities

**Key:**
<OptionTable
  options={[
    ['capabilities', 'Array/List of Strings', 'Specifies the assistant capabilities available to all users for the assistants endpoint.', 'Defines the assistant capabilities that are available to all users for the assistants endpoint. You can omit the capabilities you wish to exclude from the list.'],
  ]}
/>

**Default:** `["code_interpreter", "image_vision", "retrieval", "actions", "tools"]`

**Example:**
```yaml filename="endpoints / assistants / capabilities"
capabilities:
  - "code_interpreter"
  - "retrieval"
  - "actions"
  - "tools"
  - "image_vision"
```
**Note:** This field is optional. If omitted, the default behavior is to include all the capabilities listed in the example.