Skip to content
Primary navigation

Threads

Build Assistants that can call models and use tools.

Create thread
Deprecated
client.beta.threads.create(ThreadCreateParams { messages, metadata, tool_resources } body?, RequestOptionsoptions?): Thread { id, created_at, metadata, 2 more }
POST/threads
Create thread and run
Deprecated
client.beta.threads.createAndRun(ThreadCreateAndRunParamsbody, RequestOptionsoptions?): Run { id, assistant_id, cancelled_at, 24 more } | Stream<AssistantStreamEvent>
POST/threads/runs
Retrieve thread
Deprecated
client.beta.threads.retrieve(stringthreadID, RequestOptionsoptions?): Thread { id, created_at, metadata, 2 more }
GET/threads/{thread_id}
Modify thread
Deprecated
client.beta.threads.update(stringthreadID, ThreadUpdateParams { metadata, tool_resources } body, RequestOptionsoptions?): Thread { id, created_at, metadata, 2 more }
POST/threads/{thread_id}
Delete thread
Deprecated
client.beta.threads.delete(stringthreadID, RequestOptionsoptions?): ThreadDeleted { id, deleted, object }
DELETE/threads/{thread_id}
ModelsExpand Collapse
AssistantResponseFormatOption = "auto" | ResponseFormatText { type } | ResponseFormatJSONObject { type } | ResponseFormatJSONSchema { json_schema, type }

Specifies the format that the model must output. Compatible with GPT-4o, GPT-4 Turbo, 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.

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.

One of the following:
"auto"
"auto"
ResponseFormatText { type }

Default response format. Used to generate text responses.

type: "text"

The type of response format being defined. Always text.

