Skip to content
Primary navigation

ChatKit

ModelsExpand Collapse
ChatKitWorkflow { id, state_variables, tracing, version }

Workflow metadata and state returned for the session.

id: string

Identifier of the workflow backing the session.

state_variables: Record<string, string | boolean | number> | null

State variable key-value pairs applied when invoking the workflow. Defaults to null when no overrides were provided.

One of the following:
string
boolean
number
tracing: Tracing { enabled }

Tracing settings applied to the workflow.

enabled: boolean

Indicates whether tracing is enabled.

version: string | null

Specific workflow version used for the session. Defaults to null when using the latest deployment.

ChatKitSessions

Cancel chat session
client.beta.chatkit.sessions.cancel(stringsessionID, RequestOptionsoptions?): ChatSession { id, chatkit_configuration, client_secret, 7 more }
POST/chatkit/sessions/{session_id}/cancel
Create ChatKit session
client.beta.chatkit.sessions.create(SessionCreateParams { user, workflow, chatkit_configuration, 2 more } body, RequestOptionsoptions?): ChatSession { id, chatkit_configuration, client_secret, 7 more }
POST/chatkit/sessions

ChatKitThreads

List ChatKit thread items
client.beta.chatkit.threads.listItems(stringthreadID, ThreadListItemsParams { after, before, limit, order } query?, RequestOptionsoptions?): ConversationCursorPage<ChatKitThreadUserMessageItem { id, attachments, content, 5 more } | ChatKitThreadAssistantMessageItem { id, content, created_at, 3 more } | ChatKitWidgetItem { id, created_at, object, 3 more } | 3 more>
GET/chatkit/threads/{thread_id}/items
Retrieve ChatKit thread
client.beta.chatkit.threads.retrieve(stringthreadID, RequestOptionsoptions?): ChatKitThread { id, created_at, object, 3 more }
GET/chatkit/threads/{thread_id}
Delete ChatKit thread
client.beta.chatkit.threads.delete(stringthreadID, RequestOptionsoptions?): ThreadDeleteResponse { id, deleted, object }
DELETE/chatkit/threads/{thread_id}
List ChatKit threads
client.beta.chatkit.threads.list(ThreadListParams { after, before, limit, 2 more } query?, RequestOptionsoptions?): ConversationCursorPage<ChatKitThread { id, created_at, object, 3 more } >
GET/chatkit/threads
ModelsExpand Collapse
ChatSession { id, chatkit_configuration, client_secret, 7 more }

Represents a ChatKit session and its resolved configuration.

id: string

Identifier for the ChatKit session.

chatkit_configuration: ChatSessionChatKitConfiguration { automatic_thread_titling, file_upload, history }

Resolved ChatKit feature configuration for the session.

client_secret: string

Ephemeral client secret that authenticates session requests.

expires_at: number

Unix timestamp (in seconds) for when the session expires.

max_requests_per_1_minute: number

Convenience copy of the per-minute request limit.

object: "chatkit.session"

Type discriminator that is always chatkit.session.

rate_limits: ChatSessionRateLimits { max_requests_per_1_minute }

Resolved rate limit values.

Current lifecycle state of the session.

user: string

User identifier associated with the session.

workflow: ChatKitWorkflow { id, state_variables, tracing, version }

Workflow metadata for the session.

ChatSessionAutomaticThreadTitling { enabled }

Automatic thread title preferences for the session.

enabled: boolean

Whether automatic thread titling is enabled.

ChatSessionChatKitConfiguration { automatic_thread_titling, file_upload, history }

ChatKit configuration for the session.

automatic_thread_titling: ChatSessionAutomaticThreadTitling { enabled }

Automatic thread titling preferences.

file_upload: ChatSessionFileUpload { enabled, max_file_size, max_files }

Upload settings for the session.

history: ChatSessionHistory { enabled, recent_threads }

History retention configuration.

ChatSessionChatKitConfigurationParam { automatic_thread_titling, file_upload, history }

Optional per-session configuration settings for ChatKit behavior.

automatic_thread_titling?: AutomaticThreadTitling { enabled }

Configuration for automatic thread titling. When omitted, automatic thread titling is enabled by default.

enabled?: boolean

Enable automatic thread title generation. Defaults to true.

file_upload?: FileUpload { enabled, max_file_size, max_files }

Configuration for upload enablement and limits. When omitted, uploads are disabled by default (max_files 10, max_file_size 512 MB).

enabled?: boolean

Enable uploads for this session. Defaults to false.

max_file_size?: number

