Skip to content
For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Primary navigation
Theme

Create thread

POST
/threads

Create a thread.

Create thread

curl https://api.openai.com/v1/threads \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v2" \
  -d ''
Response example
{
  "id": "thread_abc123",
  "object": "thread",
  "created_at": 1699012949,
  "metadata": {},
  "tool_resources": {}
}
Body Parameters
JSON
messages: optional array of object { content, role, attachments, metadata }

A list of messages to start the thread with.

content: string or array of ImageFileContentBlock { image_file, type } or ImageURLContentBlock { image_url, type } or TextContentBlockParam { text, type }

The text contents of the message.

One of the following:
TextContent = string

The text contents of the message.

ArrayOfContentParts = array of ImageFileContentBlock { image_file, type } or ImageURLContentBlock { image_url, type } or TextContentBlockParam { text, type }

An array of content parts with a defined type, each can be of type text or images can be passed with image_url or image_file. Image types are only supported on Vision-compatible models.

minItems1
One of the following:
ImageFileContentBlock object { image_file, type }

References an image File in the content of a message.

image_file: 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: optional "auto" or "low" or "high" (default: "auto")

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"
type: "image_file"

Always image_file.

ImageURLContentBlock object { image_url, type }

References an image URL in the content of a message.

image_url: ImageURL { url, detail }
url: string

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

formaturi
detail: optional "auto" or "low" or "high" (default: "auto")

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"
type: "image_url"

The type of the content part.

TextContentBlockParam object { 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.

role: "user" or "assistant"

The role of the entity that is creating the message. Allowed values include:

  • user: Indicates the message is sent by an actual user and should be used in most cases to represent user-generated messages.
  • assistant: Indicates the message is generated by the assistant. Use this value to insert messages from the assistant into the conversation.
One of the following:
"user"
"assistant"
attachments: optional array of object { file_id, tools } or null

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

file_id: optional string

The ID of the file to attach to the message.

tools: optional array of CodeInterpreterTool { type } or FileSearchTool { type }

The tools to add this file to.

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

The type of tool being defined: code_interpreter

FileSearchTool object { type }
type: "file_search"

The type of tool being defined: file_search

metadata: optional Metadata or 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.

metadata: optional Metadata or 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.

tool_resources: optional object { code_interpreter, file_search } or 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: optional object { file_ids }
file_ids: optional array of string (default: [])

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

maxItems20
One of the following:
Returns
Thread object { 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: integer

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

formatunixtime
metadata: Metadata or 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: object { code_interpreter, file_search } or 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: optional object { file_ids }
file_ids: optional array of string (default: [])

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

maxItems20
Returns Examples
200 — Example
{
  "id": "id",
  "created_at": 0,
  "metadata": {
    "foo": "string"
  },
  "object": "thread",
  "tool_resources": {
    "code_interpreter": {
      "file_ids": [
        "string"
      ]
    },
    "file_search": {
      "vector_store_ids": [
        "string"
      ]
    }
  }
}