ResponseFormatJSONObject { 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.

ResponseFormatJSONSchema { json_schema, type }

JSON Schema response format. Used to generate structured JSON responses. Learn more about Structured Outputs.

json_schema: JSONSchema { 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?: string

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

schema?: Record<string, unknown>

The schema for the response format, described as a JSON Schema object. Learn how to build JSON schemas here.

strict?: boolean | null

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.

type: "json_schema"

The type of response format being defined. Always json_schema.

AssistantToolChoice { type, function }

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

type: "function" | "code_interpreter" | "file_search"

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

One of the following:
"function"
"code_interpreter"
"file_search"
function?: AssistantToolChoiceFunction { name }
AssistantToolChoiceFunction { name }
name: string

The name of the function to call.

AssistantToolChoiceOption = "none" | "auto" | "required" | AssistantToolChoice { type, function }

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.

One of the following:
"none" | "auto" | "required"
"none"
"auto"
"required"
AssistantToolChoice { type, function }

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

type: "function" | "code_interpreter" | "file_search"

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

One of the following:
"function"
"code_interpreter"
"file_search"
function?: AssistantToolChoiceFunction { name }
Thread { id, created_at, metadata, 2 more }

Represents a thread that contains 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: Metadata | null

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: ToolResources | null

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?: CodeInterpreter { file_ids }
file_ids?: Array<string>

A list of file IDs made available to the code_interpreter tool. There can be a maximum of 20 files associated with the tool.

ThreadDeleted { id, deleted, object }
id: string
deleted: boolean
object: "thread.deleted"

ThreadsRuns

Build Assistants that can call models and use tools.

List runs
Deprecated
client.beta.threads.runs.list(stringthreadID, RunListParams { after, before, limit, order } query?, RequestOptionsoptions?): CursorPage<Run { id, assistant_id, cancelled_at, 24 more } >
GET/threads/{thread_id}/runs
Create run
Deprecated
client.beta.threads.runs.create(stringthreadID, RunCreateParamsparams, RequestOptionsoptions?): Run { id, assistant_id, cancelled_at, 24 more } | Stream<AssistantStreamEvent>
POST/threads/{thread_id}/runs
Retrieve run
Deprecated
client.beta.threads.runs.retrieve(stringrunID, RunRetrieveParams { thread_id } params, RequestOptionsoptions?): Run { id, assistant_id, cancelled_at, 24 more }
GET/threads/{thread_id}/runs/{run_id}
Modify run
Deprecated
client.beta.threads.runs.update(stringrunID, RunUpdateParams { thread_id, metadata } params, RequestOptionsoptions?): Run { id, assistant_id, cancelled_at, 24 more }
POST/threads/{thread_id}/runs/{run_id}
Submit tool outputs to run
Deprecated
client.beta.threads.runs.submitToolOutputs(stringrunID, RunSubmitToolOutputsParamsparams, RequestOptionsoptions?): Run { id, assistant_id, cancelled_at, 24 more } | Stream<AssistantStreamEvent>
POST/threads/{thread_id}/runs/{run_id}/submit_tool_outputs
Cancel a run
Deprecated
client.beta.threads.runs.cancel(stringrunID, RunCancelParams { thread_id } params, RequestOptionsoptions?): Run { id, assistant_id, cancelled_at, 24 more }
POST/threads/{thread_id}/runs/{run_id}/cancel
ModelsExpand Collapse
RequiredActionFunctionToolCall { id, function, type }

Tool call objects

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 endpoint.

function: Function { 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.

Run { id, assistant_id, cancelled_at, 24 more }

Represents an execution run on a thread.

id: string

The identifier, which can be referenced in API endpoints.

assistant_id: string

The ID of the assistant used for execution of this run.

cancelled_at: number | null

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

completed_at: number | null

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

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

failed_at: number | null

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

incomplete_details: IncompleteDetails | null

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

reason?: "max_completion_tokens" | "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.

One of the following:
"max_completion_tokens"
"max_prompt_tokens"
instructions: string

The instructions that the assistant used for this run.

last_error: LastError | null

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

code: "server_error" | "rate_limit_exceeded" | "invalid_prompt"

One of server_error, rate_limit_exceeded, or invalid_prompt.

One of the following:
"server_error"
"rate_limit_exceeded"
"invalid_prompt"
message: string

A human-readable description of the error.

max_completion_tokens: number | null

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

minimum256
max_prompt_tokens: number | null

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

minimum256
metadata: Metadata | null

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 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 during tool use.

required_action: RequiredAction | null

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

submit_tool_outputs: SubmitToolOutputs { tool_calls }

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

tool_calls: Array<RequiredActionFunctionToolCall { id, function, type } >

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 endpoint.

function: Function { 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: AssistantResponseFormatOption | null

Specifies the format that the model must output. Compatible with GPT-4o, GPT-4 Turbo, 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.

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

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

status: RunStatus

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 that was executed on as a part of this run.

tool_choice: AssistantToolChoiceOption | null

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

The list of tools that the assistant used for this run.

One of the following:
CodeInterpreterTool { type }
type: "code_interpreter"

The type of tool being defined: code_interpreter

FileSearchTool { type, file_search }
type: "file_search"

The type of tool being defined: file_search

One of the following:
FunctionTool { function, type }
function: FunctionDefinition { name, description, parameters, strict }
type: "function"

The type of tool being defined: function

truncation_strategy: TruncationStrategy | null

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"

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.

One of the following:
"auto"
"last_messages"
last_messages?: number | null

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

minimum1
usage: Usage | null

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?: number | null

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

top_p?: number | null

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

RunStatus = "queued" | "in_progress" | "requires_action" | 6 more

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

One of the following:
"queued"
"in_progress"
"requires_action"
"cancelling"
"cancelled"
"failed"
"completed"
"incomplete"
"expired"

ThreadsRunsSteps

Build Assistants that can call models and use tools.

List run steps
Deprecated
client.beta.threads.runs.steps.list(stringrunID, StepListParams { thread_id, after, before, 3 more } params, RequestOptionsoptions?): CursorPage<RunStep { id, assistant_id, cancelled_at, 13 more } >
GET/threads/{thread_id}/runs/{run_id}/steps
Retrieve run step
Deprecated
client.beta.threads.runs.steps.retrieve(stringstepID, StepRetrieveParams { thread_id, run_id, include } params, RequestOptionsoptions?): RunStep { id, assistant_id, cancelled_at, 13 more }
GET/threads/{thread_id}/runs/{run_id}/steps/{step_id}
ModelsExpand Collapse
CodeInterpreterLogs { 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?: string

The text output from the Code Interpreter tool call.

CodeInterpreterOutputImage { index, type, image }
index: number

The index of the output in the outputs array.

type: "image"

Always image.

image?: Image { file_id }
file_id?: string

The file ID of the image.

CodeInterpreterToolCall { 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: CodeInterpreter { input, outputs }

The Code Interpreter tool call definition.

input: string

The input to the Code Interpreter tool call.

outputs: Array<Logs { logs, type } | Image { 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.

One of the following:
Logs { 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 { image, type }
image: Image { file_id }
file_id: string

The file 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.

CodeInterpreterToolCallDelta { 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?: string

The ID of the tool call.

code_interpreter?: CodeInterpreter { input, outputs }

The Code Interpreter tool call definition.

input?: string

The input to the Code Interpreter tool call.

outputs?: Array<CodeInterpreterLogs { index, type, logs } | CodeInterpreterOutputImage { index, type, image } >

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.

One of the following:
CodeInterpreterLogs { 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?: string

The text output from the Code Interpreter tool call.

CodeInterpreterOutputImage { index, type, image }
index: number

The index of the output in the outputs array.

type: "image"

Always image.

image?: Image { file_id }
file_id?: string

The file ID of the image.

FileSearchToolCall { id, file_search, type }
id: string

The ID of the tool call object.

One of the following:
type: "file_search"

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

FileSearchToolCallDelta { file_search, index, type, id }
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?: string

The ID of the tool call object.

FunctionToolCall { id, function, type }
id: string

The ID of the tool call object.

function: Function { 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 | null

The output of the function. This will be null if the outputs have not been submitted yet.

type: "function"

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

FunctionToolCallDelta { 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?: string

The ID of the tool call object.

function?: Function { 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 | null

The output of the function. This will be null if the outputs have not been submitted yet.

MessageCreationStepDetails { message_creation, type }

Details of the message creation by the run step.

message_creation: MessageCreation { message_id }
message_id: string

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

type: "message_creation"

Always message_creation.

RunStep { 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 associated with the run step.

cancelled_at: number | null

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

completed_at: number | null

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

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

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

last_error: LastError | null

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

code: "server_error" | "rate_limit_exceeded"

One of server_error or rate_limit_exceeded.

One of the following:
"server_error"
"rate_limit_exceeded"
message: string

A human-readable description of the error.

metadata: Metadata | null

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 that this run step is a part of.

status: "in_progress" | "cancelled" | "failed" | 2 more

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

One of the following:
"in_progress"
"cancelled"
"failed"
"completed"
"expired"
step_details: MessageCreationStepDetails { message_creation, type } | ToolCallsStepDetails { tool_calls, type }

The details of the run step.

One of the following:
MessageCreationStepDetails { message_creation, type }

Details of the message creation by the run step.

message_creation: MessageCreation { message_id }
message_id: string

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

type: "message_creation"

Always message_creation.

ToolCallsStepDetails { tool_calls, type }

Details of the tool call.

tool_calls: Array<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.

One of the following:
CodeInterpreterToolCall { 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: CodeInterpreter { input, outputs }

The Code Interpreter tool call definition.

input: string

The input to the Code Interpreter tool call.

outputs: Array<Logs { logs, type } | Image { 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.

One of the following:
Logs { 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 { image, type }
image: Image { file_id }
file_id: string

The file 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.

FileSearchToolCall { id, file_search, type }
id: string

The ID of the tool call object.

One of the following:
type: "file_search"

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

FunctionToolCall { id, function, type }
id: string

The ID of the tool call object.

function: Function { 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 | null

The output of the function. This will be null if the outputs have not been submitted 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 that was run.

type: "message_creation" | "tool_calls"

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

One of the following:
"message_creation"
"tool_calls"
usage: Usage | null

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

RunStepDelta { step_details }

The delta containing the fields that have changed on the run step.

step_details?: RunStepDeltaMessageDelta { type, message_creation } | ToolCallDeltaObject { type, tool_calls }

The details of the run step.

One of the following:
RunStepDeltaMessageDelta { type, message_creation }

Details of the message creation by the run step.

type: "message_creation"

Always message_creation.

message_creation?: MessageCreation { message_id }
message_id?: string

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

ToolCallDeltaObject { type, tool_calls }

Details of the tool call.

type: "tool_calls"

Always tool_calls.

tool_calls?: Array<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.

One of the following:
CodeInterpreterToolCallDelta { 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?: string

The ID of the tool call.

code_interpreter?: CodeInterpreter { input, outputs }

The Code Interpreter tool call definition.

input?: string

The input to the Code Interpreter tool call.

outputs?: Array<CodeInterpreterLogs { index, type, logs } | CodeInterpreterOutputImage { index, type, image } >

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.

One of the following:
CodeInterpreterLogs { 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?: string

The text output from the Code Interpreter tool call.

CodeInterpreterOutputImage { index, type, image }
index: number

The index of the output in the outputs array.

type: "image"

Always image.

image?: Image { file_id }
file_id?: string

The file ID of the image.

FileSearchToolCallDelta { file_search, index, type, id }
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?: string

The ID of the tool call object.

FunctionToolCallDelta { 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?: string

The ID of the tool call object.

function?: Function { 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 | null

The output of the function. This will be null if the outputs have not been submitted yet.

RunStepDeltaEvent { 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: RunStepDelta { step_details }

The delta containing the fields that have changed on the run step.

object: "thread.run.step.delta"

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

RunStepDeltaMessageDelta { type, message_creation }

Details of the message creation by the run step.

type: "message_creation"

Always message_creation.

message_creation?: MessageCreation { message_id }
message_id?: string

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

RunStepInclude = "step_details.tool_calls[*].file_search.results[*].content"
ToolCall = CodeInterpreterToolCall { id, code_interpreter, type } | FileSearchToolCall { id, file_search, type } | FunctionToolCall { id, function, type }

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

One of the following:
CodeInterpreterToolCall { 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: CodeInterpreter { input, outputs }

The Code Interpreter tool call definition.

input: string

The input to the Code Interpreter tool call.

outputs: Array<Logs { logs, type } | Image { 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.

One of the following:
Logs { 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 { image, type }
image: Image { file_id }
file_id: string

The file 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.

FileSearchToolCall { id, file_search, type }
id: string

The ID of the tool call object.

One of the following:
type: "file_search"

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

FunctionToolCall { id, function, type }
id: string

The ID of the tool call object.

function: Function { 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 | null

The output of the function. This will be null if the outputs have not been submitted yet.

type: "function"

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

ToolCallDelta = CodeInterpreterToolCallDelta { index, type, id, code_interpreter } | FileSearchToolCallDelta { file_search, index, type, id } | FunctionToolCallDelta { index, type, id, function }

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

One of the following:
CodeInterpreterToolCallDelta { 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?: string

The ID of the tool call.

code_interpreter?: CodeInterpreter { input, outputs }

The Code Interpreter tool call definition.

input?: string

The input to the Code Interpreter tool call.

outputs?: Array<CodeInterpreterLogs { index, type, logs } | CodeInterpreterOutputImage { index, type, image } >

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.

One of the following:
CodeInterpreterLogs { 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?: string

The text output from the Code Interpreter tool call.

CodeInterpreterOutputImage { index, type, image }
index: number

The index of the output in the outputs array.

type: "image"

Always image.

image?: Image { file_id }
file_id?: string

The file ID of the image.

FileSearchToolCallDelta { file_search, index, type, id }
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?: string

The ID of the tool call object.

FunctionToolCallDelta { 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?: string

The ID of the tool call object.

function?: Function { 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 | null

The output of the function. This will be null if the outputs have not been submitted yet.

ToolCallDeltaObject { type, tool_calls }

Details of the tool call.

type: "tool_calls"

Always tool_calls.

tool_calls?: Array<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.

One of the following:
CodeInterpreterToolCallDelta { 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?: string

The ID of the tool call.

code_interpreter?: CodeInterpreter { input, outputs }

The Code Interpreter tool call definition.

input?: string

The input to the Code Interpreter tool call.

outputs?: Array<CodeInterpreterLogs { index, type, logs } | CodeInterpreterOutputImage { index, type, image } >

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.

One of the following:
CodeInterpreterLogs { 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?: string

The text output from the Code Interpreter tool call.

CodeInterpreterOutputImage { index, type, image }
index: number

The index of the output in the outputs array.

type: "image"

Always image.

image?: Image { file_id }
file_id?: string

The file ID of the image.

FileSearchToolCallDelta { file_search, index, type, id }
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?: string

The ID of the tool call object.

FunctionToolCallDelta { 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?: string

The ID of the tool call object.

function?: Function { 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 | null

The output of the function. This will be null if the outputs have not been submitted yet.

ToolCallsStepDetails { tool_calls, type }

Details of the tool call.

tool_calls: Array<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.

One of the following:
CodeInterpreterToolCall { 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: CodeInterpreter { input, outputs }

The Code Interpreter tool call definition.

input: string

The input to the Code Interpreter tool call.

outputs: Array<Logs { logs, type } | Image { 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.

One of the following:
Logs { 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 { image, type }
image: Image { file_id }
file_id: string

The file 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.

FileSearchToolCall { id, file_search, type }
id: string

The ID of the tool call object.

One of the following:
type: "file_search"

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

FunctionToolCall { id, function, type }
id: string

The ID of the tool call object.

function: Function { 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 | null

The output of the function. This will be null if the outputs have not been submitted 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.

ThreadsMessages

Build Assistants that can call models and use tools.

List messages
Deprecated
client.beta.threads.messages.list(stringthreadID, MessageListParams { after, before, limit, 2 more } query?, RequestOptionsoptions?): CursorPage<Message { id, assistant_id, attachments, 11 more } >
GET/threads/{thread_id}/messages
Create message
Deprecated
client.beta.threads.messages.create(stringthreadID, MessageCreateParams { content, role, attachments, metadata } body, RequestOptionsoptions?): Message { id, assistant_id, attachments, 11 more }
POST/threads/{thread_id}/messages
Modify message
Deprecated
client.beta.threads.messages.update(stringmessageID, MessageUpdateParams { thread_id, metadata } params, RequestOptionsoptions?): Message { id, assistant_id, attachments, 11 more }
POST/threads/{thread_id}/messages/{message_id}
Retrieve message
Deprecated
client.beta.threads.messages.retrieve(stringmessageID, MessageRetrieveParams { thread_id } params, RequestOptionsoptions?): Message { id, assistant_id, attachments, 11 more }
GET/threads/{thread_id}/messages/{message_id}
Delete message
Deprecated
client.beta.threads.messages.delete(stringmessageID, MessageDeleteParams { thread_id } params, RequestOptionsoptions?): MessageDeleted { id, deleted, object }
DELETE/threads/{thread_id}/messages/{message_id}
ModelsExpand Collapse
Annotation = FileCitationAnnotation { end_index, file_citation, start_index, 2 more } | FilePathAnnotation { end_index, file_path, 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.

One of the following:
FileCitationAnnotation { 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
minimum0
file_citation: FileCitation { file_id }
file_id: string

The ID of the specific File the citation is from.

start_index: number
minimum0
text: string

The text in the message content that needs to be replaced.

type: "file_citation"

Always file_citation.

FilePathAnnotation { 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
minimum0
file_path: FilePath { file_id }
file_id: string

The ID of the file that was generated.

start_index: number
minimum0
text: string

The text in the message content that needs to be replaced.

type: "file_path"

Always file_path.

AnnotationDelta = FileCitationDeltaAnnotation { index, type, end_index, 3 more } | FilePathDeltaAnnotation { 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.

One of the following:
FileCitationDeltaAnnotation { 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?: number
minimum0
file_citation?: FileCitation { file_id, quote }
file_id?: string

The ID of the specific File the citation is from.

quote?: string

The specific quote in the file.

start_index?: number
minimum0
text?: string

The text in the message content that needs to be replaced.

FilePathDeltaAnnotation { 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?: number
minimum0
file_path?: FilePath { file_id }
file_id?: string

The ID of the file that was generated.

start_index?: number
minimum0
text?: string

The text in the message content that needs to be replaced.

FileCitationAnnotation { 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
minimum0
file_citation: FileCitation { file_id }
file_id: string

The ID of the specific File the citation is from.

start_index: number
minimum0
text: string

The text in the message content that needs to be replaced.

type: "file_citation"

Always file_citation.

FileCitationDeltaAnnotation { 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?: number
minimum0
file_citation?: FileCitation { file_id, quote }
file_id?: string

The ID of the specific File the citation is from.

quote?: string

The specific quote in the file.

start_index?: number
minimum0
text?: string

The text in the message content that needs to be replaced.

FilePathAnnotation { 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
minimum0
file_path: FilePath { file_id }
file_id: string

The ID of the file that was generated.

start_index: number
minimum0
text: string

The text in the message content that needs to be replaced.

type: "file_path"

Always file_path.

FilePathDeltaAnnotation { 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?: number
minimum0
file_path?: FilePath { file_id }
file_id?: string

The ID of the file that was generated.

start_index?: number
minimum0
text?: string

The text in the message content that needs to be replaced.

ImageFile { file_id, detail }
file_id: string

The File 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?: "auto" | "low" | "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.

One of the following:
"auto"
"low"
"high"
ImageFileContentBlock { image_file, type }

References an image File in the content of a message.

image_file: ImageFile { file_id, detail }
type: "image_file"

Always image_file.

ImageFileDelta { detail, file_id }
detail?: "auto" | "low" | "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.

One of the following:
"auto"
"low"
"high"
file_id?: string

The File ID of the image in the message content. Set purpose="vision" when uploading the File if you need to later display the file content.

ImageFileDeltaBlock { index, type, image_file }

References an image File 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?: ImageFileDelta { detail, file_id }
ImageURL { url, detail }
url: string

The external URL of the image, must be a supported image types: jpeg, jpg, png, gif, webp.

formaturi
detail?: "auto" | "low" | "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

One of the following:
"auto"
"low"
"high"
ImageURLContentBlock { image_url, type }

References an image URL in the content of a message.

image_url: ImageURL { url, detail }
type: "image_url"

The type of the content part.

ImageURLDelta { detail, url }
detail?: "auto" | "low" | "high"

Specifies the detail level of the image. low uses fewer tokens, you can opt in to high resolution using high.

One of the following:
"auto"
"low"
"high"
url?: string

The URL of the image, must be a supported image types: jpeg, jpg, png, gif, webp.

ImageURLDeltaBlock { 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?: ImageURLDelta { detail, url }
Message { id, assistant_id, attachments, 11 more }

Represents a message within a thread.

id: string

The identifier, which can be referenced in API endpoints.

assistant_id: string | null

If applicable, the ID of the assistant that authored this message.

attachments: Array<Attachment> | null

A list of files attached to the message, and the tools they were added to.

file_id?: string

The ID of the file to attach to the message.

tools?: Array<CodeInterpreterTool { type } | AssistantToolsFileSearchTypeOnly { type } >

The tools to add this file to.

One of the following:
CodeInterpreterTool { type }
type: "code_interpreter"

The type of tool being defined: code_interpreter

AssistantToolsFileSearchTypeOnly { type }
type: "file_search"

The type of tool being defined: file_search

completed_at: number | null

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

content: Array<MessageContent>

The content of the message in array of text and/or images.

One of the following:
ImageFileContentBlock { image_file, type }

References an image File in the content of a message.

image_file: ImageFile { file_id, detail }
type: "image_file"

Always image_file.

ImageURLContentBlock { image_url, type }

References an image URL in the content of a message.

image_url: ImageURL { url, detail }
type: "image_url"

The type of the content part.

TextContentBlock { text, type }

The text content that is part of a message.

text: Text { annotations, value }
type: "text"

Always text.

RefusalContentBlock { 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 | null

The Unix timestamp (in seconds) for when the message was marked as incomplete.

incomplete_details: IncompleteDetails | null

On an incomplete message, details about why the message is incomplete.

reason: "content_filter" | "max_tokens" | "run_cancelled" | 2 more

The reason the message is incomplete.

One of the following:
"content_filter"
"max_tokens"
"run_cancelled"
"run_expired"
"run_failed"
metadata: Metadata | null

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" | "assistant"

The entity that produced the message. One of user or assistant.

One of the following:
"user"
"assistant"
run_id: string | null

The ID of the run 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" | "incomplete" | "completed"

The status of the message, which can be either in_progress, incomplete, or completed.

One of the following:
"in_progress"
"incomplete"
"completed"
thread_id: string

The thread ID that this message belongs to.

MessageContent = ImageFileContentBlock { image_file, type } | ImageURLContentBlock { image_url, type } | TextContentBlock { text, type } | RefusalContentBlock { refusal, type }

References an image File in the content of a message.

One of the following:
ImageFileContentBlock { image_file, type }

References an image File in the content of a message.

image_file: ImageFile { file_id, detail }
type: "image_file"

Always image_file.

ImageURLContentBlock { image_url, type }

References an image URL in the content of a message.

image_url: ImageURL { url, detail }
type: "image_url"

The type of the content part.

TextContentBlock { text, type }

The text content that is part of a message.

text: Text { annotations, value }
type: "text"

Always text.

RefusalContentBlock { refusal, type }

The refusal content generated by the assistant.

refusal: string
type: "refusal"

Always refusal.

MessageContentDelta = ImageFileDeltaBlock { index, type, image_file } | TextDeltaBlock { index, type, text } | RefusalDeltaBlock { index, type, refusal } | ImageURLDeltaBlock { index, type, image_url }

References an image File in the content of a message.

One of the following:
ImageFileDeltaBlock { index, type, image_file }

References an image File 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?: ImageFileDelta { detail, file_id }
TextDeltaBlock { 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?: TextDelta { annotations, value }
RefusalDeltaBlock { 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?: string
ImageURLDeltaBlock { 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?: ImageURLDelta { detail, url }
MessageContentPartParam = ImageFileContentBlock { image_file, type } | ImageURLContentBlock { image_url, type } | TextContentBlockParam { text, type }

References an image File in the content of a message.

One of the following:
ImageFileContentBlock { image_file, type }

References an image File in the content of a message.

image_file: ImageFile { file_id, detail }
type: "image_file"

Always image_file.

ImageURLContentBlock { image_url, type }

References an image URL in the content of a message.

image_url: ImageURL { url, detail }
type: "image_url"

The type of the content part.

TextContentBlockParam { text, type }

The text content that is part of a message.

text: string

Text content to be sent to the model

type: "text"

Always text.

MessageDeleted { id, deleted, object }
id: string
deleted: boolean
object: "thread.message.deleted"
MessageDelta { content, role }

The delta containing the fields that have changed on the Message.

content?: Array<MessageContentDelta>

The content of the message in array of text and/or images.

One of the following:
ImageFileDeltaBlock { index, type, image_file }

References an image File 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?: ImageFileDelta { detail, file_id }
TextDeltaBlock { 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?: TextDelta { annotations, value }
RefusalDeltaBlock { 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?: string
ImageURLDeltaBlock { 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?: ImageURLDelta { detail, url }
role?: "user" | "assistant"

The entity that produced the message. One of user or assistant.

One of the following:
"user"
"assistant"
MessageDeltaEvent { 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: MessageDelta { content, role }

The delta containing the fields that have changed on the Message.

object: "thread.message.delta"

The object type, which is always thread.message.delta.

RefusalContentBlock { refusal, type }

The refusal content generated by the assistant.

refusal: string
type: "refusal"

Always refusal.

RefusalDeltaBlock { 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?: string
Text { annotations, value }
annotations: Array<Annotation>
One of the following:
FileCitationAnnotation { 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
minimum0
file_citation: FileCitation { file_id }
file_id: string

The ID of the specific File the citation is from.

start_index: number
minimum0
text: string

The text in the message content that needs to be replaced.

type: "file_citation"

Always file_citation.

FilePathAnnotation { 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
minimum0
file_path: FilePath { file_id }
file_id: string

The ID of the file that was generated.

start_index: number
minimum0
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.

TextContentBlock { text, type }

The text content that is part of a message.

text: Text { annotations, value }
type: "text"

Always text.

TextContentBlockParam { text, type }

The text content that is part of a message.

text: string

Text content to be sent to the model

type: "text"

Always text.

TextDelta { annotations, value }
annotations?: Array<AnnotationDelta>
One of the following:
FileCitationDeltaAnnotation { 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?: number
minimum0
file_citation?: FileCitation { file_id, quote }
file_id?: string

The ID of the specific File the citation is from.

quote?: string

The specific quote in the file.

start_index?: number
minimum0
text?: string

The text in the message content that needs to be replaced.

FilePathDeltaAnnotation { 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?: number
minimum0
file_path?: FilePath { file_id }
file_id?: string

The ID of the file that was generated.

start_index?: number
minimum0
text?: string

The text in the message content that needs to be replaced.

value?: string

The data that makes up the text.

TextDeltaBlock { 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?: TextDelta { annotations, value }