Maximum size in megabytes for each uploaded file. Defaults to 512 MB, which is the maximum allowable size.

maximum512
minimum1
max_files?: number

Maximum number of files that can be uploaded to the session. Defaults to 10.

minimum1
history?: History { enabled, recent_threads }

Configuration for chat history retention. When omitted, history is enabled by default with no limit on recent_threads (null).

enabled?: boolean

Enables chat users to access previous ChatKit threads. Defaults to true.

recent_threads?: number

Number of recent ChatKit threads users have access to. Defaults to unlimited when unset.

minimum1
ChatSessionExpiresAfterParam { anchor, seconds }

Controls when the session expires relative to an anchor timestamp.

anchor: "created_at"

Base timestamp used to calculate expiration. Currently fixed to created_at.

seconds: number

Number of seconds after the anchor when the session expires.

maximum600
minimum1
ChatSessionFileUpload { enabled, max_file_size, max_files }

Upload permissions and limits applied to the session.

enabled: boolean

Indicates if uploads are enabled for the session.

max_file_size: number | null

Maximum upload size in megabytes.

max_files: number | null

Maximum number of uploads allowed during the session.

ChatSessionHistory { enabled, recent_threads }

History retention preferences returned for the session.

enabled: boolean

Indicates if chat history is persisted for the session.

recent_threads: number | null

Number of prior threads surfaced in history views. Defaults to null when all history is retained.

ChatSessionRateLimits { max_requests_per_1_minute }

Active per-minute request limit for the session.

max_requests_per_1_minute: number

Maximum allowed requests per one-minute window.

ChatSessionRateLimitsParam { max_requests_per_1_minute }

Controls request rate limits for the session.

max_requests_per_1_minute?: number

Maximum number of requests allowed per minute for the session. Defaults to 10.

minimum1
ChatSessionStatus = "active" | "expired" | "cancelled"
One of the following:
"active"
"expired"
"cancelled"
ChatSessionWorkflowParam { id, state_variables, tracing, version }

Workflow reference and overrides applied to the chat session.

id: string

Identifier for the workflow invoked by the session.

state_variables?: Record<string, string | boolean | number>

State variables forwarded to the workflow. Keys may be up to 64 characters, values must be primitive types, and the map defaults to an empty object.

One of the following:
string
boolean
number
tracing?: Tracing { enabled }

Optional tracing overrides for the workflow invocation. When omitted, tracing is enabled by default.

enabled?: boolean

Whether tracing is enabled during the session. Defaults to true.

version?: string

Specific workflow version to run. Defaults to the latest deployed version.

ChatKitAttachment { id, mime_type, name, 2 more }

Attachment metadata included on thread items.

id: string

Identifier for the attachment.

mime_type: string

MIME type of the attachment.

name: string

Original display name for the attachment.

preview_url: string | null

Preview URL for rendering the attachment inline.

type: "image" | "file"

Attachment discriminator.

One of the following:
"image"
"file"
ChatKitResponseOutputText { annotations, text, type }

Assistant response text accompanied by optional annotations.

annotations: Array<File { source, type } | URL { source, type } >

Ordered list of annotations attached to the response text.

One of the following:
File { source, type }

Annotation that references an uploaded file.

source: Source { filename, type }

File attachment referenced by the annotation.

filename: string

Filename referenced by the annotation.

type: "file"

Type discriminator that is always file.

type: "file"

Type discriminator that is always file for this annotation.

URL { source, type }

Annotation that references a URL.

source: Source { type, url }

URL referenced by the annotation.

type: "url"

Type discriminator that is always url.

url: string

URL referenced by the annotation.

type: "url"

Type discriminator that is always url for this annotation.

text: string

Assistant generated text.

type: "output_text"

Type discriminator that is always output_text.

ChatKitThread { id, created_at, object, 3 more }

Represents a ChatKit thread and its current status.

id: string

Identifier of the thread.

created_at: number

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

object: "chatkit.thread"

Type discriminator that is always chatkit.thread.

status: Active { type } | Locked { reason, type } | Closed { reason, type }

Current status for the thread. Defaults to active for newly created threads.

One of the following:
Active { type }

Indicates that a thread is active.

type: "active"

Status discriminator that is always active.

Locked { reason, type }

Indicates that a thread is locked and cannot accept new input.

reason: string | null

Reason that the thread was locked. Defaults to null when no reason is recorded.

type: "locked"

Status discriminator that is always locked.

Closed { reason, type }

Indicates that a thread has been closed.

reason: string | null

Reason that the thread was closed. Defaults to null when no reason is recorded.

