---
title: "POST /threads/{threadId}/runs"
method: POST
path: "/threads/{threadId}/runs"
---

# POST /threads/{threadId}/runs

`POST /threads/{threadId}/runs`

Creates a new run for an assistant thread.

## Path parameters

- `threadId` string, required

## Query parameters

- `include[]` string[]

## Request body

- CreateRunOptions — The details used when creating a new run of an assistant thread.
  - `assistant_id` string, required — The ID of the assistant that should run the thread.
  - `model` string, nullable — The overridden model name that the assistant should use to run the thread.
  - `instructions` string, nullable — The overridden system instructions that the assistant should use to run the thread.
  - `additional_instructions` string, nullable — Additional instructions to append at the end of the instructions for the run. This is useful for modifying the behavior on a per-run basis without overriding other instructions.
  - `additional_messages` ThreadMessage[], nullable — Adds additional messages to the thread before creating the run.
    - `id` string, required — The identifier, which can be referenced in API endpoints.
    - `object` 'thread.message', required — The object type, which is always 'thread.message'.
    - `created_at` integer, required — The Unix timestamp, in seconds, representing when this object was created.
    - `thread_id` string, required — The ID of the thread that this message belongs to.
    - `status` 'in_progress' | 'incomplete' | 'completed', required — The possible execution status values for a thread message.
    - `incomplete_details` MessageIncompleteDetails, required — Information providing additional detail about a message entering an incomplete status.
      - `reason` 'content_filter' | 'max_tokens' | 'run_cancelled' | 'run_failed' | 'run_expired', required — A set of reasons describing why a message is marked as incomplete.
    - `completed_at` integer, nullable, required — The Unix timestamp (in seconds) for when the message was completed.
    - `incomplete_at` integer, nullable, required — The Unix timestamp (in seconds) for when the message was marked as incomplete.
    - `role` 'user' | 'assistant', required — The possible values for roles attributed to messages in a thread.
    - `content` MessageContent[], required — The list of content items associated with the assistant thread message.
      - `type` string, required — The object type.
    - `assistant_id` string, nullable, required — If applicable, the ID of the assistant that authored this message.
    - `run_id` string, nullable, required — If applicable, the ID of the run associated with the authoring of this message.
    - `attachments` MessageAttachment[], nullable, required — A list of files attached to the message, and the tools they were 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, 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.
  - `tools` ToolDefinition[], nullable — The overridden list of enabled tools that 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.
  - `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 new thread run.

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