---
title: "POST /threads/runs"
method: POST
path: "/threads/runs"
---

# POST /threads/runs

`POST /threads/runs`

Creates a new assistant thread and immediately starts a run using that new thread.

## Request body

- CreateAndRunThreadOptions — The details used when creating and immediately running a new assistant thread.
  - `assistant_id` string, required — The ID of the assistant for which the thread should be created.
  - `thread` AssistantThreadCreationOptions — The details used to create a new assistant thread.
    - `messages` ThreadMessageOptions[] — The initial messages to associate with the new thread.
      - `role` 'user' | 'assistant', required — The possible values for roles attributed to messages in a thread.
      - `content` string, required — The textual content of the initial message. Currently, robust input including images and annotated text may only be provided via a separate call to the create message API.
      - `attachments` MessageAttachment[], nullable — A list of files attached to the message, and the tools they should be added to.
        - `file_id` string, required — The ID of the file to attach to the message.
        - `tools` MessageAttachmentToolDefinition[], required — The tools to add to this file.
          - unknown
      - `metadata` object, nullable — A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
    - `tool_resources` CreateToolResourcesOptions — Request object. 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` CreateCodeInterpreterToolResourceOptions — A set of resources that will be used by the `code_interpreter` tool. Request object.
        - `file_ids` string[] — A list of file IDs made available to the `code_interpreter` tool.
      - `file_search` unknown
    - `metadata` object, nullable — A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.
  - `model` string, nullable — The overridden model that the assistant should use to run the thread.
  - `instructions` string, nullable — The overridden system instructions the assistant should use to run the thread.
  - `tools` ToolDefinition[], nullable — The overridden list of enabled tools the assistant should use to run the thread.
    - `type` string, required — The object type.
  - `parallel_tool_calls` boolean — Whether to enable parallel function calling during tool use.
  - `tool_resources` UpdateToolResourcesOptions — Request object. 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` UpdateCodeInterpreterToolResourceOptions — Request object to update `code_interpreted` tool resources.
      - `file_ids` string[] — A list of file IDs to override the current list of the assistant.
    - `file_search` UpdateFileSearchToolResourceOptions — Request object to update `file_search` tool resources.
      - `vector_store_ids` string[] — A list of vector store IDs to override the current list of the assistant.
  - `stream` boolean — If `true`, returns a stream of events that happen during the Run as server-sent events, terminating when the Run enters a terminal state with a `data: [DONE]` message.
  - `temperature` number, float, nullable — 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.
  - `top_p` number, float, nullable — 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.
  - `max_prompt_tokens` integer, nullable — The maximum number of prompt tokens that may be used over the course of the run. The run will make a best effort to use only the number of prompt tokens specified, across multiple turns of the run. If the run exceeds the number of prompt tokens specified, the run will end with status `incomplete`. See `incomplete_details` for more info.
  - `max_completion_tokens` integer, nullable — The maximum number of completion tokens that may be used over the course of the run. The run will make a best effort to use only the number of completion tokens specified, across multiple turns of the run. If the run exceeds the number of completion tokens specified, the run will end with status `incomplete`. See `incomplete_details` for more info.
  - `truncation_strategy` TruncationObject — 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' | 'last_messages', required — The truncation strategy to use for the thread. The default is `auto`. If set to `last_messages`, the thread will be truncated to the `lastMessages` count 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`.
    - `last_messages` integer, nullable — The number of most recent messages from the thread when constructing the context for the run.
  - `tool_choice` unknown
  - `response_format` unknown
  - `metadata` object, nullable — A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.

## Response `200`

Information about the newly created thread.

- ThreadRun — Data representing a single evaluation run of an assistant thread.
  - `id` string, required — The identifier, which can be referenced in API endpoints.
  - `object` 'thread.run', required — The object type, which is always 'thread.run'.
  - `thread_id` string, required — The ID of the thread associated with this run.
  - `assistant_id` string, required — The ID of the assistant associated with the thread this run was performed against.
  - `status` 'queued' | 'in_progress' | 'requires_action' | 'cancelling' | 'cancelled' | 'failed' | 'completed' | 'expired', required — Possible values for the status of an assistant thread run.
  - `required_action` RequiredAction — An abstract representation of a required action for an assistant thread run to continue.
    - `type` string, required — The object type.
  - `last_error` RunError, required — The details of an error as encountered by an assistant thread run.
    - `code` string, required — The status for the error.
    - `message` string, required — The human-readable text associated with the error.
  - `model` string, required — The ID of the model to use.
  - `instructions` string, required — The overridden system instructions used for this assistant thread run.
  - `tools` ToolDefinition[], required — The overridden enabled tools used for this assistant thread run.
    - `type` string, required — The object type.
  - `created_at` integer, required — The Unix timestamp, in seconds, representing when this object was created.
  - `expires_at` integer, nullable, required — The Unix timestamp, in seconds, representing when this item expires.
  - `started_at` integer, nullable, required — The Unix timestamp, in seconds, representing when this item was started.
  - `completed_at` integer, nullable, required — The Unix timestamp, in seconds, representing when this completed.
  - `cancelled_at` integer, nullable, required — The Unix timestamp, in seconds, representing when this was cancelled.
  - `failed_at` integer, nullable, required — The Unix timestamp, in seconds, representing when this failed.
  - `incomplete_details` 'max_completion_tokens' | 'max_prompt_tokens', required — The reason why the run is incomplete. This will point to which specific token limit was reached over the course of the run.
  - `usage` RunCompletionUsage, required — 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` integer, required — Number of completion tokens used over the course of the run.
    - `prompt_tokens` integer, required — Number of prompt tokens used over the course of the run.
    - `total_tokens` integer, required — Total number of tokens used (prompt + completion).
  - `temperature` number, float, nullable — The sampling temperature used for this run. If not set, defaults to 1.
  - `top_p` number, float, nullable — The nucleus sampling value used for this run. If not set, defaults to 1.
  - `max_prompt_tokens` integer, nullable, required — The maximum number of prompt tokens specified to have been used over the course of the run.
  - `max_completion_tokens` integer, nullable, required — The maximum number of completion tokens specified to have been used over the course of the run.
  - `truncation_strategy` TruncationObject, required — 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' | 'last_messages', required — The truncation strategy to use for the thread. The default is `auto`. If set to `last_messages`, the thread will be truncated to the `lastMessages` count 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`.
    - `last_messages` integer, nullable — The number of most recent messages from the thread when constructing the context for the run.
  - `tool_choice` unknown, required
  - `parallel_tool_calls` boolean, required — Whether to enable parallel function calling during tool use.
  - `response_format` unknown, required
  - `metadata` object, nullable, required — A set of up to 16 key/value pairs that can be attached to an object, used for storing additional information about that object in a structured format. Keys may be up to 64 characters in length and values may be up to 512 characters in length.

---

[API](https://skmtc.net/azure/apis/ai-openai-assistants-openapiv2.md) · [All operations](https://skmtc.net/azure/apis/ai-openai-assistants-openapiv2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/azure/ai-openai-assistants-openapiv2/revisions/453a64f820f0/schema)