type: "closed"

Status discriminator that is always closed.

title: string | null

Optional human-readable title for the thread. Defaults to null when no title has been generated.

user: string

Free-form string that identifies your end user who owns the thread.

ChatKitThreadAssistantMessageItem { id, content, created_at, 3 more }

Assistant-authored message within a thread.

id: string

Identifier of the thread item.

content: Array<ChatKitResponseOutputText { annotations, text, type } >

Ordered assistant response segments.

annotations: Array<File { source, type } | URL { source, type } >

Ordered list of annotations attached to the response text.

One of the following:
File { source, type }

Annotation that references an uploaded file.

source: Source { filename, type }

File attachment referenced by the annotation.

filename: string

Filename referenced by the annotation.

type: "file"

Type discriminator that is always file.

type: "file"

Type discriminator that is always file for this annotation.

URL { source, type }

Annotation that references a URL.

source: Source { type, url }

URL referenced by the annotation.

type: "url"

Type discriminator that is always url.

url: string

URL referenced by the annotation.

type: "url"

Type discriminator that is always url for this annotation.

text: string

Assistant generated text.

type: "output_text"

Type discriminator that is always output_text.

created_at: number

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

object: "chatkit.thread_item"

Type discriminator that is always chatkit.thread_item.

thread_id: string

Identifier of the parent thread.

type: "chatkit.assistant_message"

Type discriminator that is always chatkit.assistant_message.

ChatKitThreadItemList { data, first_id, has_more, 2 more }

A paginated list of thread items rendered for the ChatKit API.

data: Array<ChatKitThreadUserMessageItem { id, attachments, content, 5 more } | ChatKitThreadAssistantMessageItem { id, content, created_at, 3 more } | ChatKitWidgetItem { id, created_at, object, 3 more } | 3 more>

A list of items

One of the following:
ChatKitThreadUserMessageItem { id, attachments, content, 5 more }

User-authored messages within a thread.

id: string

Identifier of the thread item.

attachments: Array<ChatKitAttachment { id, mime_type, name, 2 more } >

Attachments associated with the user message. Defaults to an empty list.

id: string

Identifier for the attachment.

mime_type: string

MIME type of the attachment.

name: string

Original display name for the attachment.

preview_url: string | null

Preview URL for rendering the attachment inline.

type: "image" | "file"

Attachment discriminator.

One of the following:
"image"
"file"
content: Array<InputText { text, type } | QuotedText { text, type } >

Ordered content elements supplied by the user.

One of the following:
InputText { text, type }

Text block that a user contributed to the thread.

text: string

Plain-text content supplied by the user.

type: "input_text"

Type discriminator that is always input_text.

QuotedText { text, type }

Quoted snippet that the user referenced in their message.

text: string

Quoted text content.

type: "quoted_text"

Type discriminator that is always quoted_text.

created_at: number

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

inference_options: InferenceOptions | null

Inference overrides applied to the message. Defaults to null when unset.

model: string | null

Model name that generated the response. Defaults to null when using the session default.

tool_choice: ToolChoice | null

Preferred tool to invoke. Defaults to null when ChatKit should auto-select.

id: string

Identifier of the requested tool.

object: "chatkit.thread_item"

Type discriminator that is always chatkit.thread_item.

thread_id: string

Identifier of the parent thread.

type: "chatkit.user_message"
ChatKitThreadAssistantMessageItem { id, content, created_at, 3 more }

Assistant-authored message within a thread.

id: string

Identifier of the thread item.

content: Array<ChatKitResponseOutputText { annotations, text, type } >

Ordered assistant response segments.

annotations: Array<File { source, type } | URL { source, type } >

Ordered list of annotations attached to the response text.

One of the following:
File { source, type }

Annotation that references an uploaded file.

source: Source { filename, type }

File attachment referenced by the annotation.

filename: string

Filename referenced by the annotation.

type: "file"

Type discriminator that is always file.

type: "file"

Type discriminator that is always file for this annotation.

URL { source, type }

Annotation that references a URL.

source: Source { type, url }

URL referenced by the annotation.

type: "url"

Type discriminator that is always url.

url: string

URL referenced by the annotation.

type: "url"

Type discriminator that is always url for this annotation.

text: string

Assistant generated text.

type: "output_text"

Type discriminator that is always output_text.

created_at: number

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

object: "chatkit.thread_item"

Type discriminator that is always chatkit.thread_item.

thread_id: string

Identifier of the parent thread.

type: "chatkit.assistant_message"

Type discriminator that is always chatkit.assistant_message.

