# Assistants

## List assistants

`$ openai beta:assistants list`

**get** `/assistants`

Returns a list of assistants.

### Parameters

- `--after: optional string`

  A cursor for use in pagination. `after` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.

- `--before: optional string`

  A cursor for use in pagination. `before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.

- `--limit: optional number`

  A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.

- `--order: optional "asc" or "desc"`

  Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and `desc` for descending order.

### Returns

- `ListAssistantsResponse: object { data, first_id, has_more, 2 more }`

  - `data: array of Assistant`

    - `id: string`

      The identifier, which can be referenced in API endpoints.

    - `created_at: number`

      The Unix timestamp (in seconds) for when the assistant was created.

    - `description: string`

      The description of the assistant. The maximum length is 512 characters.

    - `instructions: string`

      The system instructions that the assistant uses. The maximum length is 256,000 characters.

    - `metadata: map[string]`

      Set of 16 key-value pairs that can be attached to an object. This can be
      useful for storing additional information about the object in a structured
      format, and querying for objects via API or the dashboard.

      Keys are strings with a maximum length of 64 characters. Values are strings
      with a maximum length of 512 characters.

    - `model: string`

      ID of the model to use. You can use the [List models](https://platform.openai.com/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](https://platform.openai.com/docs/models) for descriptions of them.

    - `name: string`

      The name of the assistant. The maximum length is 256 characters.

    - `object: "assistant"`

      The object type, which is always `assistant`.

    - `tools: array of AssistantTool`

      A list of tool enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types `code_interpreter`, `file_search`, or `function`.

      - `code_interpreter_tool: object { type }`

        - `type: "code_interpreter"`

          The type of tool being defined: `code_interpreter`

      - `file_search_tool: object { type, file_search }`

        - `type: "file_search"`

          The type of tool being defined: `file_search`

        - `file_search: optional object { max_num_results, ranking_options }`

          Overrides for the file search tool.

          - `max_num_results: optional number`

            The maximum number of results the file search tool should output. The default is 20 for `gpt-4*` models and 5 for `gpt-3.5-turbo`. This number should be between 1 and 50 inclusive.

            Note that the file search tool may output fewer than `max_num_results` results. See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

          - `ranking_options: optional object { score_threshold, ranker }`

            The ranking options for the file search. If not specified, the file search tool will use the `auto` ranker and a score_threshold of 0.

            See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

            - `score_threshold: number`

              The score threshold for the file search. All values must be a floating point number between 0 and 1.

            - `ranker: optional "auto" or "default_2024_08_21"`

              The ranker to use for the file search. If not specified will use the `auto` ranker.

              - `"auto"`

              - `"default_2024_08_21"`

      - `function_tool: object { function, type }`

        - `function: object { name, description, parameters, strict }`

          - `name: string`

            The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.

          - `description: optional string`

            A description of what the function does, used by the model to choose when and how to call the function.

          - `parameters: optional map[unknown]`

            The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.

            Omitting `parameters` defines a function with an empty parameter list.

          - `strict: optional boolean`

            Whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the `parameters` field. Only a subset of JSON Schema is supported when `strict` is `true`. Learn more about Structured Outputs in the [function calling guide](https://platform.openai.com/docs/guides/function-calling).

        - `type: "function"`

          The type of tool being defined: `function`

    - `response_format: optional "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

      Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

      Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

      Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

      **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `union_member_0: "auto"`

        `auto` is the default value

      - `response_format_text: object { type }`

        Default response format. Used to generate text responses.

        - `type: "text"`

          The type of response format being defined. Always `text`.

      - `response_format_json_object: object { type }`

        JSON object response format. An older method of generating JSON responses.
        Using `json_schema` is recommended for models that support it. Note that the
        model will not generate JSON without a system or user message instructing it
        to do so.

        - `type: "json_object"`

          The type of response format being defined. Always `json_object`.

      - `response_format_json_schema: object { json_schema, type }`

        JSON Schema response format. Used to generate structured JSON responses.
        Learn more about [Structured Outputs](https://platform.openai.com/docs/guides/structured-outputs).

        - `json_schema: object { name, description, schema, strict }`

          Structured Outputs configuration options, including a JSON Schema.

          - `name: string`

            The name of the response format. Must be a-z, A-Z, 0-9, or contain
            underscores and dashes, with a maximum length of 64.

          - `description: optional string`

            A description of what the response format is for, used by the model to
            determine how to respond in the format.

          - `schema: optional map[unknown]`

            The schema for the response format, described as a JSON Schema object.
            Learn how to build JSON schemas [here](https://json-schema.org/).

          - `strict: optional boolean`

            Whether to enable strict schema adherence when generating the output.
            If set to true, the model will always follow the exact schema defined
            in the `schema` field. Only a subset of JSON Schema is supported when
            `strict` is `true`. To learn more, read the [Structured Outputs
            guide](https://platform.openai.com/docs/guides/structured-outputs).

        - `type: "json_schema"`

          The type of response format being defined. Always `json_schema`.

    - `temperature: optional number`

      What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

    - `tool_resources: optional object { code_interpreter, file_search }`

      A set of resources that are used by the assistant's tools. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs.

      - `code_interpreter: optional object { file_ids }`

        - `file_ids: optional array of string`

          A list of [file](https://platform.openai.com/docs/api-reference/files) IDs made available to the `code_interpreter`` tool. There can be a maximum of 20 files associated with the tool.

      - `file_search: optional object { vector_store_ids }`

        - `vector_store_ids: optional array of string`

          The ID of the [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object) attached to this assistant. There can be a maximum of 1 vector store attached to the assistant.

    - `top_p: optional number`

      An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.

      We generally recommend altering this or temperature but not both.

  - `first_id: string`

  - `has_more: boolean`

  - `last_id: string`

  - `object: string`

### Example

```cli
openai beta:assistants list \
  --api-key 'My API Key'
```

#### Response

```json
{
  "data": [
    {
      "id": "id",
      "created_at": 0,
      "description": "description",
      "instructions": "instructions",
      "metadata": {
        "foo": "string"
      },
      "model": "model",
      "name": "name",
      "object": "assistant",
      "tools": [
        {
          "type": "code_interpreter"
        }
      ],
      "response_format": "auto",
      "temperature": 1,
      "tool_resources": {
        "code_interpreter": {
          "file_ids": [
            "string"
          ]
        },
        "file_search": {
          "vector_store_ids": [
            "string"
          ]
        }
      },
      "top_p": 1
    }
  ],
  "first_id": "asst_abc123",
  "has_more": false,
  "last_id": "asst_abc456",
  "object": "list"
}
```

## Create assistant

`$ openai beta:assistants create`

**post** `/assistants`

Create an assistant with a model and instructions.

### Parameters

- `--model: string or ChatModel`

  ID of the model to use. You can use the [List models](https://platform.openai.com/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](https://platform.openai.com/docs/models) for descriptions of them.

- `--description: optional string`

  The description of the assistant. The maximum length is 512 characters.

- `--instructions: optional string`

  The system instructions that the assistant uses. The maximum length is 256,000 characters.

- `--metadata: optional map[string]`

  Set of 16 key-value pairs that can be attached to an object. This can be
  useful for storing additional information about the object in a structured
  format, and querying for objects via API or the dashboard.

  Keys are strings with a maximum length of 64 characters. Values are strings
  with a maximum length of 512 characters.

- `--name: optional string`

  The name of the assistant. The maximum length is 256 characters.

- `--reasoning-effort: optional "none" or "minimal" or "low" or 3 more`

  Constrains effort on reasoning for
  [reasoning models](https://platform.openai.com/docs/guides/reasoning).
  Currently supported values are `none`, `minimal`, `low`, `medium`, `high`, and `xhigh`. Reducing
  reasoning effort can result in faster responses and fewer tokens used
  on reasoning in a response.

  - `gpt-5.1` defaults to `none`, which does not perform reasoning. The supported reasoning values for `gpt-5.1` are `none`, `low`, `medium`, and `high`. Tool calls are supported for all reasoning values in gpt-5.1.
  - All models before `gpt-5.1` default to `medium` reasoning effort, and do not support `none`.
  - The `gpt-5-pro` model defaults to (and only supports) `high` reasoning effort.
  - `xhigh` is supported for all models after `gpt-5.1-codex-max`.

- `--response-format: optional "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

  Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

  Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

  Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

  **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

- `--temperature: optional number`

  What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

- `--tool-resources: optional object { code_interpreter, file_search }`

  A set of resources that are used by the assistant's tools. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs.

- `--tool: optional array of AssistantTool`

  A list of tool enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types `code_interpreter`, `file_search`, or `function`.

- `--top-p: optional number`

  An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.

  We generally recommend altering this or temperature but not both.

### Returns

- `assistant: object { id, created_at, description, 10 more }`

  Represents an `assistant` that can call the model and use tools.

  - `id: string`

    The identifier, which can be referenced in API endpoints.

  - `created_at: number`

    The Unix timestamp (in seconds) for when the assistant was created.

  - `description: string`

    The description of the assistant. The maximum length is 512 characters.

  - `instructions: string`

    The system instructions that the assistant uses. The maximum length is 256,000 characters.

  - `metadata: map[string]`

    Set of 16 key-value pairs that can be attached to an object. This can be
    useful for storing additional information about the object in a structured
    format, and querying for objects via API or the dashboard.

    Keys are strings with a maximum length of 64 characters. Values are strings
    with a maximum length of 512 characters.

  - `model: string`

    ID of the model to use. You can use the [List models](https://platform.openai.com/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](https://platform.openai.com/docs/models) for descriptions of them.

  - `name: string`

    The name of the assistant. The maximum length is 256 characters.

  - `object: "assistant"`

    The object type, which is always `assistant`.

  - `tools: array of AssistantTool`

    A list of tool enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types `code_interpreter`, `file_search`, or `function`.

    - `code_interpreter_tool: object { type }`

      - `type: "code_interpreter"`

        The type of tool being defined: `code_interpreter`

    - `file_search_tool: object { type, file_search }`

      - `type: "file_search"`

        The type of tool being defined: `file_search`

      - `file_search: optional object { max_num_results, ranking_options }`

        Overrides for the file search tool.

        - `max_num_results: optional number`

          The maximum number of results the file search tool should output. The default is 20 for `gpt-4*` models and 5 for `gpt-3.5-turbo`. This number should be between 1 and 50 inclusive.

          Note that the file search tool may output fewer than `max_num_results` results. See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

        - `ranking_options: optional object { score_threshold, ranker }`

          The ranking options for the file search. If not specified, the file search tool will use the `auto` ranker and a score_threshold of 0.

          See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

          - `score_threshold: number`

            The score threshold for the file search. All values must be a floating point number between 0 and 1.

          - `ranker: optional "auto" or "default_2024_08_21"`

            The ranker to use for the file search. If not specified will use the `auto` ranker.

            - `"auto"`

            - `"default_2024_08_21"`

    - `function_tool: object { function, type }`

      - `function: object { name, description, parameters, strict }`

        - `name: string`

          The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.

        - `description: optional string`

          A description of what the function does, used by the model to choose when and how to call the function.

        - `parameters: optional map[unknown]`

          The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.

          Omitting `parameters` defines a function with an empty parameter list.

        - `strict: optional boolean`

          Whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the `parameters` field. Only a subset of JSON Schema is supported when `strict` is `true`. Learn more about Structured Outputs in the [function calling guide](https://platform.openai.com/docs/guides/function-calling).

      - `type: "function"`

        The type of tool being defined: `function`

  - `response_format: optional "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

    Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

    Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

    Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

    **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

    - `union_member_0: "auto"`

      `auto` is the default value

    - `response_format_text: object { type }`

      Default response format. Used to generate text responses.

      - `type: "text"`

        The type of response format being defined. Always `text`.

    - `response_format_json_object: object { type }`

      JSON object response format. An older method of generating JSON responses.
      Using `json_schema` is recommended for models that support it. Note that the
      model will not generate JSON without a system or user message instructing it
      to do so.

      - `type: "json_object"`

        The type of response format being defined. Always `json_object`.

    - `response_format_json_schema: object { json_schema, type }`

      JSON Schema response format. Used to generate structured JSON responses.
      Learn more about [Structured Outputs](https://platform.openai.com/docs/guides/structured-outputs).

      - `json_schema: object { name, description, schema, strict }`

        Structured Outputs configuration options, including a JSON Schema.

        - `name: string`

          The name of the response format. Must be a-z, A-Z, 0-9, or contain
          underscores and dashes, with a maximum length of 64.

        - `description: optional string`

          A description of what the response format is for, used by the model to
          determine how to respond in the format.

        - `schema: optional map[unknown]`

          The schema for the response format, described as a JSON Schema object.
          Learn how to build JSON schemas [here](https://json-schema.org/).

        - `strict: optional boolean`

          Whether to enable strict schema adherence when generating the output.
          If set to true, the model will always follow the exact schema defined
          in the `schema` field. Only a subset of JSON Schema is supported when
          `strict` is `true`. To learn more, read the [Structured Outputs
          guide](https://platform.openai.com/docs/guides/structured-outputs).

      - `type: "json_schema"`

        The type of response format being defined. Always `json_schema`.

  - `temperature: optional number`

    What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

  - `tool_resources: optional object { code_interpreter, file_search }`

    A set of resources that are used by the assistant's tools. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs.

    - `code_interpreter: optional object { file_ids }`

      - `file_ids: optional array of string`

        A list of [file](https://platform.openai.com/docs/api-reference/files) IDs made available to the `code_interpreter`` tool. There can be a maximum of 20 files associated with the tool.

    - `file_search: optional object { vector_store_ids }`

      - `vector_store_ids: optional array of string`

        The ID of the [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object) attached to this assistant. There can be a maximum of 1 vector store attached to the assistant.

  - `top_p: optional number`

    An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.

    We generally recommend altering this or temperature but not both.

### Example

```cli
openai beta:assistants create \
  --api-key 'My API Key' \
  --model gpt-4o
```

#### Response

```json
{
  "id": "id",
  "created_at": 0,
  "description": "description",
  "instructions": "instructions",
  "metadata": {
    "foo": "string"
  },
  "model": "model",
  "name": "name",
  "object": "assistant",
  "tools": [
    {
      "type": "code_interpreter"
    }
  ],
  "response_format": "auto",
  "temperature": 1,
  "tool_resources": {
    "code_interpreter": {
      "file_ids": [
        "string"
      ]
    },
    "file_search": {
      "vector_store_ids": [
        "string"
      ]
    }
  },
  "top_p": 1
}
```

## Retrieve assistant

`$ openai beta:assistants retrieve`

**get** `/assistants/{assistant_id}`

Retrieves an assistant.

### Parameters

- `--assistant-id: string`

  The ID of the assistant to retrieve.

### Returns

- `assistant: object { id, created_at, description, 10 more }`

  Represents an `assistant` that can call the model and use tools.

  - `id: string`

    The identifier, which can be referenced in API endpoints.

  - `created_at: number`

    The Unix timestamp (in seconds) for when the assistant was created.

  - `description: string`

    The description of the assistant. The maximum length is 512 characters.

  - `instructions: string`

    The system instructions that the assistant uses. The maximum length is 256,000 characters.

  - `metadata: map[string]`

    Set of 16 key-value pairs that can be attached to an object. This can be
    useful for storing additional information about the object in a structured
    format, and querying for objects via API or the dashboard.

    Keys are strings with a maximum length of 64 characters. Values are strings
    with a maximum length of 512 characters.

  - `model: string`

    ID of the model to use. You can use the [List models](https://platform.openai.com/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](https://platform.openai.com/docs/models) for descriptions of them.

  - `name: string`

    The name of the assistant. The maximum length is 256 characters.

  - `object: "assistant"`

    The object type, which is always `assistant`.

  - `tools: array of AssistantTool`

    A list of tool enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types `code_interpreter`, `file_search`, or `function`.

    - `code_interpreter_tool: object { type }`

      - `type: "code_interpreter"`

        The type of tool being defined: `code_interpreter`

    - `file_search_tool: object { type, file_search }`

      - `type: "file_search"`

        The type of tool being defined: `file_search`

      - `file_search: optional object { max_num_results, ranking_options }`

        Overrides for the file search tool.

        - `max_num_results: optional number`

          The maximum number of results the file search tool should output. The default is 20 for `gpt-4*` models and 5 for `gpt-3.5-turbo`. This number should be between 1 and 50 inclusive.

          Note that the file search tool may output fewer than `max_num_results` results. See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

        - `ranking_options: optional object { score_threshold, ranker }`

          The ranking options for the file search. If not specified, the file search tool will use the `auto` ranker and a score_threshold of 0.

          See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

          - `score_threshold: number`

            The score threshold for the file search. All values must be a floating point number between 0 and 1.

          - `ranker: optional "auto" or "default_2024_08_21"`

            The ranker to use for the file search. If not specified will use the `auto` ranker.

            - `"auto"`

            - `"default_2024_08_21"`

    - `function_tool: object { function, type }`

      - `function: object { name, description, parameters, strict }`

        - `name: string`

          The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.

        - `description: optional string`

          A description of what the function does, used by the model to choose when and how to call the function.

        - `parameters: optional map[unknown]`

          The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.

          Omitting `parameters` defines a function with an empty parameter list.

        - `strict: optional boolean`

          Whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the `parameters` field. Only a subset of JSON Schema is supported when `strict` is `true`. Learn more about Structured Outputs in the [function calling guide](https://platform.openai.com/docs/guides/function-calling).

      - `type: "function"`

        The type of tool being defined: `function`

  - `response_format: optional "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

    Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

    Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

    Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

    **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

    - `union_member_0: "auto"`

      `auto` is the default value

    - `response_format_text: object { type }`

      Default response format. Used to generate text responses.

      - `type: "text"`

        The type of response format being defined. Always `text`.

    - `response_format_json_object: object { type }`

      JSON object response format. An older method of generating JSON responses.
      Using `json_schema` is recommended for models that support it. Note that the
      model will not generate JSON without a system or user message instructing it
      to do so.

      - `type: "json_object"`

        The type of response format being defined. Always `json_object`.

    - `response_format_json_schema: object { json_schema, type }`

      JSON Schema response format. Used to generate structured JSON responses.
      Learn more about [Structured Outputs](https://platform.openai.com/docs/guides/structured-outputs).

      - `json_schema: object { name, description, schema, strict }`

        Structured Outputs configuration options, including a JSON Schema.

        - `name: string`

          The name of the response format. Must be a-z, A-Z, 0-9, or contain
          underscores and dashes, with a maximum length of 64.

        - `description: optional string`

          A description of what the response format is for, used by the model to
          determine how to respond in the format.

        - `schema: optional map[unknown]`

          The schema for the response format, described as a JSON Schema object.
          Learn how to build JSON schemas [here](https://json-schema.org/).

        - `strict: optional boolean`

          Whether to enable strict schema adherence when generating the output.
          If set to true, the model will always follow the exact schema defined
          in the `schema` field. Only a subset of JSON Schema is supported when
          `strict` is `true`. To learn more, read the [Structured Outputs
          guide](https://platform.openai.com/docs/guides/structured-outputs).

      - `type: "json_schema"`

        The type of response format being defined. Always `json_schema`.

  - `temperature: optional number`

    What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

  - `tool_resources: optional object { code_interpreter, file_search }`

    A set of resources that are used by the assistant's tools. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs.

    - `code_interpreter: optional object { file_ids }`

      - `file_ids: optional array of string`

        A list of [file](https://platform.openai.com/docs/api-reference/files) IDs made available to the `code_interpreter`` tool. There can be a maximum of 20 files associated with the tool.

    - `file_search: optional object { vector_store_ids }`

      - `vector_store_ids: optional array of string`

        The ID of the [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object) attached to this assistant. There can be a maximum of 1 vector store attached to the assistant.

  - `top_p: optional number`

    An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.

    We generally recommend altering this or temperature but not both.

### Example

```cli
openai beta:assistants retrieve \
  --api-key 'My API Key' \
  --assistant-id assistant_id
```

#### Response

```json
{
  "id": "id",
  "created_at": 0,
  "description": "description",
  "instructions": "instructions",
  "metadata": {
    "foo": "string"
  },
  "model": "model",
  "name": "name",
  "object": "assistant",
  "tools": [
    {
      "type": "code_interpreter"
    }
  ],
  "response_format": "auto",
  "temperature": 1,
  "tool_resources": {
    "code_interpreter": {
      "file_ids": [
        "string"
      ]
    },
    "file_search": {
      "vector_store_ids": [
        "string"
      ]
    }
  },
  "top_p": 1
}
```

## Modify assistant

`$ openai beta:assistants update`

**post** `/assistants/{assistant_id}`

Modifies an assistant.

### Parameters

- `--assistant-id: string`

  The ID of the assistant to modify.

- `--description: optional string`

  The description of the assistant. The maximum length is 512 characters.

- `--instructions: optional string`

  The system instructions that the assistant uses. The maximum length is 256,000 characters.

- `--metadata: optional map[string]`

  Set of 16 key-value pairs that can be attached to an object. This can be
  useful for storing additional information about the object in a structured
  format, and querying for objects via API or the dashboard.

  Keys are strings with a maximum length of 64 characters. Values are strings
  with a maximum length of 512 characters.

- `--model: optional string or "gpt-5" or "gpt-5-mini" or "gpt-5-nano" or 39 more`

  ID of the model to use. You can use the [List models](https://platform.openai.com/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](https://platform.openai.com/docs/models) for descriptions of them.

- `--name: optional string`

  The name of the assistant. The maximum length is 256 characters.

- `--reasoning-effort: optional "none" or "minimal" or "low" or 3 more`

  Constrains effort on reasoning for
  [reasoning models](https://platform.openai.com/docs/guides/reasoning).
  Currently supported values are `none`, `minimal`, `low`, `medium`, `high`, and `xhigh`. Reducing
  reasoning effort can result in faster responses and fewer tokens used
  on reasoning in a response.

  - `gpt-5.1` defaults to `none`, which does not perform reasoning. The supported reasoning values for `gpt-5.1` are `none`, `low`, `medium`, and `high`. Tool calls are supported for all reasoning values in gpt-5.1.
  - All models before `gpt-5.1` default to `medium` reasoning effort, and do not support `none`.
  - The `gpt-5-pro` model defaults to (and only supports) `high` reasoning effort.
  - `xhigh` is supported for all models after `gpt-5.1-codex-max`.

- `--response-format: optional "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

  Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

  Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

  Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

  **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

- `--temperature: optional number`

  What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

- `--tool-resources: optional object { code_interpreter, file_search }`

  A set of resources that are used by the assistant's tools. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs.

- `--tool: optional array of AssistantTool`

  A list of tool enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types `code_interpreter`, `file_search`, or `function`.

- `--top-p: optional number`

  An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.

  We generally recommend altering this or temperature but not both.

### Returns

- `assistant: object { id, created_at, description, 10 more }`

  Represents an `assistant` that can call the model and use tools.

  - `id: string`

    The identifier, which can be referenced in API endpoints.

  - `created_at: number`

    The Unix timestamp (in seconds) for when the assistant was created.

  - `description: string`

    The description of the assistant. The maximum length is 512 characters.

  - `instructions: string`

    The system instructions that the assistant uses. The maximum length is 256,000 characters.

  - `metadata: map[string]`

    Set of 16 key-value pairs that can be attached to an object. This can be
    useful for storing additional information about the object in a structured
    format, and querying for objects via API or the dashboard.

    Keys are strings with a maximum length of 64 characters. Values are strings
    with a maximum length of 512 characters.

  - `model: string`

    ID of the model to use. You can use the [List models](https://platform.openai.com/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](https://platform.openai.com/docs/models) for descriptions of them.

  - `name: string`

    The name of the assistant. The maximum length is 256 characters.

  - `object: "assistant"`

    The object type, which is always `assistant`.

  - `tools: array of AssistantTool`

    A list of tool enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types `code_interpreter`, `file_search`, or `function`.

    - `code_interpreter_tool: object { type }`

      - `type: "code_interpreter"`

        The type of tool being defined: `code_interpreter`

    - `file_search_tool: object { type, file_search }`

      - `type: "file_search"`

        The type of tool being defined: `file_search`

      - `file_search: optional object { max_num_results, ranking_options }`

        Overrides for the file search tool.

        - `max_num_results: optional number`

          The maximum number of results the file search tool should output. The default is 20 for `gpt-4*` models and 5 for `gpt-3.5-turbo`. This number should be between 1 and 50 inclusive.

          Note that the file search tool may output fewer than `max_num_results` results. See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

        - `ranking_options: optional object { score_threshold, ranker }`

          The ranking options for the file search. If not specified, the file search tool will use the `auto` ranker and a score_threshold of 0.

          See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

          - `score_threshold: number`

            The score threshold for the file search. All values must be a floating point number between 0 and 1.

          - `ranker: optional "auto" or "default_2024_08_21"`

            The ranker to use for the file search. If not specified will use the `auto` ranker.

            - `"auto"`

            - `"default_2024_08_21"`

    - `function_tool: object { function, type }`

      - `function: object { name, description, parameters, strict }`

        - `name: string`

          The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.

        - `description: optional string`

          A description of what the function does, used by the model to choose when and how to call the function.

        - `parameters: optional map[unknown]`

          The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.

          Omitting `parameters` defines a function with an empty parameter list.

        - `strict: optional boolean`

          Whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the `parameters` field. Only a subset of JSON Schema is supported when `strict` is `true`. Learn more about Structured Outputs in the [function calling guide](https://platform.openai.com/docs/guides/function-calling).

      - `type: "function"`

        The type of tool being defined: `function`

  - `response_format: optional "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

    Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

    Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

    Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

    **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

    - `union_member_0: "auto"`

      `auto` is the default value

    - `response_format_text: object { type }`

      Default response format. Used to generate text responses.

      - `type: "text"`

        The type of response format being defined. Always `text`.

    - `response_format_json_object: object { type }`

      JSON object response format. An older method of generating JSON responses.
      Using `json_schema` is recommended for models that support it. Note that the
      model will not generate JSON without a system or user message instructing it
      to do so.

      - `type: "json_object"`

        The type of response format being defined. Always `json_object`.

    - `response_format_json_schema: object { json_schema, type }`

      JSON Schema response format. Used to generate structured JSON responses.
      Learn more about [Structured Outputs](https://platform.openai.com/docs/guides/structured-outputs).

      - `json_schema: object { name, description, schema, strict }`

        Structured Outputs configuration options, including a JSON Schema.

        - `name: string`

          The name of the response format. Must be a-z, A-Z, 0-9, or contain
          underscores and dashes, with a maximum length of 64.

        - `description: optional string`

          A description of what the response format is for, used by the model to
          determine how to respond in the format.

        - `schema: optional map[unknown]`

          The schema for the response format, described as a JSON Schema object.
          Learn how to build JSON schemas [here](https://json-schema.org/).

        - `strict: optional boolean`

          Whether to enable strict schema adherence when generating the output.
          If set to true, the model will always follow the exact schema defined
          in the `schema` field. Only a subset of JSON Schema is supported when
          `strict` is `true`. To learn more, read the [Structured Outputs
          guide](https://platform.openai.com/docs/guides/structured-outputs).

      - `type: "json_schema"`

        The type of response format being defined. Always `json_schema`.

  - `temperature: optional number`

    What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

  - `tool_resources: optional object { code_interpreter, file_search }`

    A set of resources that are used by the assistant's tools. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs.

    - `code_interpreter: optional object { file_ids }`

      - `file_ids: optional array of string`

        A list of [file](https://platform.openai.com/docs/api-reference/files) IDs made available to the `code_interpreter`` tool. There can be a maximum of 20 files associated with the tool.

    - `file_search: optional object { vector_store_ids }`

      - `vector_store_ids: optional array of string`

        The ID of the [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object) attached to this assistant. There can be a maximum of 1 vector store attached to the assistant.

  - `top_p: optional number`

    An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.

    We generally recommend altering this or temperature but not both.

### Example

```cli
openai beta:assistants update \
  --api-key 'My API Key' \
  --assistant-id assistant_id
```

#### Response

```json
{
  "id": "id",
  "created_at": 0,
  "description": "description",
  "instructions": "instructions",
  "metadata": {
    "foo": "string"
  },
  "model": "model",
  "name": "name",
  "object": "assistant",
  "tools": [
    {
      "type": "code_interpreter"
    }
  ],
  "response_format": "auto",
  "temperature": 1,
  "tool_resources": {
    "code_interpreter": {
      "file_ids": [
        "string"
      ]
    },
    "file_search": {
      "vector_store_ids": [
        "string"
      ]
    }
  },
  "top_p": 1
}
```

## Delete assistant

`$ openai beta:assistants delete`

**delete** `/assistants/{assistant_id}`

Delete an assistant.

### Parameters

- `--assistant-id: string`

  The ID of the assistant to delete.

### Returns

- `assistant_deleted: object { id, deleted, object }`

  - `id: string`

  - `deleted: boolean`

  - `object: "assistant.deleted"`

### Example

```cli
openai beta:assistants delete \
  --api-key 'My API Key' \
  --assistant-id assistant_id
```

#### Response

```json
{
  "id": "id",
  "deleted": true,
  "object": "assistant.deleted"
}
```

## Domain Types

### Assistant

- `assistant: object { id, created_at, description, 10 more }`

  Represents an `assistant` that can call the model and use tools.

  - `id: string`

    The identifier, which can be referenced in API endpoints.

  - `created_at: number`

    The Unix timestamp (in seconds) for when the assistant was created.

  - `description: string`

    The description of the assistant. The maximum length is 512 characters.

  - `instructions: string`

    The system instructions that the assistant uses. The maximum length is 256,000 characters.

  - `metadata: map[string]`

    Set of 16 key-value pairs that can be attached to an object. This can be
    useful for storing additional information about the object in a structured
    format, and querying for objects via API or the dashboard.

    Keys are strings with a maximum length of 64 characters. Values are strings
    with a maximum length of 512 characters.

  - `model: string`

    ID of the model to use. You can use the [List models](https://platform.openai.com/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](https://platform.openai.com/docs/models) for descriptions of them.

  - `name: string`

    The name of the assistant. The maximum length is 256 characters.

  - `object: "assistant"`

    The object type, which is always `assistant`.

  - `tools: array of AssistantTool`

    A list of tool enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types `code_interpreter`, `file_search`, or `function`.

    - `code_interpreter_tool: object { type }`

      - `type: "code_interpreter"`

        The type of tool being defined: `code_interpreter`

    - `file_search_tool: object { type, file_search }`

      - `type: "file_search"`

        The type of tool being defined: `file_search`

      - `file_search: optional object { max_num_results, ranking_options }`

        Overrides for the file search tool.

        - `max_num_results: optional number`

          The maximum number of results the file search tool should output. The default is 20 for `gpt-4*` models and 5 for `gpt-3.5-turbo`. This number should be between 1 and 50 inclusive.

          Note that the file search tool may output fewer than `max_num_results` results. See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

        - `ranking_options: optional object { score_threshold, ranker }`

          The ranking options for the file search. If not specified, the file search tool will use the `auto` ranker and a score_threshold of 0.

          See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

          - `score_threshold: number`

            The score threshold for the file search. All values must be a floating point number between 0 and 1.

          - `ranker: optional "auto" or "default_2024_08_21"`

            The ranker to use for the file search. If not specified will use the `auto` ranker.

            - `"auto"`

            - `"default_2024_08_21"`

    - `function_tool: object { function, type }`

      - `function: object { name, description, parameters, strict }`

        - `name: string`

          The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.

        - `description: optional string`

          A description of what the function does, used by the model to choose when and how to call the function.

        - `parameters: optional map[unknown]`

          The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.

          Omitting `parameters` defines a function with an empty parameter list.

        - `strict: optional boolean`

          Whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the `parameters` field. Only a subset of JSON Schema is supported when `strict` is `true`. Learn more about Structured Outputs in the [function calling guide](https://platform.openai.com/docs/guides/function-calling).

      - `type: "function"`

        The type of tool being defined: `function`

  - `response_format: optional "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

    Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

    Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

    Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

    **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

    - `union_member_0: "auto"`

      `auto` is the default value

    - `response_format_text: object { type }`

      Default response format. Used to generate text responses.

      - `type: "text"`

        The type of response format being defined. Always `text`.

    - `response_format_json_object: object { type }`

      JSON object response format. An older method of generating JSON responses.
      Using `json_schema` is recommended for models that support it. Note that the
      model will not generate JSON without a system or user message instructing it
      to do so.

      - `type: "json_object"`

        The type of response format being defined. Always `json_object`.

    - `response_format_json_schema: object { json_schema, type }`

      JSON Schema response format. Used to generate structured JSON responses.
      Learn more about [Structured Outputs](https://platform.openai.com/docs/guides/structured-outputs).

      - `json_schema: object { name, description, schema, strict }`

        Structured Outputs configuration options, including a JSON Schema.

        - `name: string`

          The name of the response format. Must be a-z, A-Z, 0-9, or contain
          underscores and dashes, with a maximum length of 64.

        - `description: optional string`

          A description of what the response format is for, used by the model to
          determine how to respond in the format.

        - `schema: optional map[unknown]`

          The schema for the response format, described as a JSON Schema object.
          Learn how to build JSON schemas [here](https://json-schema.org/).

        - `strict: optional boolean`

          Whether to enable strict schema adherence when generating the output.
          If set to true, the model will always follow the exact schema defined
          in the `schema` field. Only a subset of JSON Schema is supported when
          `strict` is `true`. To learn more, read the [Structured Outputs
          guide](https://platform.openai.com/docs/guides/structured-outputs).

      - `type: "json_schema"`

        The type of response format being defined. Always `json_schema`.

  - `temperature: optional number`

    What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

  - `tool_resources: optional object { code_interpreter, file_search }`

    A set of resources that are used by the assistant's tools. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs.

    - `code_interpreter: optional object { file_ids }`

      - `file_ids: optional array of string`

        A list of [file](https://platform.openai.com/docs/api-reference/files) IDs made available to the `code_interpreter`` tool. There can be a maximum of 20 files associated with the tool.

    - `file_search: optional object { vector_store_ids }`

      - `vector_store_ids: optional array of string`

        The ID of the [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object) attached to this assistant. There can be a maximum of 1 vector store attached to the assistant.

  - `top_p: optional number`

    An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.

    We generally recommend altering this or temperature but not both.

### Assistant Deleted

- `assistant_deleted: object { id, deleted, object }`

  - `id: string`

  - `deleted: boolean`

  - `object: "assistant.deleted"`

### Assistant Stream Event

- `assistant_stream_event: object { data, event, enabled }  or object { data, event }  or object { data, event }  or 21 more`

  Represents an event emitted when streaming a Run.

  Each event in a server-sent events stream has an `event` and `data` property:

  ```
  event: thread.created
  data: {"id": "thread_123", "object": "thread", ...}
  ```

  We emit events whenever a new object is created, transitions to a new state, or is being
  streamed in parts (deltas). For example, we emit `thread.run.created` when a new run
  is created, `thread.run.completed` when a run completes, and so on. When an Assistant chooses
  to create a message during a run, we emit a `thread.message.created event`, a
  `thread.message.in_progress` event, many `thread.message.delta` events, and finally a
  `thread.message.completed` event.

  We may add additional events over time, so we recommend handling unknown events gracefully
  in your code. See the [Assistants API quickstart](https://platform.openai.com/docs/assistants/overview) to learn how to
  integrate the Assistants API with streaming.

  - `thread.created: object { data, event, enabled }`

    Occurs when a new [thread](https://platform.openai.com/docs/api-reference/threads/object) is created.

    - `data: object { id, created_at, metadata, 2 more }`

      Represents a thread that contains [messages](https://platform.openai.com/docs/api-reference/messages).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the thread was created.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread"`

        The object type, which is always `thread`.

      - `tool_resources: object { code_interpreter, file_search }`

        A set of resources that are made available to the assistant's tools in this thread. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs.

        - `code_interpreter: optional object { file_ids }`

          - `file_ids: optional array of string`

            A list of [file](https://platform.openai.com/docs/api-reference/files) IDs made available to the `code_interpreter` tool. There can be a maximum of 20 files associated with the tool.

        - `file_search: optional object { vector_store_ids }`

          - `vector_store_ids: optional array of string`

            The [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object) attached to this thread. There can be a maximum of 1 vector store attached to the thread.

    - `event: "thread.created"`

    - `enabled: optional boolean`

      Whether to enable input audio transcription.

  - `thread.run.created: object { data, event }`

    Occurs when a new [run](https://platform.openai.com/docs/api-reference/runs/object) is created.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

        - `reason: optional "max_completion_tokens" or "max_prompt_tokens"`

          The reason why the run is incomplete. This will point to which specific token limit was reached over the course of the run.

          - `"max_completion_tokens"`

          - `"max_prompt_tokens"`

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

        - `code: "server_error" or "rate_limit_exceeded" or "invalid_prompt"`

          One of `server_error`, `rate_limit_exceeded`, or `invalid_prompt`.

          - `"server_error"`

          - `"rate_limit_exceeded"`

          - `"invalid_prompt"`

        - `message: string`

          A human-readable description of the error.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

        - `submit_tool_outputs: object { tool_calls }`

          Details on the tool outputs needed for this run to continue.

          - `tool_calls: array of RequiredActionFunctionToolCall`

            A list of the relevant tool calls.

            - `id: string`

              The ID of the tool call. This ID must be referenced when you submit the tool outputs in using the [Submit tool outputs to run](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs) endpoint.

            - `function: object { arguments, name }`

              The function definition.

              - `arguments: string`

                The arguments that the model expects you to pass to the function.

              - `name: string`

                The name of the function.

            - `type: "function"`

              The type of tool call the output is required for. For now, this is always `function`.

        - `type: "submit_tool_outputs"`

          For now, this is always `submit_tool_outputs`.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

        - `union_member_0: "auto"`

          `auto` is the default value

        - `response_format_text: object { type }`

          Default response format. Used to generate text responses.

          - `type: "text"`

            The type of response format being defined. Always `text`.

        - `response_format_json_object: object { type }`

          JSON object response format. An older method of generating JSON responses.
          Using `json_schema` is recommended for models that support it. Note that the
          model will not generate JSON without a system or user message instructing it
          to do so.

          - `type: "json_object"`

            The type of response format being defined. Always `json_object`.

        - `response_format_json_schema: object { json_schema, type }`

          JSON Schema response format. Used to generate structured JSON responses.
          Learn more about [Structured Outputs](https://platform.openai.com/docs/guides/structured-outputs).

          - `json_schema: object { name, description, schema, strict }`

            Structured Outputs configuration options, including a JSON Schema.

            - `name: string`

              The name of the response format. Must be a-z, A-Z, 0-9, or contain
              underscores and dashes, with a maximum length of 64.

            - `description: optional string`

              A description of what the response format is for, used by the model to
              determine how to respond in the format.

            - `schema: optional map[unknown]`

              The schema for the response format, described as a JSON Schema object.
              Learn how to build JSON schemas [here](https://json-schema.org/).

            - `strict: optional boolean`

              Whether to enable strict schema adherence when generating the output.
              If set to true, the model will always follow the exact schema defined
              in the `schema` field. Only a subset of JSON Schema is supported when
              `strict` is `true`. To learn more, read the [Structured Outputs
              guide](https://platform.openai.com/docs/guides/structured-outputs).

          - `type: "json_schema"`

            The type of response format being defined. Always `json_schema`.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

        - `"queued"`

        - `"in_progress"`

        - `"requires_action"`

        - `"cancelling"`

        - `"cancelled"`

        - `"failed"`

        - `"completed"`

        - `"incomplete"`

        - `"expired"`

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

        - `Auto: "none" or "auto" or "required"`

          `none` means the model will not call any tools and instead generates a message. `auto` means the model can pick between generating a message or calling one or more tools. `required` means the model must call one or more tools before responding to the user.

          - `"none"`

          - `"auto"`

          - `"required"`

        - `assistant_tool_choice: object { type, function }`

          Specifies a tool the model should use. Use to force the model to call a specific tool.

          - `type: "function" or "code_interpreter" or "file_search"`

            The type of the tool. If type is `function`, the function name must be set

            - `"function"`

            - `"code_interpreter"`

            - `"file_search"`

          - `function: optional object { name }`

            - `name: string`

              The name of the function to call.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

        - `code_interpreter_tool: object { type }`

          - `type: "code_interpreter"`

            The type of tool being defined: `code_interpreter`

        - `file_search_tool: object { type, file_search }`

          - `type: "file_search"`

            The type of tool being defined: `file_search`

          - `file_search: optional object { max_num_results, ranking_options }`

            Overrides for the file search tool.

            - `max_num_results: optional number`

              The maximum number of results the file search tool should output. The default is 20 for `gpt-4*` models and 5 for `gpt-3.5-turbo`. This number should be between 1 and 50 inclusive.

              Note that the file search tool may output fewer than `max_num_results` results. See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

            - `ranking_options: optional object { score_threshold, ranker }`

              The ranking options for the file search. If not specified, the file search tool will use the `auto` ranker and a score_threshold of 0.

              See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

              - `score_threshold: number`

                The score threshold for the file search. All values must be a floating point number between 0 and 1.

              - `ranker: optional "auto" or "default_2024_08_21"`

                The ranker to use for the file search. If not specified will use the `auto` ranker.

                - `"auto"`

                - `"default_2024_08_21"`

        - `function_tool: object { function, type }`

          - `function: object { name, description, parameters, strict }`

            - `name: string`

              The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.

            - `description: optional string`

              A description of what the function does, used by the model to choose when and how to call the function.

            - `parameters: optional map[unknown]`

              The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.

              Omitting `parameters` defines a function with an empty parameter list.

            - `strict: optional boolean`

              Whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the `parameters` field. Only a subset of JSON Schema is supported when `strict` is `true`. Learn more about Structured Outputs in the [function calling guide](https://platform.openai.com/docs/guides/function-calling).

          - `type: "function"`

            The type of tool being defined: `function`

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

        - `type: "auto" or "last_messages"`

          The truncation strategy to use for the thread. The default is `auto`. If set to `last_messages`, the thread will be truncated to the n most recent messages in the thread. When set to `auto`, messages in the middle of the thread will be dropped to fit the context length of the model, `max_prompt_tokens`.

          - `"auto"`

          - `"last_messages"`

        - `last_messages: optional number`

          The number of most recent messages from the thread when constructing the context for the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

        - `completion_tokens: number`

          Number of completion tokens used over the course of the run.

        - `prompt_tokens: number`

          Number of prompt tokens used over the course of the run.

        - `total_tokens: number`

          Total number of tokens used (prompt + completion).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.created"`

  - `thread.run.queued: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) moves to a `queued` status.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.queued"`

  - `thread.run.in_progress: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) moves to an `in_progress` status.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.in_progress"`

  - `thread.run.requires_action: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) moves to a `requires_action` status.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.requires_action"`

  - `thread.run.completed: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) is completed.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.completed"`

  - `thread.run.incomplete: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) ends with status `incomplete`.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.incomplete"`

  - `thread.run.failed: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) fails.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.failed"`

  - `thread.run.cancelling: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) moves to a `cancelling` status.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.cancelling"`

  - `thread.run.cancelled: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) is cancelled.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.cancelled"`

  - `thread.run.expired: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) expires.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.expired"`

  - `thread.run.step.created: object { data, event }`

    Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) is created.

    - `data: object { id, assistant_id, cancelled_at, 13 more }`

      Represents a step in execution of a run.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) associated with the run step.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run step was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run step completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run step was created.

      - `expired_at: number`

        The Unix timestamp (in seconds) for when the run step expired. A step is considered expired if the parent run is expired.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run step failed.

      - `last_error: object { code, message }`

        The last error associated with this run step. Will be `null` if there are no errors.

        - `code: "server_error" or "rate_limit_exceeded"`

          One of `server_error` or `rate_limit_exceeded`.

          - `"server_error"`

          - `"rate_limit_exceeded"`

        - `message: string`

          A human-readable description of the error.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.run.step"`

        The object type, which is always `thread.run.step`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that this run step is a part of.

      - `status: "in_progress" or "cancelled" or "failed" or 2 more`

        The status of the run step, which can be either `in_progress`, `cancelled`, `failed`, `completed`, or `expired`.

        - `"in_progress"`

        - `"cancelled"`

        - `"failed"`

        - `"completed"`

        - `"expired"`

      - `step_details: MessageCreationStepDetails or ToolCallsStepDetails`

        The details of the run step.

        - `message_creation_step_details: object { message_creation, type }`

          Details of the message creation by the run step.

          - `message_creation: object { message_id }`

            - `message_id: string`

              The ID of the message that was created by this run step.

          - `type: "message_creation"`

            Always `message_creation`.

        - `tool_calls_step_details: object { tool_calls, type }`

          Details of the tool call.

          - `tool_calls: array of ToolCall`

            An array of tool calls the run step was involved in. These can be associated with one of three types of tools: `code_interpreter`, `file_search`, or `function`.

            - `code_interpreter_tool_call: object { id, code_interpreter, type }`

              Details of the Code Interpreter tool call the run step was involved in.

              - `id: string`

                The ID of the tool call.

              - `code_interpreter: object { input, outputs }`

                The Code Interpreter tool call definition.

                - `input: string`

                  The input to the Code Interpreter tool call.

                - `outputs: array of object { logs, type }  or object { image, type }`

                  The outputs from the Code Interpreter tool call. Code Interpreter can output one or more items, including text (`logs`) or images (`image`). Each of these are represented by a different object type.

                  - `logs: object { logs, type }`

                    Text output from the Code Interpreter tool call as part of a run step.

                    - `logs: string`

                      The text output from the Code Interpreter tool call.

                    - `type: "logs"`

                      Always `logs`.

                  - `image: object { image, type }`

                    - `image: object { file_id }`

                      - `file_id: string`

                        The [file](https://platform.openai.com/docs/api-reference/files) ID of the image.

                    - `type: "image"`

                      Always `image`.

              - `type: "code_interpreter"`

                The type of tool call. This is always going to be `code_interpreter` for this type of tool call.

            - `file_search_tool_call: object { id, file_search, type }`

              - `id: string`

                The ID of the tool call object.

              - `file_search: object { ranking_options, results }`

                For now, this is always going to be an empty object.

                - `ranking_options: optional object { ranker, score_threshold }`

                  The ranking options for the file search.

                  - `ranker: "auto" or "default_2024_08_21"`

                    The ranker to use for the file search. If not specified will use the `auto` ranker.

                    - `"auto"`

                    - `"default_2024_08_21"`

                  - `score_threshold: number`

                    The score threshold for the file search. All values must be a floating point number between 0 and 1.

                - `results: optional array of object { file_id, file_name, score, content }`

                  The results of the file search.

                  - `file_id: string`

                    The ID of the file that result was found in.

                  - `file_name: string`

                    The name of the file that result was found in.

                  - `score: number`

                    The score of the result. All values must be a floating point number between 0 and 1.

                  - `content: optional array of object { text, type }`

                    The content of the result that was found. The content is only included if requested via the include query parameter.

                    - `text: optional string`

                      The text content of the file.

                    - `type: optional "text"`

                      The type of the content.

                      - `"text"`

              - `type: "file_search"`

                The type of tool call. This is always going to be `file_search` for this type of tool call.

            - `function_tool_call: object { id, function, type }`

              - `id: string`

                The ID of the tool call object.

              - `function: object { arguments, name, output }`

                The definition of the function that was called.

                - `arguments: string`

                  The arguments passed to the function.

                - `name: string`

                  The name of the function.

                - `output: string`

                  The output of the function. This will be `null` if the outputs have not been [submitted](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs) yet.

              - `type: "function"`

                The type of tool call. This is always going to be `function` for this type of tool call.

          - `type: "tool_calls"`

            Always `tool_calls`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was run.

      - `type: "message_creation" or "tool_calls"`

        The type of run step, which can be either `message_creation` or `tool_calls`.

        - `"message_creation"`

        - `"tool_calls"`

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run step. This value will be `null` while the run step's status is `in_progress`.

        - `completion_tokens: number`

          Number of completion tokens used over the course of the run step.

        - `prompt_tokens: number`

          Number of prompt tokens used over the course of the run step.

        - `total_tokens: number`

          Total number of tokens used (prompt + completion).

    - `event: "thread.run.step.created"`

  - `thread.run.step.in_progress: object { data, event }`

    Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) moves to an `in_progress` state.

    - `data: object { id, assistant_id, cancelled_at, 13 more }`

      Represents a step in execution of a run.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) associated with the run step.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run step was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run step completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run step was created.

      - `expired_at: number`

        The Unix timestamp (in seconds) for when the run step expired. A step is considered expired if the parent run is expired.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run step failed.

      - `last_error: object { code, message }`

        The last error associated with this run step. Will be `null` if there are no errors.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.run.step"`

        The object type, which is always `thread.run.step`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that this run step is a part of.

      - `status: "in_progress" or "cancelled" or "failed" or 2 more`

        The status of the run step, which can be either `in_progress`, `cancelled`, `failed`, `completed`, or `expired`.

      - `step_details: MessageCreationStepDetails or ToolCallsStepDetails`

        The details of the run step.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was run.

      - `type: "message_creation" or "tool_calls"`

        The type of run step, which can be either `message_creation` or `tool_calls`.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run step. This value will be `null` while the run step's status is `in_progress`.

    - `event: "thread.run.step.in_progress"`

  - `thread.run.step.delta: object { data, event }`

    Occurs when parts of a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) are being streamed.

    - `data: object { id, delta, object }`

      Represents a run step delta i.e. any changed fields on a run step during streaming.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `delta: object { step_details }`

        The delta containing the fields that have changed on the run step.

        - `step_details: optional RunStepDeltaMessageDelta or ToolCallDeltaObject`

          The details of the run step.

          - `run_step_delta_message_delta: object { type, message_creation }`

            Details of the message creation by the run step.

            - `type: "message_creation"`

              Always `message_creation`.

            - `message_creation: optional object { message_id }`

              - `message_id: optional string`

                The ID of the message that was created by this run step.

          - `tool_call_delta_object: object { type, tool_calls }`

            Details of the tool call.

            - `type: "tool_calls"`

              Always `tool_calls`.

            - `tool_calls: optional array of ToolCallDelta`

              An array of tool calls the run step was involved in. These can be associated with one of three types of tools: `code_interpreter`, `file_search`, or `function`.

              - `code_interpreter_tool_call_delta: object { index, type, id, code_interpreter }`

                Details of the Code Interpreter tool call the run step was involved in.

                - `index: number`

                  The index of the tool call in the tool calls array.

                - `type: "code_interpreter"`

                  The type of tool call. This is always going to be `code_interpreter` for this type of tool call.

                - `id: optional string`

                  The ID of the tool call.

                - `code_interpreter: optional object { input, outputs }`

                  The Code Interpreter tool call definition.

                  - `input: optional string`

                    The input to the Code Interpreter tool call.

                  - `outputs: optional array of CodeInterpreterLogs or CodeInterpreterOutputImage`

                    The outputs from the Code Interpreter tool call. Code Interpreter can output one or more items, including text (`logs`) or images (`image`). Each of these are represented by a different object type.

                    - `code_interpreter_logs: object { index, type, logs }`

                      Text output from the Code Interpreter tool call as part of a run step.

                      - `index: number`

                        The index of the output in the outputs array.

                      - `type: "logs"`

                        Always `logs`.

                      - `logs: optional string`

                        The text output from the Code Interpreter tool call.

                    - `code_interpreter_output_image: object { index, type, image }`

                      - `index: number`

                        The index of the output in the outputs array.

                      - `type: "image"`

                        Always `image`.

                      - `image: optional object { file_id }`

                        - `file_id: optional string`

                          The [file](https://platform.openai.com/docs/api-reference/files) ID of the image.

              - `file_search_tool_call_delta: object { file_search, index, type, id }`

                - `file_search: unknown`

                  For now, this is always going to be an empty object.

                - `index: number`

                  The index of the tool call in the tool calls array.

                - `type: "file_search"`

                  The type of tool call. This is always going to be `file_search` for this type of tool call.

                - `id: optional string`

                  The ID of the tool call object.

              - `function_tool_call_delta: object { index, type, id, function }`

                - `index: number`

                  The index of the tool call in the tool calls array.

                - `type: "function"`

                  The type of tool call. This is always going to be `function` for this type of tool call.

                - `id: optional string`

                  The ID of the tool call object.

                - `function: optional object { arguments, name, output }`

                  The definition of the function that was called.

                  - `arguments: optional string`

                    The arguments passed to the function.

                  - `name: optional string`

                    The name of the function.

                  - `output: optional string`

                    The output of the function. This will be `null` if the outputs have not been [submitted](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs) yet.

      - `object: "thread.run.step.delta"`

        The object type, which is always `thread.run.step.delta`.

    - `event: "thread.run.step.delta"`

  - `thread.run.step.completed: object { data, event }`

    Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) is completed.

    - `data: object { id, assistant_id, cancelled_at, 13 more }`

      Represents a step in execution of a run.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) associated with the run step.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run step was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run step completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run step was created.

      - `expired_at: number`

        The Unix timestamp (in seconds) for when the run step expired. A step is considered expired if the parent run is expired.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run step failed.

      - `last_error: object { code, message }`

        The last error associated with this run step. Will be `null` if there are no errors.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.run.step"`

        The object type, which is always `thread.run.step`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that this run step is a part of.

      - `status: "in_progress" or "cancelled" or "failed" or 2 more`

        The status of the run step, which can be either `in_progress`, `cancelled`, `failed`, `completed`, or `expired`.

      - `step_details: MessageCreationStepDetails or ToolCallsStepDetails`

        The details of the run step.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was run.

      - `type: "message_creation" or "tool_calls"`

        The type of run step, which can be either `message_creation` or `tool_calls`.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run step. This value will be `null` while the run step's status is `in_progress`.

    - `event: "thread.run.step.completed"`

  - `thread.run.step.failed: object { data, event }`

    Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) fails.

    - `data: object { id, assistant_id, cancelled_at, 13 more }`

      Represents a step in execution of a run.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) associated with the run step.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run step was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run step completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run step was created.

      - `expired_at: number`

        The Unix timestamp (in seconds) for when the run step expired. A step is considered expired if the parent run is expired.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run step failed.

      - `last_error: object { code, message }`

        The last error associated with this run step. Will be `null` if there are no errors.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.run.step"`

        The object type, which is always `thread.run.step`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that this run step is a part of.

      - `status: "in_progress" or "cancelled" or "failed" or 2 more`

        The status of the run step, which can be either `in_progress`, `cancelled`, `failed`, `completed`, or `expired`.

      - `step_details: MessageCreationStepDetails or ToolCallsStepDetails`

        The details of the run step.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was run.

      - `type: "message_creation" or "tool_calls"`

        The type of run step, which can be either `message_creation` or `tool_calls`.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run step. This value will be `null` while the run step's status is `in_progress`.

    - `event: "thread.run.step.failed"`

  - `thread.run.step.cancelled: object { data, event }`

    Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) is cancelled.

    - `data: object { id, assistant_id, cancelled_at, 13 more }`

      Represents a step in execution of a run.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) associated with the run step.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run step was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run step completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run step was created.

      - `expired_at: number`

        The Unix timestamp (in seconds) for when the run step expired. A step is considered expired if the parent run is expired.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run step failed.

      - `last_error: object { code, message }`

        The last error associated with this run step. Will be `null` if there are no errors.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.run.step"`

        The object type, which is always `thread.run.step`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that this run step is a part of.

      - `status: "in_progress" or "cancelled" or "failed" or 2 more`

        The status of the run step, which can be either `in_progress`, `cancelled`, `failed`, `completed`, or `expired`.

      - `step_details: MessageCreationStepDetails or ToolCallsStepDetails`

        The details of the run step.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was run.

      - `type: "message_creation" or "tool_calls"`

        The type of run step, which can be either `message_creation` or `tool_calls`.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run step. This value will be `null` while the run step's status is `in_progress`.

    - `event: "thread.run.step.cancelled"`

  - `thread.run.step.expired: object { data, event }`

    Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) expires.

    - `data: object { id, assistant_id, cancelled_at, 13 more }`

      Represents a step in execution of a run.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) associated with the run step.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run step was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run step completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run step was created.

      - `expired_at: number`

        The Unix timestamp (in seconds) for when the run step expired. A step is considered expired if the parent run is expired.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run step failed.

      - `last_error: object { code, message }`

        The last error associated with this run step. Will be `null` if there are no errors.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.run.step"`

        The object type, which is always `thread.run.step`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that this run step is a part of.

      - `status: "in_progress" or "cancelled" or "failed" or 2 more`

        The status of the run step, which can be either `in_progress`, `cancelled`, `failed`, `completed`, or `expired`.

      - `step_details: MessageCreationStepDetails or ToolCallsStepDetails`

        The details of the run step.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was run.

      - `type: "message_creation" or "tool_calls"`

        The type of run step, which can be either `message_creation` or `tool_calls`.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run step. This value will be `null` while the run step's status is `in_progress`.

    - `event: "thread.run.step.expired"`

  - `thread.message.created: object { data, event }`

    Occurs when a [message](https://platform.openai.com/docs/api-reference/messages/object) is created.

    - `data: object { id, assistant_id, attachments, 11 more }`

      Represents a message within a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        If applicable, the ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) that authored this message.

      - `attachments: array of object { file_id, tools }`

        A list of files attached to the message, and the tools they were added to.

        - `file_id: optional string`

          The ID of the file to attach to the message.

        - `tools: optional array of CodeInterpreterTool or object { type }`

          The tools to add this file to.

          - `code_interpreter_tool: object { type }`

            - `type: "code_interpreter"`

              The type of tool being defined: `code_interpreter`

          - `AssistantToolsFileSearchTypeOnly: object { type }`

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the message was completed.

      - `content: array of MessageContent`

        The content of the message in array of text and/or images.

        - `image_file_content_block: object { image_file, type }`

          References an image [File](https://platform.openai.com/docs/api-reference/files) in the content of a message.

          - `image_file: object { file_id, detail }`

            - `file_id: string`

              The [File](https://platform.openai.com/docs/api-reference/files) ID of the image in the message content. Set `purpose="vision"` when uploading the File if you need to later display the file content.

            - `detail: optional "auto" or "low" or "high"`

              Specifies the detail level of the image if specified by the user. `low` uses fewer tokens, you can opt in to high resolution using `high`.

              - `"auto"`

              - `"low"`

              - `"high"`

          - `type: "image_file"`

            Always `image_file`.

        - `image_url_content_block: object { image_url, type }`

          References an image URL in the content of a message.

          - `image_url: object { url, detail }`

            - `url: string`

              The external URL of the image, must be a supported image types: jpeg, jpg, png, gif, webp.

            - `detail: optional "auto" or "low" or "high"`

              Specifies the detail level of the image. `low` uses fewer tokens, you can opt in to high resolution using `high`. Default value is `auto`

              - `"auto"`

              - `"low"`

              - `"high"`

          - `type: "image_url"`

            The type of the content part.

        - `text_content_block: object { text, type }`

          The text content that is part of a message.

          - `text: object { annotations, value }`

            - `annotations: array of Annotation`

              - `file_citation_annotation: object { end_index, file_citation, start_index, 2 more }`

                A citation within the message that points to a specific quote from a specific File associated with the assistant or the message. Generated when the assistant uses the "file_search" tool to search files.

                - `end_index: number`

                - `file_citation: object { file_id }`

                  - `file_id: string`

                    The ID of the specific File the citation is from.

                - `start_index: number`

                - `text: string`

                  The text in the message content that needs to be replaced.

                - `type: "file_citation"`

                  Always `file_citation`.

              - `file_path_annotation: object { end_index, file_path, start_index, 2 more }`

                A URL for the file that's generated when the assistant used the `code_interpreter` tool to generate a file.

                - `end_index: number`

                - `file_path: object { file_id }`

                  - `file_id: string`

                    The ID of the file that was generated.

                - `start_index: number`

                - `text: string`

                  The text in the message content that needs to be replaced.

                - `type: "file_path"`

                  Always `file_path`.

            - `value: string`

              The data that makes up the text.

          - `type: "text"`

            Always `text`.

        - `refusal_content_block: object { refusal, type }`

          The refusal content generated by the assistant.

          - `refusal: string`

          - `type: "refusal"`

            Always `refusal`.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the message was created.

      - `incomplete_at: number`

        The Unix timestamp (in seconds) for when the message was marked as incomplete.

      - `incomplete_details: object { reason }`

        On an incomplete message, details about why the message is incomplete.

        - `reason: "content_filter" or "max_tokens" or "run_cancelled" or 2 more`

          The reason the message is incomplete.

          - `"content_filter"`

          - `"max_tokens"`

          - `"run_cancelled"`

          - `"run_expired"`

          - `"run_failed"`

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.message"`

        The object type, which is always `thread.message`.

      - `role: "user" or "assistant"`

        The entity that produced the message. One of `user` or `assistant`.

        - `"user"`

        - `"assistant"`

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) associated with the creation of this message. Value is `null` when messages are created manually using the create message or create thread endpoints.

      - `status: "in_progress" or "incomplete" or "completed"`

        The status of the message, which can be either `in_progress`, `incomplete`, or `completed`.

        - `"in_progress"`

        - `"incomplete"`

        - `"completed"`

      - `thread_id: string`

        The [thread](https://platform.openai.com/docs/api-reference/threads) ID that this message belongs to.

    - `event: "thread.message.created"`

  - `thread.message.in_progress: object { data, event }`

    Occurs when a [message](https://platform.openai.com/docs/api-reference/messages/object) moves to an `in_progress` state.

    - `data: object { id, assistant_id, attachments, 11 more }`

      Represents a message within a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        If applicable, the ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) that authored this message.

      - `attachments: array of object { file_id, tools }`

        A list of files attached to the message, and the tools they were added to.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the message was completed.

      - `content: array of MessageContent`

        The content of the message in array of text and/or images.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the message was created.

      - `incomplete_at: number`

        The Unix timestamp (in seconds) for when the message was marked as incomplete.

      - `incomplete_details: object { reason }`

        On an incomplete message, details about why the message is incomplete.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.message"`

        The object type, which is always `thread.message`.

      - `role: "user" or "assistant"`

        The entity that produced the message. One of `user` or `assistant`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) associated with the creation of this message. Value is `null` when messages are created manually using the create message or create thread endpoints.

      - `status: "in_progress" or "incomplete" or "completed"`

        The status of the message, which can be either `in_progress`, `incomplete`, or `completed`.

      - `thread_id: string`

        The [thread](https://platform.openai.com/docs/api-reference/threads) ID that this message belongs to.

    - `event: "thread.message.in_progress"`

  - `thread.message.delta: object { data, event }`

    Occurs when parts of a [Message](https://platform.openai.com/docs/api-reference/messages/object) are being streamed.

    - `data: object { id, delta, object }`

      Represents a message delta i.e. any changed fields on a message during streaming.

      - `id: string`

        The identifier of the message, which can be referenced in API endpoints.

      - `delta: object { content, role }`

        The delta containing the fields that have changed on the Message.

        - `content: optional array of MessageContentDelta`

          The content of the message in array of text and/or images.

          - `image_file_delta_block: object { index, type, image_file }`

            References an image [File](https://platform.openai.com/docs/api-reference/files) in the content of a message.

            - `index: number`

              The index of the content part in the message.

            - `type: "image_file"`

              Always `image_file`.

            - `image_file: optional object { detail, file_id }`

              - `detail: optional "auto" or "low" or "high"`

                Specifies the detail level of the image if specified by the user. `low` uses fewer tokens, you can opt in to high resolution using `high`.

                - `"auto"`

                - `"low"`

                - `"high"`

              - `file_id: optional string`

                The [File](https://platform.openai.com/docs/api-reference/files) ID of the image in the message content. Set `purpose="vision"` when uploading the File if you need to later display the file content.

          - `text_delta_block: object { index, type, text }`

            The text content that is part of a message.

            - `index: number`

              The index of the content part in the message.

            - `type: "text"`

              Always `text`.

            - `text: optional object { annotations, value }`

              - `annotations: optional array of AnnotationDelta`

                - `file_citation_delta_annotation: object { index, type, end_index, 3 more }`

                  A citation within the message that points to a specific quote from a specific File associated with the assistant or the message. Generated when the assistant uses the "file_search" tool to search files.

                  - `index: number`

                    The index of the annotation in the text content part.

                  - `type: "file_citation"`

                    Always `file_citation`.

                  - `end_index: optional number`

                  - `file_citation: optional object { file_id, quote }`

                    - `file_id: optional string`

                      The ID of the specific File the citation is from.

                    - `quote: optional string`

                      The specific quote in the file.

                  - `start_index: optional number`

                  - `text: optional string`

                    The text in the message content that needs to be replaced.

                - `file_path_delta_annotation: object { index, type, end_index, 3 more }`

                  A URL for the file that's generated when the assistant used the `code_interpreter` tool to generate a file.

                  - `index: number`

                    The index of the annotation in the text content part.

                  - `type: "file_path"`

                    Always `file_path`.

                  - `end_index: optional number`

                  - `file_path: optional object { file_id }`

                    - `file_id: optional string`

                      The ID of the file that was generated.

                  - `start_index: optional number`

                  - `text: optional string`

                    The text in the message content that needs to be replaced.

              - `value: optional string`

                The data that makes up the text.

          - `refusal_delta_block: object { index, type, refusal }`

            The refusal content that is part of a message.

            - `index: number`

              The index of the refusal part in the message.

            - `type: "refusal"`

              Always `refusal`.

            - `refusal: optional string`

          - `image_url_delta_block: object { index, type, image_url }`

            References an image URL in the content of a message.

            - `index: number`

              The index of the content part in the message.

            - `type: "image_url"`

              Always `image_url`.

            - `image_url: optional object { detail, url }`

              - `detail: optional "auto" or "low" or "high"`

                Specifies the detail level of the image. `low` uses fewer tokens, you can opt in to high resolution using `high`.

                - `"auto"`

                - `"low"`

                - `"high"`

              - `url: optional string`

                The URL of the image, must be a supported image types: jpeg, jpg, png, gif, webp.

        - `role: optional "user" or "assistant"`

          The entity that produced the message. One of `user` or `assistant`.

          - `"user"`

          - `"assistant"`

      - `object: "thread.message.delta"`

        The object type, which is always `thread.message.delta`.

    - `event: "thread.message.delta"`

  - `thread.message.completed: object { data, event }`

    Occurs when a [message](https://platform.openai.com/docs/api-reference/messages/object) is completed.

    - `data: object { id, assistant_id, attachments, 11 more }`

      Represents a message within a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        If applicable, the ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) that authored this message.

      - `attachments: array of object { file_id, tools }`

        A list of files attached to the message, and the tools they were added to.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the message was completed.

      - `content: array of MessageContent`

        The content of the message in array of text and/or images.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the message was created.

      - `incomplete_at: number`

        The Unix timestamp (in seconds) for when the message was marked as incomplete.

      - `incomplete_details: object { reason }`

        On an incomplete message, details about why the message is incomplete.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.message"`

        The object type, which is always `thread.message`.

      - `role: "user" or "assistant"`

        The entity that produced the message. One of `user` or `assistant`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) associated with the creation of this message. Value is `null` when messages are created manually using the create message or create thread endpoints.

      - `status: "in_progress" or "incomplete" or "completed"`

        The status of the message, which can be either `in_progress`, `incomplete`, or `completed`.

      - `thread_id: string`

        The [thread](https://platform.openai.com/docs/api-reference/threads) ID that this message belongs to.

    - `event: "thread.message.completed"`

  - `thread.message.incomplete: object { data, event }`

    Occurs when a [message](https://platform.openai.com/docs/api-reference/messages/object) ends before it is completed.

    - `data: object { id, assistant_id, attachments, 11 more }`

      Represents a message within a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        If applicable, the ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) that authored this message.

      - `attachments: array of object { file_id, tools }`

        A list of files attached to the message, and the tools they were added to.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the message was completed.

      - `content: array of MessageContent`

        The content of the message in array of text and/or images.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the message was created.

      - `incomplete_at: number`

        The Unix timestamp (in seconds) for when the message was marked as incomplete.

      - `incomplete_details: object { reason }`

        On an incomplete message, details about why the message is incomplete.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.message"`

        The object type, which is always `thread.message`.

      - `role: "user" or "assistant"`

        The entity that produced the message. One of `user` or `assistant`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) associated with the creation of this message. Value is `null` when messages are created manually using the create message or create thread endpoints.

      - `status: "in_progress" or "incomplete" or "completed"`

        The status of the message, which can be either `in_progress`, `incomplete`, or `completed`.

      - `thread_id: string`

        The [thread](https://platform.openai.com/docs/api-reference/threads) ID that this message belongs to.

    - `event: "thread.message.incomplete"`

  - `error_event: object { data, event }`

    Occurs when an [error](https://platform.openai.com/docs/guides/error-codes#api-errors) occurs. This can happen due to an internal server error or a timeout.

    - `data: object { code, message, param, type }`

      - `code: string`

      - `message: string`

      - `param: string`

      - `type: string`

    - `event: "error"`

### Assistant Tool

- `assistant_tool: CodeInterpreterTool or FileSearchTool or FunctionTool`

  - `code_interpreter_tool: object { type }`

    - `type: "code_interpreter"`

      The type of tool being defined: `code_interpreter`

  - `file_search_tool: object { type, file_search }`

    - `type: "file_search"`

      The type of tool being defined: `file_search`

    - `file_search: optional object { max_num_results, ranking_options }`

      Overrides for the file search tool.

      - `max_num_results: optional number`

        The maximum number of results the file search tool should output. The default is 20 for `gpt-4*` models and 5 for `gpt-3.5-turbo`. This number should be between 1 and 50 inclusive.

        Note that the file search tool may output fewer than `max_num_results` results. See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

      - `ranking_options: optional object { score_threshold, ranker }`

        The ranking options for the file search. If not specified, the file search tool will use the `auto` ranker and a score_threshold of 0.

        See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

        - `score_threshold: number`

          The score threshold for the file search. All values must be a floating point number between 0 and 1.

        - `ranker: optional "auto" or "default_2024_08_21"`

          The ranker to use for the file search. If not specified will use the `auto` ranker.

          - `"auto"`

          - `"default_2024_08_21"`

  - `function_tool: object { function, type }`

    - `function: object { name, description, parameters, strict }`

      - `name: string`

        The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.

      - `description: optional string`

        A description of what the function does, used by the model to choose when and how to call the function.

      - `parameters: optional map[unknown]`

        The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.

        Omitting `parameters` defines a function with an empty parameter list.

      - `strict: optional boolean`

        Whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the `parameters` field. Only a subset of JSON Schema is supported when `strict` is `true`. Learn more about Structured Outputs in the [function calling guide](https://platform.openai.com/docs/guides/function-calling).

    - `type: "function"`

      The type of tool being defined: `function`

### Code Interpreter Tool

- `code_interpreter_tool: object { type }`

  - `type: "code_interpreter"`

    The type of tool being defined: `code_interpreter`

### File Search Tool

- `file_search_tool: object { type, file_search }`

  - `type: "file_search"`

    The type of tool being defined: `file_search`

  - `file_search: optional object { max_num_results, ranking_options }`

    Overrides for the file search tool.

    - `max_num_results: optional number`

      The maximum number of results the file search tool should output. The default is 20 for `gpt-4*` models and 5 for `gpt-3.5-turbo`. This number should be between 1 and 50 inclusive.

      Note that the file search tool may output fewer than `max_num_results` results. See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

    - `ranking_options: optional object { score_threshold, ranker }`

      The ranking options for the file search. If not specified, the file search tool will use the `auto` ranker and a score_threshold of 0.

      See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

      - `score_threshold: number`

        The score threshold for the file search. All values must be a floating point number between 0 and 1.

      - `ranker: optional "auto" or "default_2024_08_21"`

        The ranker to use for the file search. If not specified will use the `auto` ranker.

        - `"auto"`

        - `"default_2024_08_21"`

### Function Tool

- `function_tool: object { function, type }`

  - `function: object { name, description, parameters, strict }`

    - `name: string`

      The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.

    - `description: optional string`

      A description of what the function does, used by the model to choose when and how to call the function.

    - `parameters: optional map[unknown]`

      The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.

      Omitting `parameters` defines a function with an empty parameter list.

    - `strict: optional boolean`

      Whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the `parameters` field. Only a subset of JSON Schema is supported when `strict` is `true`. Learn more about Structured Outputs in the [function calling guide](https://platform.openai.com/docs/guides/function-calling).

  - `type: "function"`

    The type of tool being defined: `function`

### Message Stream Event

- `message_stream_event: object { data, event }  or object { data, event }  or object { data, event }  or 2 more`

  Occurs when a [message](https://platform.openai.com/docs/api-reference/messages/object) is created.

  - `thread.message.created: object { data, event }`

    Occurs when a [message](https://platform.openai.com/docs/api-reference/messages/object) is created.

    - `data: object { id, assistant_id, attachments, 11 more }`

      Represents a message within a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        If applicable, the ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) that authored this message.

      - `attachments: array of object { file_id, tools }`

        A list of files attached to the message, and the tools they were added to.

        - `file_id: optional string`

          The ID of the file to attach to the message.

        - `tools: optional array of CodeInterpreterTool or object { type }`

          The tools to add this file to.

          - `code_interpreter_tool: object { type }`

            - `type: "code_interpreter"`

              The type of tool being defined: `code_interpreter`

          - `AssistantToolsFileSearchTypeOnly: object { type }`

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the message was completed.

      - `content: array of MessageContent`

        The content of the message in array of text and/or images.

        - `image_file_content_block: object { image_file, type }`

          References an image [File](https://platform.openai.com/docs/api-reference/files) in the content of a message.

          - `image_file: object { file_id, detail }`

            - `file_id: string`

              The [File](https://platform.openai.com/docs/api-reference/files) ID of the image in the message content. Set `purpose="vision"` when uploading the File if you need to later display the file content.

            - `detail: optional "auto" or "low" or "high"`

              Specifies the detail level of the image if specified by the user. `low` uses fewer tokens, you can opt in to high resolution using `high`.

              - `"auto"`

              - `"low"`

              - `"high"`

          - `type: "image_file"`

            Always `image_file`.

        - `image_url_content_block: object { image_url, type }`

          References an image URL in the content of a message.

          - `image_url: object { url, detail }`

            - `url: string`

              The external URL of the image, must be a supported image types: jpeg, jpg, png, gif, webp.

            - `detail: optional "auto" or "low" or "high"`

              Specifies the detail level of the image. `low` uses fewer tokens, you can opt in to high resolution using `high`. Default value is `auto`

              - `"auto"`

              - `"low"`

              - `"high"`

          - `type: "image_url"`

            The type of the content part.

        - `text_content_block: object { text, type }`

          The text content that is part of a message.

          - `text: object { annotations, value }`

            - `annotations: array of Annotation`

              - `file_citation_annotation: object { end_index, file_citation, start_index, 2 more }`

                A citation within the message that points to a specific quote from a specific File associated with the assistant or the message. Generated when the assistant uses the "file_search" tool to search files.

                - `end_index: number`

                - `file_citation: object { file_id }`

                  - `file_id: string`

                    The ID of the specific File the citation is from.

                - `start_index: number`

                - `text: string`

                  The text in the message content that needs to be replaced.

                - `type: "file_citation"`

                  Always `file_citation`.

              - `file_path_annotation: object { end_index, file_path, start_index, 2 more }`

                A URL for the file that's generated when the assistant used the `code_interpreter` tool to generate a file.

                - `end_index: number`

                - `file_path: object { file_id }`

                  - `file_id: string`

                    The ID of the file that was generated.

                - `start_index: number`

                - `text: string`

                  The text in the message content that needs to be replaced.

                - `type: "file_path"`

                  Always `file_path`.

            - `value: string`

              The data that makes up the text.

          - `type: "text"`

            Always `text`.

        - `refusal_content_block: object { refusal, type }`

          The refusal content generated by the assistant.

          - `refusal: string`

          - `type: "refusal"`

            Always `refusal`.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the message was created.

      - `incomplete_at: number`

        The Unix timestamp (in seconds) for when the message was marked as incomplete.

      - `incomplete_details: object { reason }`

        On an incomplete message, details about why the message is incomplete.

        - `reason: "content_filter" or "max_tokens" or "run_cancelled" or 2 more`

          The reason the message is incomplete.

          - `"content_filter"`

          - `"max_tokens"`

          - `"run_cancelled"`

          - `"run_expired"`

          - `"run_failed"`

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.message"`

        The object type, which is always `thread.message`.

      - `role: "user" or "assistant"`

        The entity that produced the message. One of `user` or `assistant`.

        - `"user"`

        - `"assistant"`

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) associated with the creation of this message. Value is `null` when messages are created manually using the create message or create thread endpoints.

      - `status: "in_progress" or "incomplete" or "completed"`

        The status of the message, which can be either `in_progress`, `incomplete`, or `completed`.

        - `"in_progress"`

        - `"incomplete"`

        - `"completed"`

      - `thread_id: string`

        The [thread](https://platform.openai.com/docs/api-reference/threads) ID that this message belongs to.

    - `event: "thread.message.created"`

  - `thread.message.in_progress: object { data, event }`

    Occurs when a [message](https://platform.openai.com/docs/api-reference/messages/object) moves to an `in_progress` state.

    - `data: object { id, assistant_id, attachments, 11 more }`

      Represents a message within a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        If applicable, the ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) that authored this message.

      - `attachments: array of object { file_id, tools }`

        A list of files attached to the message, and the tools they were added to.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the message was completed.

      - `content: array of MessageContent`

        The content of the message in array of text and/or images.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the message was created.

      - `incomplete_at: number`

        The Unix timestamp (in seconds) for when the message was marked as incomplete.

      - `incomplete_details: object { reason }`

        On an incomplete message, details about why the message is incomplete.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.message"`

        The object type, which is always `thread.message`.

      - `role: "user" or "assistant"`

        The entity that produced the message. One of `user` or `assistant`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) associated with the creation of this message. Value is `null` when messages are created manually using the create message or create thread endpoints.

      - `status: "in_progress" or "incomplete" or "completed"`

        The status of the message, which can be either `in_progress`, `incomplete`, or `completed`.

      - `thread_id: string`

        The [thread](https://platform.openai.com/docs/api-reference/threads) ID that this message belongs to.

    - `event: "thread.message.in_progress"`

  - `thread.message.delta: object { data, event }`

    Occurs when parts of a [Message](https://platform.openai.com/docs/api-reference/messages/object) are being streamed.

    - `data: object { id, delta, object }`

      Represents a message delta i.e. any changed fields on a message during streaming.

      - `id: string`

        The identifier of the message, which can be referenced in API endpoints.

      - `delta: object { content, role }`

        The delta containing the fields that have changed on the Message.

        - `content: optional array of MessageContentDelta`

          The content of the message in array of text and/or images.

          - `image_file_delta_block: object { index, type, image_file }`

            References an image [File](https://platform.openai.com/docs/api-reference/files) in the content of a message.

            - `index: number`

              The index of the content part in the message.

            - `type: "image_file"`

              Always `image_file`.

            - `image_file: optional object { detail, file_id }`

              - `detail: optional "auto" or "low" or "high"`

                Specifies the detail level of the image if specified by the user. `low` uses fewer tokens, you can opt in to high resolution using `high`.

                - `"auto"`

                - `"low"`

                - `"high"`

              - `file_id: optional string`

                The [File](https://platform.openai.com/docs/api-reference/files) ID of the image in the message content. Set `purpose="vision"` when uploading the File if you need to later display the file content.

          - `text_delta_block: object { index, type, text }`

            The text content that is part of a message.

            - `index: number`

              The index of the content part in the message.

            - `type: "text"`

              Always `text`.

            - `text: optional object { annotations, value }`

              - `annotations: optional array of AnnotationDelta`

                - `file_citation_delta_annotation: object { index, type, end_index, 3 more }`

                  A citation within the message that points to a specific quote from a specific File associated with the assistant or the message. Generated when the assistant uses the "file_search" tool to search files.

                  - `index: number`

                    The index of the annotation in the text content part.

                  - `type: "file_citation"`

                    Always `file_citation`.

                  - `end_index: optional number`

                  - `file_citation: optional object { file_id, quote }`

                    - `file_id: optional string`

                      The ID of the specific File the citation is from.

                    - `quote: optional string`

                      The specific quote in the file.

                  - `start_index: optional number`

                  - `text: optional string`

                    The text in the message content that needs to be replaced.

                - `file_path_delta_annotation: object { index, type, end_index, 3 more }`

                  A URL for the file that's generated when the assistant used the `code_interpreter` tool to generate a file.

                  - `index: number`

                    The index of the annotation in the text content part.

                  - `type: "file_path"`

                    Always `file_path`.

                  - `end_index: optional number`

                  - `file_path: optional object { file_id }`

                    - `file_id: optional string`

                      The ID of the file that was generated.

                  - `start_index: optional number`

                  - `text: optional string`

                    The text in the message content that needs to be replaced.

              - `value: optional string`

                The data that makes up the text.

          - `refusal_delta_block: object { index, type, refusal }`

            The refusal content that is part of a message.

            - `index: number`

              The index of the refusal part in the message.

            - `type: "refusal"`

              Always `refusal`.

            - `refusal: optional string`

          - `image_url_delta_block: object { index, type, image_url }`

            References an image URL in the content of a message.

            - `index: number`

              The index of the content part in the message.

            - `type: "image_url"`

              Always `image_url`.

            - `image_url: optional object { detail, url }`

              - `detail: optional "auto" or "low" or "high"`

                Specifies the detail level of the image. `low` uses fewer tokens, you can opt in to high resolution using `high`.

                - `"auto"`

                - `"low"`

                - `"high"`

              - `url: optional string`

                The URL of the image, must be a supported image types: jpeg, jpg, png, gif, webp.

        - `role: optional "user" or "assistant"`

          The entity that produced the message. One of `user` or `assistant`.

          - `"user"`

          - `"assistant"`

      - `object: "thread.message.delta"`

        The object type, which is always `thread.message.delta`.

    - `event: "thread.message.delta"`

  - `thread.message.completed: object { data, event }`

    Occurs when a [message](https://platform.openai.com/docs/api-reference/messages/object) is completed.

    - `data: object { id, assistant_id, attachments, 11 more }`

      Represents a message within a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        If applicable, the ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) that authored this message.

      - `attachments: array of object { file_id, tools }`

        A list of files attached to the message, and the tools they were added to.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the message was completed.

      - `content: array of MessageContent`

        The content of the message in array of text and/or images.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the message was created.

      - `incomplete_at: number`

        The Unix timestamp (in seconds) for when the message was marked as incomplete.

      - `incomplete_details: object { reason }`

        On an incomplete message, details about why the message is incomplete.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.message"`

        The object type, which is always `thread.message`.

      - `role: "user" or "assistant"`

        The entity that produced the message. One of `user` or `assistant`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) associated with the creation of this message. Value is `null` when messages are created manually using the create message or create thread endpoints.

      - `status: "in_progress" or "incomplete" or "completed"`

        The status of the message, which can be either `in_progress`, `incomplete`, or `completed`.

      - `thread_id: string`

        The [thread](https://platform.openai.com/docs/api-reference/threads) ID that this message belongs to.

    - `event: "thread.message.completed"`

  - `thread.message.incomplete: object { data, event }`

    Occurs when a [message](https://platform.openai.com/docs/api-reference/messages/object) ends before it is completed.

    - `data: object { id, assistant_id, attachments, 11 more }`

      Represents a message within a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        If applicable, the ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) that authored this message.

      - `attachments: array of object { file_id, tools }`

        A list of files attached to the message, and the tools they were added to.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the message was completed.

      - `content: array of MessageContent`

        The content of the message in array of text and/or images.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the message was created.

      - `incomplete_at: number`

        The Unix timestamp (in seconds) for when the message was marked as incomplete.

      - `incomplete_details: object { reason }`

        On an incomplete message, details about why the message is incomplete.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.message"`

        The object type, which is always `thread.message`.

      - `role: "user" or "assistant"`

        The entity that produced the message. One of `user` or `assistant`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) associated with the creation of this message. Value is `null` when messages are created manually using the create message or create thread endpoints.

      - `status: "in_progress" or "incomplete" or "completed"`

        The status of the message, which can be either `in_progress`, `incomplete`, or `completed`.

      - `thread_id: string`

        The [thread](https://platform.openai.com/docs/api-reference/threads) ID that this message belongs to.

    - `event: "thread.message.incomplete"`

### Run Step Stream Event

- `run_step_stream_event: object { data, event }  or object { data, event }  or object { data, event }  or 4 more`

  Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) is created.

  - `thread.run.step.created: object { data, event }`

    Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) is created.

    - `data: object { id, assistant_id, cancelled_at, 13 more }`

      Represents a step in execution of a run.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) associated with the run step.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run step was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run step completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run step was created.

      - `expired_at: number`

        The Unix timestamp (in seconds) for when the run step expired. A step is considered expired if the parent run is expired.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run step failed.

      - `last_error: object { code, message }`

        The last error associated with this run step. Will be `null` if there are no errors.

        - `code: "server_error" or "rate_limit_exceeded"`

          One of `server_error` or `rate_limit_exceeded`.

          - `"server_error"`

          - `"rate_limit_exceeded"`

        - `message: string`

          A human-readable description of the error.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.run.step"`

        The object type, which is always `thread.run.step`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that this run step is a part of.

      - `status: "in_progress" or "cancelled" or "failed" or 2 more`

        The status of the run step, which can be either `in_progress`, `cancelled`, `failed`, `completed`, or `expired`.

        - `"in_progress"`

        - `"cancelled"`

        - `"failed"`

        - `"completed"`

        - `"expired"`

      - `step_details: MessageCreationStepDetails or ToolCallsStepDetails`

        The details of the run step.

        - `message_creation_step_details: object { message_creation, type }`

          Details of the message creation by the run step.

          - `message_creation: object { message_id }`

            - `message_id: string`

              The ID of the message that was created by this run step.

          - `type: "message_creation"`

            Always `message_creation`.

        - `tool_calls_step_details: object { tool_calls, type }`

          Details of the tool call.

          - `tool_calls: array of ToolCall`

            An array of tool calls the run step was involved in. These can be associated with one of three types of tools: `code_interpreter`, `file_search`, or `function`.

            - `code_interpreter_tool_call: object { id, code_interpreter, type }`

              Details of the Code Interpreter tool call the run step was involved in.

              - `id: string`

                The ID of the tool call.

              - `code_interpreter: object { input, outputs }`

                The Code Interpreter tool call definition.

                - `input: string`

                  The input to the Code Interpreter tool call.

                - `outputs: array of object { logs, type }  or object { image, type }`

                  The outputs from the Code Interpreter tool call. Code Interpreter can output one or more items, including text (`logs`) or images (`image`). Each of these are represented by a different object type.

                  - `logs: object { logs, type }`

                    Text output from the Code Interpreter tool call as part of a run step.

                    - `logs: string`

                      The text output from the Code Interpreter tool call.

                    - `type: "logs"`

                      Always `logs`.

                  - `image: object { image, type }`

                    - `image: object { file_id }`

                      - `file_id: string`

                        The [file](https://platform.openai.com/docs/api-reference/files) ID of the image.

                    - `type: "image"`

                      Always `image`.

              - `type: "code_interpreter"`

                The type of tool call. This is always going to be `code_interpreter` for this type of tool call.

            - `file_search_tool_call: object { id, file_search, type }`

              - `id: string`

                The ID of the tool call object.

              - `file_search: object { ranking_options, results }`

                For now, this is always going to be an empty object.

                - `ranking_options: optional object { ranker, score_threshold }`

                  The ranking options for the file search.

                  - `ranker: "auto" or "default_2024_08_21"`

                    The ranker to use for the file search. If not specified will use the `auto` ranker.

                    - `"auto"`

                    - `"default_2024_08_21"`

                  - `score_threshold: number`

                    The score threshold for the file search. All values must be a floating point number between 0 and 1.

                - `results: optional array of object { file_id, file_name, score, content }`

                  The results of the file search.

                  - `file_id: string`

                    The ID of the file that result was found in.

                  - `file_name: string`

                    The name of the file that result was found in.

                  - `score: number`

                    The score of the result. All values must be a floating point number between 0 and 1.

                  - `content: optional array of object { text, type }`

                    The content of the result that was found. The content is only included if requested via the include query parameter.

                    - `text: optional string`

                      The text content of the file.

                    - `type: optional "text"`

                      The type of the content.

                      - `"text"`

              - `type: "file_search"`

                The type of tool call. This is always going to be `file_search` for this type of tool call.

            - `function_tool_call: object { id, function, type }`

              - `id: string`

                The ID of the tool call object.

              - `function: object { arguments, name, output }`

                The definition of the function that was called.

                - `arguments: string`

                  The arguments passed to the function.

                - `name: string`

                  The name of the function.

                - `output: string`

                  The output of the function. This will be `null` if the outputs have not been [submitted](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs) yet.

              - `type: "function"`

                The type of tool call. This is always going to be `function` for this type of tool call.

          - `type: "tool_calls"`

            Always `tool_calls`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was run.

      - `type: "message_creation" or "tool_calls"`

        The type of run step, which can be either `message_creation` or `tool_calls`.

        - `"message_creation"`

        - `"tool_calls"`

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run step. This value will be `null` while the run step's status is `in_progress`.

        - `completion_tokens: number`

          Number of completion tokens used over the course of the run step.

        - `prompt_tokens: number`

          Number of prompt tokens used over the course of the run step.

        - `total_tokens: number`

          Total number of tokens used (prompt + completion).

    - `event: "thread.run.step.created"`

  - `thread.run.step.in_progress: object { data, event }`

    Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) moves to an `in_progress` state.

    - `data: object { id, assistant_id, cancelled_at, 13 more }`

      Represents a step in execution of a run.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) associated with the run step.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run step was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run step completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run step was created.

      - `expired_at: number`

        The Unix timestamp (in seconds) for when the run step expired. A step is considered expired if the parent run is expired.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run step failed.

      - `last_error: object { code, message }`

        The last error associated with this run step. Will be `null` if there are no errors.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.run.step"`

        The object type, which is always `thread.run.step`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that this run step is a part of.

      - `status: "in_progress" or "cancelled" or "failed" or 2 more`

        The status of the run step, which can be either `in_progress`, `cancelled`, `failed`, `completed`, or `expired`.

      - `step_details: MessageCreationStepDetails or ToolCallsStepDetails`

        The details of the run step.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was run.

      - `type: "message_creation" or "tool_calls"`

        The type of run step, which can be either `message_creation` or `tool_calls`.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run step. This value will be `null` while the run step's status is `in_progress`.

    - `event: "thread.run.step.in_progress"`

  - `thread.run.step.delta: object { data, event }`

    Occurs when parts of a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) are being streamed.

    - `data: object { id, delta, object }`

      Represents a run step delta i.e. any changed fields on a run step during streaming.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `delta: object { step_details }`

        The delta containing the fields that have changed on the run step.

        - `step_details: optional RunStepDeltaMessageDelta or ToolCallDeltaObject`

          The details of the run step.

          - `run_step_delta_message_delta: object { type, message_creation }`

            Details of the message creation by the run step.

            - `type: "message_creation"`

              Always `message_creation`.

            - `message_creation: optional object { message_id }`

              - `message_id: optional string`

                The ID of the message that was created by this run step.

          - `tool_call_delta_object: object { type, tool_calls }`

            Details of the tool call.

            - `type: "tool_calls"`

              Always `tool_calls`.

            - `tool_calls: optional array of ToolCallDelta`

              An array of tool calls the run step was involved in. These can be associated with one of three types of tools: `code_interpreter`, `file_search`, or `function`.

              - `code_interpreter_tool_call_delta: object { index, type, id, code_interpreter }`

                Details of the Code Interpreter tool call the run step was involved in.

                - `index: number`

                  The index of the tool call in the tool calls array.

                - `type: "code_interpreter"`

                  The type of tool call. This is always going to be `code_interpreter` for this type of tool call.

                - `id: optional string`

                  The ID of the tool call.

                - `code_interpreter: optional object { input, outputs }`

                  The Code Interpreter tool call definition.

                  - `input: optional string`

                    The input to the Code Interpreter tool call.

                  - `outputs: optional array of CodeInterpreterLogs or CodeInterpreterOutputImage`

                    The outputs from the Code Interpreter tool call. Code Interpreter can output one or more items, including text (`logs`) or images (`image`). Each of these are represented by a different object type.

                    - `code_interpreter_logs: object { index, type, logs }`

                      Text output from the Code Interpreter tool call as part of a run step.

                      - `index: number`

                        The index of the output in the outputs array.

                      - `type: "logs"`

                        Always `logs`.

                      - `logs: optional string`

                        The text output from the Code Interpreter tool call.

                    - `code_interpreter_output_image: object { index, type, image }`

                      - `index: number`

                        The index of the output in the outputs array.

                      - `type: "image"`

                        Always `image`.

                      - `image: optional object { file_id }`

                        - `file_id: optional string`

                          The [file](https://platform.openai.com/docs/api-reference/files) ID of the image.

              - `file_search_tool_call_delta: object { file_search, index, type, id }`

                - `file_search: unknown`

                  For now, this is always going to be an empty object.

                - `index: number`

                  The index of the tool call in the tool calls array.

                - `type: "file_search"`

                  The type of tool call. This is always going to be `file_search` for this type of tool call.

                - `id: optional string`

                  The ID of the tool call object.

              - `function_tool_call_delta: object { index, type, id, function }`

                - `index: number`

                  The index of the tool call in the tool calls array.

                - `type: "function"`

                  The type of tool call. This is always going to be `function` for this type of tool call.

                - `id: optional string`

                  The ID of the tool call object.

                - `function: optional object { arguments, name, output }`

                  The definition of the function that was called.

                  - `arguments: optional string`

                    The arguments passed to the function.

                  - `name: optional string`

                    The name of the function.

                  - `output: optional string`

                    The output of the function. This will be `null` if the outputs have not been [submitted](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs) yet.

      - `object: "thread.run.step.delta"`

        The object type, which is always `thread.run.step.delta`.

    - `event: "thread.run.step.delta"`

  - `thread.run.step.completed: object { data, event }`

    Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) is completed.

    - `data: object { id, assistant_id, cancelled_at, 13 more }`

      Represents a step in execution of a run.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) associated with the run step.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run step was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run step completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run step was created.

      - `expired_at: number`

        The Unix timestamp (in seconds) for when the run step expired. A step is considered expired if the parent run is expired.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run step failed.

      - `last_error: object { code, message }`

        The last error associated with this run step. Will be `null` if there are no errors.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.run.step"`

        The object type, which is always `thread.run.step`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that this run step is a part of.

      - `status: "in_progress" or "cancelled" or "failed" or 2 more`

        The status of the run step, which can be either `in_progress`, `cancelled`, `failed`, `completed`, or `expired`.

      - `step_details: MessageCreationStepDetails or ToolCallsStepDetails`

        The details of the run step.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was run.

      - `type: "message_creation" or "tool_calls"`

        The type of run step, which can be either `message_creation` or `tool_calls`.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run step. This value will be `null` while the run step's status is `in_progress`.

    - `event: "thread.run.step.completed"`

  - `thread.run.step.failed: object { data, event }`

    Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) fails.

    - `data: object { id, assistant_id, cancelled_at, 13 more }`

      Represents a step in execution of a run.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) associated with the run step.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run step was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run step completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run step was created.

      - `expired_at: number`

        The Unix timestamp (in seconds) for when the run step expired. A step is considered expired if the parent run is expired.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run step failed.

      - `last_error: object { code, message }`

        The last error associated with this run step. Will be `null` if there are no errors.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.run.step"`

        The object type, which is always `thread.run.step`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that this run step is a part of.

      - `status: "in_progress" or "cancelled" or "failed" or 2 more`

        The status of the run step, which can be either `in_progress`, `cancelled`, `failed`, `completed`, or `expired`.

      - `step_details: MessageCreationStepDetails or ToolCallsStepDetails`

        The details of the run step.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was run.

      - `type: "message_creation" or "tool_calls"`

        The type of run step, which can be either `message_creation` or `tool_calls`.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run step. This value will be `null` while the run step's status is `in_progress`.

    - `event: "thread.run.step.failed"`

  - `thread.run.step.cancelled: object { data, event }`

    Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) is cancelled.

    - `data: object { id, assistant_id, cancelled_at, 13 more }`

      Represents a step in execution of a run.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) associated with the run step.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run step was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run step completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run step was created.

      - `expired_at: number`

        The Unix timestamp (in seconds) for when the run step expired. A step is considered expired if the parent run is expired.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run step failed.

      - `last_error: object { code, message }`

        The last error associated with this run step. Will be `null` if there are no errors.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.run.step"`

        The object type, which is always `thread.run.step`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that this run step is a part of.

      - `status: "in_progress" or "cancelled" or "failed" or 2 more`

        The status of the run step, which can be either `in_progress`, `cancelled`, `failed`, `completed`, or `expired`.

      - `step_details: MessageCreationStepDetails or ToolCallsStepDetails`

        The details of the run step.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was run.

      - `type: "message_creation" or "tool_calls"`

        The type of run step, which can be either `message_creation` or `tool_calls`.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run step. This value will be `null` while the run step's status is `in_progress`.

    - `event: "thread.run.step.cancelled"`

  - `thread.run.step.expired: object { data, event }`

    Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) expires.

    - `data: object { id, assistant_id, cancelled_at, 13 more }`

      Represents a step in execution of a run.

      - `id: string`

        The identifier of the run step, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) associated with the run step.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run step was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run step completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run step was created.

      - `expired_at: number`

        The Unix timestamp (in seconds) for when the run step expired. A step is considered expired if the parent run is expired.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run step failed.

      - `last_error: object { code, message }`

        The last error associated with this run step. Will be `null` if there are no errors.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `object: "thread.run.step"`

        The object type, which is always `thread.run.step`.

      - `run_id: string`

        The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that this run step is a part of.

      - `status: "in_progress" or "cancelled" or "failed" or 2 more`

        The status of the run step, which can be either `in_progress`, `cancelled`, `failed`, `completed`, or `expired`.

      - `step_details: MessageCreationStepDetails or ToolCallsStepDetails`

        The details of the run step.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was run.

      - `type: "message_creation" or "tool_calls"`

        The type of run step, which can be either `message_creation` or `tool_calls`.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run step. This value will be `null` while the run step's status is `in_progress`.

    - `event: "thread.run.step.expired"`

### Run Stream Event

- `run_stream_event: object { data, event }  or object { data, event }  or object { data, event }  or 7 more`

  Occurs when a new [run](https://platform.openai.com/docs/api-reference/runs/object) is created.

  - `thread.run.created: object { data, event }`

    Occurs when a new [run](https://platform.openai.com/docs/api-reference/runs/object) is created.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

        - `reason: optional "max_completion_tokens" or "max_prompt_tokens"`

          The reason why the run is incomplete. This will point to which specific token limit was reached over the course of the run.

          - `"max_completion_tokens"`

          - `"max_prompt_tokens"`

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

        - `code: "server_error" or "rate_limit_exceeded" or "invalid_prompt"`

          One of `server_error`, `rate_limit_exceeded`, or `invalid_prompt`.

          - `"server_error"`

          - `"rate_limit_exceeded"`

          - `"invalid_prompt"`

        - `message: string`

          A human-readable description of the error.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

        - `submit_tool_outputs: object { tool_calls }`

          Details on the tool outputs needed for this run to continue.

          - `tool_calls: array of RequiredActionFunctionToolCall`

            A list of the relevant tool calls.

            - `id: string`

              The ID of the tool call. This ID must be referenced when you submit the tool outputs in using the [Submit tool outputs to run](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs) endpoint.

            - `function: object { arguments, name }`

              The function definition.

              - `arguments: string`

                The arguments that the model expects you to pass to the function.

              - `name: string`

                The name of the function.

            - `type: "function"`

              The type of tool call the output is required for. For now, this is always `function`.

        - `type: "submit_tool_outputs"`

          For now, this is always `submit_tool_outputs`.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

        - `union_member_0: "auto"`

          `auto` is the default value

        - `response_format_text: object { type }`

          Default response format. Used to generate text responses.

          - `type: "text"`

            The type of response format being defined. Always `text`.

        - `response_format_json_object: object { type }`

          JSON object response format. An older method of generating JSON responses.
          Using `json_schema` is recommended for models that support it. Note that the
          model will not generate JSON without a system or user message instructing it
          to do so.

          - `type: "json_object"`

            The type of response format being defined. Always `json_object`.

        - `response_format_json_schema: object { json_schema, type }`

          JSON Schema response format. Used to generate structured JSON responses.
          Learn more about [Structured Outputs](https://platform.openai.com/docs/guides/structured-outputs).

          - `json_schema: object { name, description, schema, strict }`

            Structured Outputs configuration options, including a JSON Schema.

            - `name: string`

              The name of the response format. Must be a-z, A-Z, 0-9, or contain
              underscores and dashes, with a maximum length of 64.

            - `description: optional string`

              A description of what the response format is for, used by the model to
              determine how to respond in the format.

            - `schema: optional map[unknown]`

              The schema for the response format, described as a JSON Schema object.
              Learn how to build JSON schemas [here](https://json-schema.org/).

            - `strict: optional boolean`

              Whether to enable strict schema adherence when generating the output.
              If set to true, the model will always follow the exact schema defined
              in the `schema` field. Only a subset of JSON Schema is supported when
              `strict` is `true`. To learn more, read the [Structured Outputs
              guide](https://platform.openai.com/docs/guides/structured-outputs).

          - `type: "json_schema"`

            The type of response format being defined. Always `json_schema`.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

        - `"queued"`

        - `"in_progress"`

        - `"requires_action"`

        - `"cancelling"`

        - `"cancelled"`

        - `"failed"`

        - `"completed"`

        - `"incomplete"`

        - `"expired"`

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

        - `Auto: "none" or "auto" or "required"`

          `none` means the model will not call any tools and instead generates a message. `auto` means the model can pick between generating a message or calling one or more tools. `required` means the model must call one or more tools before responding to the user.

          - `"none"`

          - `"auto"`

          - `"required"`

        - `assistant_tool_choice: object { type, function }`

          Specifies a tool the model should use. Use to force the model to call a specific tool.

          - `type: "function" or "code_interpreter" or "file_search"`

            The type of the tool. If type is `function`, the function name must be set

            - `"function"`

            - `"code_interpreter"`

            - `"file_search"`

          - `function: optional object { name }`

            - `name: string`

              The name of the function to call.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

        - `code_interpreter_tool: object { type }`

          - `type: "code_interpreter"`

            The type of tool being defined: `code_interpreter`

        - `file_search_tool: object { type, file_search }`

          - `type: "file_search"`

            The type of tool being defined: `file_search`

          - `file_search: optional object { max_num_results, ranking_options }`

            Overrides for the file search tool.

            - `max_num_results: optional number`

              The maximum number of results the file search tool should output. The default is 20 for `gpt-4*` models and 5 for `gpt-3.5-turbo`. This number should be between 1 and 50 inclusive.

              Note that the file search tool may output fewer than `max_num_results` results. See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

            - `ranking_options: optional object { score_threshold, ranker }`

              The ranking options for the file search. If not specified, the file search tool will use the `auto` ranker and a score_threshold of 0.

              See the [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.

              - `score_threshold: number`

                The score threshold for the file search. All values must be a floating point number between 0 and 1.

              - `ranker: optional "auto" or "default_2024_08_21"`

                The ranker to use for the file search. If not specified will use the `auto` ranker.

                - `"auto"`

                - `"default_2024_08_21"`

        - `function_tool: object { function, type }`

          - `function: object { name, description, parameters, strict }`

            - `name: string`

              The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.

            - `description: optional string`

              A description of what the function does, used by the model to choose when and how to call the function.

            - `parameters: optional map[unknown]`

              The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.

              Omitting `parameters` defines a function with an empty parameter list.

            - `strict: optional boolean`

              Whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the `parameters` field. Only a subset of JSON Schema is supported when `strict` is `true`. Learn more about Structured Outputs in the [function calling guide](https://platform.openai.com/docs/guides/function-calling).

          - `type: "function"`

            The type of tool being defined: `function`

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

        - `type: "auto" or "last_messages"`

          The truncation strategy to use for the thread. The default is `auto`. If set to `last_messages`, the thread will be truncated to the n most recent messages in the thread. When set to `auto`, messages in the middle of the thread will be dropped to fit the context length of the model, `max_prompt_tokens`.

          - `"auto"`

          - `"last_messages"`

        - `last_messages: optional number`

          The number of most recent messages from the thread when constructing the context for the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

        - `completion_tokens: number`

          Number of completion tokens used over the course of the run.

        - `prompt_tokens: number`

          Number of prompt tokens used over the course of the run.

        - `total_tokens: number`

          Total number of tokens used (prompt + completion).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.created"`

  - `thread.run.queued: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) moves to a `queued` status.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.queued"`

  - `thread.run.in_progress: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) moves to an `in_progress` status.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.in_progress"`

  - `thread.run.requires_action: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) moves to a `requires_action` status.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.requires_action"`

  - `thread.run.completed: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) is completed.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.completed"`

  - `thread.run.incomplete: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) ends with status `incomplete`.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.incomplete"`

  - `thread.run.failed: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) fails.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.failed"`

  - `thread.run.cancelling: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) moves to a `cancelling` status.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.cancelling"`

  - `thread.run.cancelled: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) is cancelled.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.cancelled"`

  - `thread.run.expired: object { data, event }`

    Occurs when a [run](https://platform.openai.com/docs/api-reference/runs/object) expires.

    - `data: object { id, assistant_id, cancelled_at, 24 more }`

      Represents an execution run on a [thread](https://platform.openai.com/docs/api-reference/threads).

      - `id: string`

        The identifier, which can be referenced in API endpoints.

      - `assistant_id: string`

        The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for execution of this run.

      - `cancelled_at: number`

        The Unix timestamp (in seconds) for when the run was cancelled.

      - `completed_at: number`

        The Unix timestamp (in seconds) for when the run was completed.

      - `created_at: number`

        The Unix timestamp (in seconds) for when the run was created.

      - `expires_at: number`

        The Unix timestamp (in seconds) for when the run will expire.

      - `failed_at: number`

        The Unix timestamp (in seconds) for when the run failed.

      - `incomplete_details: object { reason }`

        Details on why the run is incomplete. Will be `null` if the run is not incomplete.

      - `instructions: string`

        The instructions that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `last_error: object { code, message }`

        The last error associated with this run. Will be `null` if there are no errors.

      - `max_completion_tokens: number`

        The maximum number of completion tokens specified to have been used over the course of the run.

      - `max_prompt_tokens: number`

        The maximum number of prompt tokens specified to have been used over the course of the run.

      - `metadata: map[string]`

        Set of 16 key-value pairs that can be attached to an object. This can be
        useful for storing additional information about the object in a structured
        format, and querying for objects via API or the dashboard.

        Keys are strings with a maximum length of 64 characters. Values are strings
        with a maximum length of 512 characters.

      - `model: string`

        The model that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `object: "thread.run"`

        The object type, which is always `thread.run`.

      - `parallel_tool_calls: boolean`

        Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) during tool use.

      - `required_action: object { submit_tool_outputs, type }`

        Details on the action required to continue the run. Will be `null` if no action is required.

      - `response_format: "auto" or ResponseFormatText or ResponseFormatJSONObject or ResponseFormatJSONSchema`

        Specifies the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models#gpt-4o), [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

        Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

        Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON.

        **Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length.

      - `started_at: number`

        The Unix timestamp (in seconds) for when the run was started.

      - `status: "queued" or "in_progress" or "requires_action" or 6 more`

        The status of the run, which can be either `queued`, `in_progress`, `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, `incomplete`, or `expired`.

      - `thread_id: string`

        The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) that was executed on as a part of this run.

      - `tool_choice: "none" or "auto" or "required" or AssistantToolChoice`

        Controls which (if any) tool is called by the model.
        `none` means the model will not call any tools and instead generates a message.
        `auto` is the default value and means the model can pick between generating a message or calling one or more tools.
        `required` means the model must call one or more tools before responding to the user.
        Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool.

      - `tools: array of AssistantTool`

        The list of tools that the [assistant](https://platform.openai.com/docs/api-reference/assistants) used for this run.

      - `truncation_strategy: object { type, last_messages }`

        Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run.

      - `usage: object { completion_tokens, prompt_tokens, total_tokens }`

        Usage statistics related to the run. This value will be `null` if the run is not in a terminal state (i.e. `in_progress`, `queued`, etc.).

      - `temperature: optional number`

        The sampling temperature used for this run. If not set, defaults to 1.

      - `top_p: optional number`

        The nucleus sampling value used for this run. If not set, defaults to 1.

    - `event: "thread.run.expired"`

### Thread Stream Event

- `thread_stream_event: object { data, event, enabled }`

  Occurs when a new [thread](https://platform.openai.com/docs/api-reference/threads/object) is created.

  - `data: object { id, created_at, metadata, 2 more }`

    Represents a thread that contains [messages](https://platform.openai.com/docs/api-reference/messages).

    - `id: string`

      The identifier, which can be referenced in API endpoints.

    - `created_at: number`

      The Unix timestamp (in seconds) for when the thread was created.

    - `metadata: map[string]`

      Set of 16 key-value pairs that can be attached to an object. This can be
      useful for storing additional information about the object in a structured
      format, and querying for objects via API or the dashboard.

      Keys are strings with a maximum length of 64 characters. Values are strings
      with a maximum length of 512 characters.

    - `object: "thread"`

      The object type, which is always `thread`.

    - `tool_resources: object { code_interpreter, file_search }`

      A set of resources that are made available to the assistant's tools in this thread. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs.

      - `code_interpreter: optional object { file_ids }`

        - `file_ids: optional array of string`

          A list of [file](https://platform.openai.com/docs/api-reference/files) IDs made available to the `code_interpreter` tool. There can be a maximum of 20 files associated with the tool.

      - `file_search: optional object { vector_store_ids }`

        - `vector_store_ids: optional array of string`

          The [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object) attached to this thread. There can be a maximum of 1 vector store attached to the thread.

  - `event: "thread.created"`

  - `enabled: optional boolean`

    Whether to enable input audio transcription.