ChatKitWidgetItem { id, created_at, object, 3 more }

Thread item that renders a widget payload.

id: string

Identifier of the thread item.

created_at: number

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

object: "chatkit.thread_item"

Type discriminator that is always chatkit.thread_item.

thread_id: string

Identifier of the parent thread.

type: "chatkit.widget"

Type discriminator that is always chatkit.widget.

widget: string

Serialized widget payload rendered in the UI.

ChatKitClientToolCall { id, arguments, call_id, 7 more }

Record of a client side tool invocation initiated by the assistant.

id: string

Identifier of the thread item.

arguments: string

JSON-encoded arguments that were sent to the tool.

call_id: string

Identifier for the client tool call.

created_at: number

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

name: string

Tool name that was invoked.

object: "chatkit.thread_item"

Type discriminator that is always chatkit.thread_item.

output: string | null

JSON-encoded output captured from the tool. Defaults to null while execution is in progress.

status: "in_progress" | "completed"

Execution status for the tool call.

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

Identifier of the parent thread.

type: "chatkit.client_tool_call"

Type discriminator that is always chatkit.client_tool_call.

ChatKitTask { id, created_at, heading, 5 more }

Task emitted by the workflow to show progress and status updates.

id: string

Identifier of the thread item.

created_at: number

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

heading: string | null

Optional heading for the task. Defaults to null when not provided.

object: "chatkit.thread_item"

Type discriminator that is always chatkit.thread_item.

summary: string | null

Optional summary that describes the task. Defaults to null when omitted.

task_type: "custom" | "thought"

Subtype for the task.

One of the following:
"custom"
"thought"
thread_id: string

Identifier of the parent thread.

type: "chatkit.task"

Type discriminator that is always chatkit.task.

ChatKitTaskGroup { id, created_at, object, 3 more }

Collection of workflow tasks grouped together in the thread.

id: string

Identifier of the thread item.

created_at: number

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

object: "chatkit.thread_item"

Type discriminator that is always chatkit.thread_item.

tasks: Array<Task>

Tasks included in the group.

heading: string | null

Optional heading for the grouped task. Defaults to null when not provided.

summary: string | null

Optional summary that describes the grouped task. Defaults to null when omitted.

type: "custom" | "thought"

Subtype for the grouped task.

One of the following:
"custom"
"thought"
thread_id: string

Identifier of the parent thread.

type: "chatkit.task_group"

Type discriminator that is always chatkit.task_group.

first_id: string | null

The ID of the first item in the list.

has_more: boolean

Whether there are more items available.

last_id: string | null

The ID of the last item in the list.

object: "list"

The type of object returned, must be list.

ChatKitThreadUserMessageItem { id, attachments, content, 5 more }

User-authored messages within a thread.

id: string

Identifier of the thread item.

attachments: Array<ChatKitAttachment { id, mime_type, name, 2 more } >

Attachments associated with the user message. Defaults to an empty list.

id: string

Identifier for the attachment.

mime_type: string

MIME type of the attachment.

name: string

Original display name for the attachment.

preview_url: string | null

Preview URL for rendering the attachment inline.

type: "image" | "file"

Attachment discriminator.

One of the following:
"image"
"file"
content: Array<InputText { text, type } | QuotedText { text, type } >

Ordered content elements supplied by the user.

One of the following:
InputText { text, type }

Text block that a user contributed to the thread.

text: string

Plain-text content supplied by the user.

type: "input_text"

Type discriminator that is always input_text.

QuotedText { text, type }

Quoted snippet that the user referenced in their message.

text: string

Quoted text content.

type: "quoted_text"

Type discriminator that is always quoted_text.

created_at: number

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

inference_options: InferenceOptions | null

Inference overrides applied to the message. Defaults to null when unset.

model: string | null

Model name that generated the response. Defaults to null when using the session default.

tool_choice: ToolChoice | null

Preferred tool to invoke. Defaults to null when ChatKit should auto-select.

id: string

Identifier of the requested tool.

object: "chatkit.thread_item"

Type discriminator that is always chatkit.thread_item.

thread_id: string

Identifier of the parent thread.

type: "chatkit.user_message"
ChatKitWidgetItem { id, created_at, object, 3 more }

Thread item that renders a widget payload.

id: string

Identifier of the thread item.

created_at: number

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

object: "chatkit.thread_item"

Type discriminator that is always chatkit.thread_item.

thread_id: string

Identifier of the parent thread.

type: "chatkit.widget"

Type discriminator that is always chatkit.widget.

widget: string

Serialized widget payload rendered in the UI.