SpyBara
Go Premium

ruby/resources/beta/subresources/chatkit/index.md 2026-07-10 23:02 UTC to 2026-07-12 06:58 UTC

8 added, 6 removed.

2026
Thu 16 20:57 Wed 15 02:58 Tue 14 06:58 Mon 13 15:59 Sun 12 06:58 Fri 10 23:02 Thu 9 20:58 Tue 7 08:02

ChatKit

Domain Types

ChatKit Workflow

  • class ChatKitWorkflow

    Workflow metadata and state returned for the session.

    • id: String

      Identifier of the workflow backing the session.

    • state_variables: Hash[Symbol, String | bool | Float]

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

      • String = String

      • UnionMember1 = bool

      • Float = Float

    • tracing: Tracing{ enabled}

      Tracing settings applied to the workflow.

      • enabled: bool

        Indicates whether tracing is enabled.

    • version: String

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

Sessions

Cancel chat session

beta.chatkit.sessions.cancel(session_id) -> ChatSession

post /chatkit/sessions/{session_id}/cancel

Cancel an active ChatKit session and return its most recent metadata.

Cancelling prevents new requests from using the issued client secret.

Parameters

  • session_id: String

Returns

  • class ChatSession

    Represents a ChatKit session and its resolved configuration.

    • id: String

      Identifier for the ChatKit session.

    • chatkit_configuration: ChatSessionChatKitConfiguration

      Resolved ChatKit feature configuration for the session.

      • automatic_thread_titling: ChatSessionAutomaticThreadTitling

        Automatic thread titling preferences.

        • enabled: bool

          Whether automatic thread titling is enabled.

      • file_upload: ChatSessionFileUpload

        Upload settings for the session.

        • enabled: bool

          Indicates if uploads are enabled for the session.

        • max_file_size: Integer

          Maximum upload size in megabytes.

        • max_files: Integer

          Maximum number of uploads allowed during the session.

      • history: ChatSessionHistory

        History retention configuration.

        • enabled: bool

          Indicates if chat history is persisted for the session.

        • recent_threads: Integer

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

    • client_secret: String

      Ephemeral client secret that authenticates session requests.

    • expires_at: Integer

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

    • max_requests_per_1_minute: Integer

      Convenience copy of the per-minute request limit.

    • object: :"chatkit.session"

      Type discriminator that is always chatkit.session.

      • :"chatkit.session"
    • rate_limits: ChatSessionRateLimits

      Resolved rate limit values.

      • max_requests_per_1_minute: Integer

        Maximum allowed requests per one-minute window.

    • status: ChatSessionStatus

      Current lifecycle state of the session.

      • :active

      • :expired

      • :cancelled

    • user: String

      User identifier associated with the session.

    • workflow: ChatKitWorkflow

      Workflow metadata for the session.

      • id: String

        Identifier of the workflow backing the session.

      • state_variables: Hash[Symbol, String | bool | Float]

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

        • String = String

        • UnionMember1 = bool

        • Float = Float

      • tracing: Tracing{ enabled}

        Tracing settings applied to the workflow.

        • enabled: bool

          Indicates whether tracing is enabled.

      • version: String

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

Example

require "openai"

openai = OpenAI::Client.new(api_key: "My API Key")

chat_session = openai.beta.chatkit.sessions.cancel("cksess_123")

puts(chat_session)

Response

{
  "id": "id",
  "chatkit_configuration": {
    "automatic_thread_titling": {
      "enabled": true
    },
    "file_upload": {
      "enabled": true,
      "max_file_size": 0,
      "max_files": 0
    },
    "history": {
      "enabled": true,
      "recent_threads": 0
    }
  },
  "client_secret": "client_secret",
  "expires_at": 0,
  "max_requests_per_1_minute": 0,
  "object": "chatkit.session",
  "rate_limits": {
    "max_requests_per_1_minute": 0
  },
  "status": "active",
  "user": "user",
  "workflow": {
    "id": "id",
    "state_variables": {
      "foo": "string"
    },
    "tracing": {
      "enabled": true
    },
    "version": "version"
  }
}

Example

require "openai"

openai = OpenAI::Client.new

chat_session = openai.beta.chatkit.sessions.cancel("cksess_123")

puts(chat_session)

Response

{
  "id": "cksess_123",
  "object": "chatkit.session",
  "workflow": {
    "id": "workflow_alpha",
    "version": "1"
  },
  "scope": {
    "customer_id": "cust_456"
  },
  "max_requests_per_1_minute": 30,
  "ttl_seconds": 900,
  "status": "cancelled",
  "cancelled_at": 1712345678
}

Create ChatKit session

beta.chatkit.sessions.create(**kwargs) -> ChatSession

post /chatkit/sessions

Create a ChatKit session.

Parameters

  • user: String

    A free-form string that identifies your end user; ensures this Session can access other objects that have the same user scope.

  • workflow: ChatSessionWorkflowParam

    Workflow that powers the session.

    • id: String

      Identifier for the workflow invoked by the session.

    • state_variables: Hash[Symbol, String | bool | Float]

      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.

      • String = String

      • UnionMember1 = bool

      • Float = Float

    • tracing: Tracing{ enabled}

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

      • enabled: bool

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

    • version: String

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

  • chatkit_configuration: ChatSessionChatKitConfigurationParam

    Optional overrides for ChatKit runtime configuration features

    • automatic_thread_titling: AutomaticThreadTitling{ enabled}

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

      • enabled: bool

        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: bool

        Enable uploads for this session. Defaults to false.

      • max_file_size: Integer

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

      • max_files: Integer

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

    • 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: bool

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

      • recent_threads: Integer

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

  • expires_after: ChatSessionExpiresAfterParam

    Optional override for session expiration timing in seconds from creation. Defaults to 10 minutes.

    • anchor: :created_at

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

      • :created_at
    • seconds: Integer

      Number of seconds after the anchor when the session expires.

  • rate_limits: ChatSessionRateLimitsParam

    Optional override for per-minute request limits. When omitted, defaults to 10.

    • max_requests_per_1_minute: Integer

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

Returns

  • class ChatSession

    Represents a ChatKit session and its resolved configuration.

    • id: String

      Identifier for the ChatKit session.

    • chatkit_configuration: ChatSessionChatKitConfiguration

      Resolved ChatKit feature configuration for the session.

      • automatic_thread_titling: ChatSessionAutomaticThreadTitling

        Automatic thread titling preferences.

        • enabled: bool

          Whether automatic thread titling is enabled.

      • file_upload: ChatSessionFileUpload

        Upload settings for the session.

        • enabled: bool

          Indicates if uploads are enabled for the session.

        • max_file_size: Integer

          Maximum upload size in megabytes.

        • max_files: Integer

          Maximum number of uploads allowed during the session.

      • history: ChatSessionHistory

        History retention configuration.

        • enabled: bool

          Indicates if chat history is persisted for the session.

        • recent_threads: Integer

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

    • client_secret: String

      Ephemeral client secret that authenticates session requests.

    • expires_at: Integer

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

    • max_requests_per_1_minute: Integer

      Convenience copy of the per-minute request limit.

    • object: :"chatkit.session"

      Type discriminator that is always chatkit.session.

      • :"chatkit.session"
    • rate_limits: ChatSessionRateLimits

      Resolved rate limit values.

      • max_requests_per_1_minute: Integer

        Maximum allowed requests per one-minute window.

    • status: ChatSessionStatus

      Current lifecycle state of the session.

      • :active

      • :expired

      • :cancelled

    • user: String

      User identifier associated with the session.

    • workflow: ChatKitWorkflow

      Workflow metadata for the session.

      • id: String

        Identifier of the workflow backing the session.

      • state_variables: Hash[Symbol, String | bool | Float]

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

        • String = String

        • UnionMember1 = bool

        • Float = Float

      • tracing: Tracing{ enabled}

        Tracing settings applied to the workflow.

        • enabled: bool

          Indicates whether tracing is enabled.

      • version: String

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

Example

require "openai"

openai = OpenAI::Client.new(api_key: "My API Key")

chat_session = openai.beta.chatkit.sessions.create(user: "x", workflow: {id: "id"})

puts(chat_session)

Response

{
  "id": "id",
  "chatkit_configuration": {
    "automatic_thread_titling": {
      "enabled": true
    },
    "file_upload": {
      "enabled": true,
      "max_file_size": 0,
      "max_files": 0
    },
    "history": {
      "enabled": true,
      "recent_threads": 0
    }
  },
  "client_secret": "client_secret",
  "expires_at": 0,
  "max_requests_per_1_minute": 0,
  "object": "chatkit.session",
  "rate_limits": {
    "max_requests_per_1_minute": 0
  },
  "status": "active",
  "user": "user",
  "workflow": {
    "id": "id",
    "state_variables": {
      "foo": "string"
    },
    "tracing": {
      "enabled": true
    },
    "version": "version"
  }
}

Example

require "openai"

openai = OpenAI::Client.new

chat_session = openai.beta.chatkit.sessions.create(user: "user", workflow: {id: "id"})

puts(chat_session)

Response

{
  "client_secret": "chatkit_token_123",
  "expires_at": 1735689600,
  "workflow": {
    "id": "workflow_alpha",
    "version": "2024-10-01"
  },
  "scope": {
    "project": "alpha",
    "environment": "staging"
  },
  "max_requests_per_1_minute": 60,
  "max_requests_per_session": 500,
  "status": "active"
}

Threads

List ChatKit thread items

beta.chatkit.threads.list_items(thread_id, **kwargs) -> ConversationCursorPage<ChatKitThreadUserMessageItem | ChatKitThreadAssistantMessageItem | ChatKitWidgetItem | 3 more>

get /chatkit/threads/{thread_id}/items

List items that belong to a ChatKit thread.

Parameters

  • thread_id: String

  • after: String

    List items created after this thread item ID. Defaults to null for the first page.

  • before: String

    List items created before this thread item ID. Defaults to null for the newest results.

  • limit: Integer

    Maximum number of thread items to return. Defaults to 20.

  • order: :asc | :desc

    Sort order for results by creation time. Defaults to desc.

    • :asc

    • :desc

Returns

  • ChatKitThreadUserMessageItem | ChatKitThreadAssistantMessageItem | ChatKitWidgetItem | 3 more

    • class ChatKitThreadUserMessageItem

      User-authored messages within a thread.

      • id: String

        Identifier of the thread item.

      • attachments: Array[ChatKitAttachment]

        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

          Preview URL for rendering the attachment inline.

        • type: :image | :file

          Attachment discriminator.

          • :image

          • :file

      • content: Array[InputText{ text, type} | QuotedText{ text, type}]

        Ordered content elements supplied by the user.

        • class InputText

          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.

            • :input_text
        • class QuotedText

          Quoted snippet that the user referenced in their message.

          • text: String

            Quoted text content.

          • type: :quoted_text

            Type discriminator that is always quoted_text.

            • :quoted_text
      • created_at: Integer

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

      • inference_options: InferenceOptions{ model, tool_choice}

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

        • model: String

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

        • tool_choice: ToolChoice{ id}

          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.

        • :"chatkit.thread_item"
      • thread_id: String

        Identifier of the parent thread.

      • type: :"chatkit.user_message"

        • :"chatkit.user_message"
    • class ChatKitThreadAssistantMessageItem

      Assistant-authored message within a thread.

      • id: String

        Identifier of the thread item.

      • content: Array[ChatKitResponseOutputText]

        Ordered assistant response segments.

        • annotations: Array[File{ source, type} | URL{ source, type}]

          Ordered list of annotations attached to the response text.

          • class File

            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.

                • :file
            • type: :file

              Type discriminator that is always file for this annotation.

              • :file
          • class URL

            Annotation that references a URL.

            • source: Source{ type, url}

              URL referenced by the annotation.

              • type: :url

                Type discriminator that is always url.

                • :url
              • url: String

                URL referenced by the annotation.

            • type: :url

              Type discriminator that is always url for this annotation.

              • :url
        • text: String

          Assistant generated text.

        • type: :output_text

          Type discriminator that is always output_text.

          • :output_text
      • created_at: Integer

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

      • object: :"chatkit.thread_item"

        Type discriminator that is always chatkit.thread_item.

        • :"chatkit.thread_item"
      • thread_id: String

        Identifier of the parent thread.

      • type: :"chatkit.assistant_message"

        Type discriminator that is always chatkit.assistant_message.

        • :"chatkit.assistant_message"
    • class ChatKitWidgetItem

      Thread item that renders a widget payload.

      • id: String

        Identifier of the thread item.

      • created_at: Integer

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

      • object: :"chatkit.thread_item"

        Type discriminator that is always chatkit.thread_item.

        • :"chatkit.thread_item"
      • thread_id: String

        Identifier of the parent thread.

      • type: :"chatkit.widget"

        Type discriminator that is always chatkit.widget.

        • :"chatkit.widget"
      • widget: String

        Serialized widget payload rendered in the UI.

    • class ChatKitClientToolCall

      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: Integer

        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.

        • :"chatkit.thread_item"
      • output: String

        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.

        • :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.

        • :"chatkit.client_tool_call"
    • class ChatKitTask

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

      • id: String

        Identifier of the thread item.

      • created_at: Integer

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

      • heading: String

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

      • object: :"chatkit.thread_item"

        Type discriminator that is always chatkit.thread_item.

        • :"chatkit.thread_item"
      • summary: String

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

      • task_type: :custom | :thought

        Subtype for the task.

        • :custom

        • :thought

      • thread_id: String

        Identifier of the parent thread.

      • type: :"chatkit.task"

        Type discriminator that is always chatkit.task.

        • :"chatkit.task"
    • class ChatKitTaskGroup

      Collection of workflow tasks grouped together in the thread.

      • id: String

        Identifier of the thread item.

      • created_at: Integer

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

      • object: :"chatkit.thread_item"

        Type discriminator that is always chatkit.thread_item.

        • :"chatkit.thread_item"
      • tasks: Array[Task{ heading, summary, type}]

        Tasks included in the group.

        • heading: String

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

        • summary: String

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

        • type: :custom | :thought

          Subtype for the grouped task.

          • :custom

          • :thought

      • thread_id: String

        Identifier of the parent thread.

      • type: :"chatkit.task_group"

        Type discriminator that is always chatkit.task_group.

        • :"chatkit.task_group"

Example

require "openai"

openai = OpenAI::Client.new(api_key: "My API Key")

page = openai.beta.chatkit.threads.list_items("cthr_123")

puts(page)

Response

{
  "data": [
    {
      "id": "id",
      "attachments": [
        {
          "id": "id",
          "mime_type": "mime_type",
          "name": "name",
          "preview_url": "https://example.com",
          "type": "image"
        }
      ],
      "content": [
        {
          "text": "text",
          "type": "input_text"
        }
      ],
      "created_at": 0,
      "inference_options": {
        "model": "model",
        "tool_choice": {
          "id": "id"
        }
      },
      "object": "chatkit.thread_item",
      "thread_id": "thread_id",
      "type": "chatkit.user_message"
    }
  ],
  "first_id": "first_id",
  "has_more": true,
  "last_id": "last_id",
  "object": "list"
}

Example

require "openai"

openai = OpenAI::Client.new

page = openai.beta.chatkit.threads.list_items("cthr_123")

puts(page)

Response

{
  "data": [
    {
      "id": "cthi_user_001",
      "object": "chatkit.thread_item",
      "type": "user_message",
      "content": [
        {
          "type": "input_text",
          "text": "I need help debugging an onboarding issue."
        }
      ],
      "attachments": []
    },
    {
      "id": "cthi_assistant_002",
      "object": "chatkit.thread_item",
      "type": "assistant_message",
      "content": [
        {
          "type": "output_text",
          "text": "Let's start by confirming the workflow version you deployed."
        }
      ]
    }
  ],
  "has_more": false,
  "object": "list"
}

Retrieve ChatKit thread

beta.chatkit.threads.retrieve(thread_id) -> ChatKitThread

get /chatkit/threads/{thread_id}

Retrieve a ChatKit thread by its identifier.

Parameters

  • thread_id: String

Returns

  • class ChatKitThread

    Represents a ChatKit thread and its current status.

    • id: String

      Identifier of the thread.

    • created_at: Integer

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

    • object: :"chatkit.thread"

      Type discriminator that is always chatkit.thread.

      • :"chatkit.thread"
    • status: Active{ type} | Locked{ reason, type} | Closed{ reason, type}

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

      • class Active

        Indicates that a thread is active.

        • type: :active

          Status discriminator that is always active.

          • :active
      • class Locked

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

        • reason: String

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

        • type: :locked

          Status discriminator that is always locked.

          • :locked
      • class Closed

        Indicates that a thread has been closed.

        • reason: String

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

        • type: :closed

          Status discriminator that is always closed.

          • :closed
    • title: String

      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.

Example

require "openai"

openai = OpenAI::Client.new(api_key: "My API Key")

chatkit_thread = openai.beta.chatkit.threads.retrieve("cthr_123")

puts(chatkit_thread)

Response

{
  "id": "cthr_def456",
  "created_at": 1712345600,
  "object": "chatkit.thread",
  "status": {
    "type": "active"
  },
  "title": "Demo feedback",
  "user": "user_456"
}

Example

require "openai"

openai = OpenAI::Client.new

chatkit_thread = openai.beta.chatkit.threads.retrieve("cthr_123")

puts(chatkit_thread)

Response

{
  "id": "cthr_abc123",
  "object": "chatkit.thread",
  "title": "Customer escalation",
  "items": {
    "data": [
      {
        "id": "cthi_user_001",
        "object": "chatkit.thread_item",
        "type": "user_message",
        "content": [
          {
            "type": "input_text",
            "text": "I need help debugging an onboarding issue."
          }
        ],
        "attachments": []
      },
      {
        "id": "cthi_assistant_002",
        "object": "chatkit.thread_item",
        "type": "assistant_message",
        "content": [
          {
            "type": "output_text",
            "text": "Let's start by confirming the workflow version you deployed."
          }
        ]
      }
    ],
    "has_more": false
  }
}

Delete ChatKit thread

beta.chatkit.threads.delete(thread_id) -> ThreadDeleteResponse

delete /chatkit/threads/{thread_id}

Delete a ChatKit thread along with its items and stored attachments.

Parameters

  • thread_id: String

Returns

  • class ThreadDeleteResponse

    Confirmation payload returned after deleting a thread.

    • id: String

      Identifier of the deleted thread.

    • deleted: bool

      Indicates that the thread has been deleted.

    • object: :"chatkit.thread.deleted"

      Type discriminator that is always chatkit.thread.deleted.

      • :"chatkit.thread.deleted"

Example

require "openai"

openai = OpenAI::Client.new(api_key: "My API Key")

thread = openai.beta.chatkit.threads.delete("cthr_123")

puts(thread)

Response

{
  "id": "id",
  "deleted": true,
  "object": "chatkit.thread.deleted"
}

Example

require "openai"

openai = OpenAI::Client.new

thread = openai.beta.chat_kit.threads.delete("cthr_123")

puts(thread)

List ChatKit threads

beta.chatkit.threads.list(**kwargs) -> ConversationCursorPage<ChatKitThread>

get /chatkit/threads

List ChatKit threads with optional pagination and user filters.

Parameters

  • after: String

    List items created after this thread item ID. Defaults to null for the first page.

  • before: String

    List items created before this thread item ID. Defaults to null for the newest results.

  • limit: Integer

    Maximum number of thread items to return. Defaults to 20.

  • order: :asc | :desc

    Sort order for results by creation time. Defaults to desc.

    • :asc

    • :desc

  • user: String

    Filter threads that belong to this user identifier. Defaults to null to return all users.

Returns

  • class ChatKitThread

    Represents a ChatKit thread and its current status.

    • id: String

      Identifier of the thread.

    • created_at: Integer

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

    • object: :"chatkit.thread"

      Type discriminator that is always chatkit.thread.

      • :"chatkit.thread"
    • status: Active{ type} | Locked{ reason, type} | Closed{ reason, type}

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

      • class Active

        Indicates that a thread is active.

        • type: :active

          Status discriminator that is always active.

          • :active
      • class Locked

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

        • reason: String

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

        • type: :locked

          Status discriminator that is always locked.

          • :locked
      • class Closed

        Indicates that a thread has been closed.

        • reason: String

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

        • type: :closed

          Status discriminator that is always closed.

          • :closed
    • title: String

      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.

Example

require "openai"

openai = OpenAI::Client.new(api_key: "My API Key")

page = openai.beta.chatkit.threads.list

puts(page)

Response

{
  "data": [
    {
      "id": "cthr_def456",
      "created_at": 1712345600,
      "object": "chatkit.thread",
      "status": {
        "type": "active"
      },
      "title": "Demo feedback",
      "user": "user_456"
    }
  ],
  "first_id": "first_id",
  "has_more": true,
  "last_id": "last_id",
  "object": "list"
}

Example

require "openai"

openai = OpenAI::Client.new

page = openai.beta.chatkit.threads.list

puts(page)

Response

{
  "data": [
    {
      "id": "cthr_abc123",
      "object": "chatkit.thread",
      "title": "Customer escalation"
    },
    {
      "id": "cthr_def456",
      "object": "chatkit.thread",
      "title": "Demo feedback"
    }
  ],
  "has_more": false,
  "object": "list"
}

Domain Types

Chat Session

  • class ChatSession

    Represents a ChatKit session and its resolved configuration.

    • id: String

      Identifier for the ChatKit session.

    • chatkit_configuration: ChatSessionChatKitConfiguration

      Resolved ChatKit feature configuration for the session.

      • automatic_thread_titling: ChatSessionAutomaticThreadTitling

        Automatic thread titling preferences.

        • enabled: bool

          Whether automatic thread titling is enabled.

      • file_upload: ChatSessionFileUpload

        Upload settings for the session.

        • enabled: bool

          Indicates if uploads are enabled for the session.

        • max_file_size: Integer

          Maximum upload size in megabytes.

        • max_files: Integer

          Maximum number of uploads allowed during the session.

      • history: ChatSessionHistory

        History retention configuration.

        • enabled: bool

          Indicates if chat history is persisted for the session.

        • recent_threads: Integer

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

    • client_secret: String

      Ephemeral client secret that authenticates session requests.

    • expires_at: Integer

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

    • max_requests_per_1_minute: Integer

      Convenience copy of the per-minute request limit.

    • object: :"chatkit.session"

      Type discriminator that is always chatkit.session.

      • :"chatkit.session"
    • rate_limits: ChatSessionRateLimits

      Resolved rate limit values.

      • max_requests_per_1_minute: Integer

        Maximum allowed requests per one-minute window.

    • status: ChatSessionStatus

      Current lifecycle state of the session.

      • :active

      • :expired

      • :cancelled

    • user: String

      User identifier associated with the session.

    • workflow: ChatKitWorkflow

      Workflow metadata for the session.

      • id: String

        Identifier of the workflow backing the session.

      • state_variables: Hash[Symbol, String | bool | Float]

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

        • String = String

        • UnionMember1 = bool

        • Float = Float

      • tracing: Tracing{ enabled}

        Tracing settings applied to the workflow.

        • enabled: bool

          Indicates whether tracing is enabled.

      • version: String

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

Chat Session Automatic Thread Titling

  • class ChatSessionAutomaticThreadTitling

    Automatic thread title preferences for the session.

    • enabled: bool

      Whether automatic thread titling is enabled.

Chat Session ChatKit Configuration

  • class ChatSessionChatKitConfiguration

    ChatKit configuration for the session.

    • automatic_thread_titling: ChatSessionAutomaticThreadTitling

      Automatic thread titling preferences.

      • enabled: bool

        Whether automatic thread titling is enabled.

    • file_upload: ChatSessionFileUpload

      Upload settings for the session.

      • enabled: bool

        Indicates if uploads are enabled for the session.

      • max_file_size: Integer

        Maximum upload size in megabytes.

      • max_files: Integer

        Maximum number of uploads allowed during the session.

    • history: ChatSessionHistory

      History retention configuration.

      • enabled: bool

        Indicates if chat history is persisted for the session.

      • recent_threads: Integer

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

Chat Session ChatKit Configuration Param

  • class ChatSessionChatKitConfigurationParam

    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: bool

        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: bool

        Enable uploads for this session. Defaults to false.

      • max_file_size: Integer

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

      • max_files: Integer

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

    • 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: bool

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

      • recent_threads: Integer

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

Chat Session Expires After Param

  • class ChatSessionExpiresAfterParam

    Controls when the session expires relative to an anchor timestamp.

    • anchor: :created_at

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

      • :created_at
    • seconds: Integer

      Number of seconds after the anchor when the session expires.

Chat Session File Upload

  • class ChatSessionFileUpload

    Upload permissions and limits applied to the session.

    • enabled: bool

      Indicates if uploads are enabled for the session.

    • max_file_size: Integer

      Maximum upload size in megabytes.

    • max_files: Integer

      Maximum number of uploads allowed during the session.

Chat Session History

  • class ChatSessionHistory

    History retention preferences returned for the session.

    • enabled: bool

      Indicates if chat history is persisted for the session.

    • recent_threads: Integer

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

Chat Session Rate Limits

  • class ChatSessionRateLimits

    Active per-minute request limit for the session.

    • max_requests_per_1_minute: Integer

      Maximum allowed requests per one-minute window.

Chat Session Rate Limits Param

  • class ChatSessionRateLimitsParam

    Controls request rate limits for the session.

    • max_requests_per_1_minute: Integer

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

Chat Session Status

  • ChatSessionStatus = :active | :expired | :cancelled

    • :active

    • :expired

    • :cancelled

Chat Session Workflow Param

  • class ChatSessionWorkflowParam

    Workflow reference and overrides applied to the chat session.

    • id: String

      Identifier for the workflow invoked by the session.

    • state_variables: Hash[Symbol, String | bool | Float]

      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.

      • String = String

      • UnionMember1 = bool

      • Float = Float

    • tracing: Tracing{ enabled}

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

      • enabled: bool

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

    • version: String

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

ChatKit Attachment

  • class ChatKitAttachment

    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

      Preview URL for rendering the attachment inline.

    • type: :image | :file

      Attachment discriminator.

      • :image

      • :file

ChatKit Response Output Text

  • class ChatKitResponseOutputText

    Assistant response text accompanied by optional annotations.

    • annotations: Array[File{ source, type} | URL{ source, type}]

      Ordered list of annotations attached to the response text.

      • class File

        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.

            • :file
        • type: :file

          Type discriminator that is always file for this annotation.

          • :file
      • class URL

        Annotation that references a URL.

        • source: Source{ type, url}

          URL referenced by the annotation.

          • type: :url

            Type discriminator that is always url.

            • :url
          • url: String

            URL referenced by the annotation.

        • type: :url

          Type discriminator that is always url for this annotation.

          • :url
    • text: String

      Assistant generated text.

    • type: :output_text

      Type discriminator that is always output_text.

      • :output_text

ChatKit Thread

  • class ChatKitThread

    Represents a ChatKit thread and its current status.

    • id: String

      Identifier of the thread.

    • created_at: Integer

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

    • object: :"chatkit.thread"

      Type discriminator that is always chatkit.thread.

      • :"chatkit.thread"
    • status: Active{ type} | Locked{ reason, type} | Closed{ reason, type}

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

      • class Active

        Indicates that a thread is active.

        • type: :active

          Status discriminator that is always active.

          • :active
      • class Locked

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

        • reason: String

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

        • type: :locked

          Status discriminator that is always locked.

          • :locked
      • class Closed

        Indicates that a thread has been closed.

        • reason: String

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

        • type: :closed

          Status discriminator that is always closed.

          • :closed
    • title: String

      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.

ChatKit Thread Assistant Message Item

  • class ChatKitThreadAssistantMessageItem

    Assistant-authored message within a thread.

    • id: String

      Identifier of the thread item.

    • content: Array[ChatKitResponseOutputText]

      Ordered assistant response segments.

      • annotations: Array[File{ source, type} | URL{ source, type}]

        Ordered list of annotations attached to the response text.

        • class File

          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.

              • :file
          • type: :file

            Type discriminator that is always file for this annotation.

            • :file
        • class URL

          Annotation that references a URL.

          • source: Source{ type, url}

            URL referenced by the annotation.

            • type: :url

              Type discriminator that is always url.

              • :url
            • url: String

              URL referenced by the annotation.

          • type: :url

            Type discriminator that is always url for this annotation.

            • :url
      • text: String

        Assistant generated text.

      • type: :output_text

        Type discriminator that is always output_text.

        • :output_text
    • created_at: Integer

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

    • object: :"chatkit.thread_item"

      Type discriminator that is always chatkit.thread_item.

      • :"chatkit.thread_item"
    • thread_id: String

      Identifier of the parent thread.

    • type: :"chatkit.assistant_message"

      Type discriminator that is always chatkit.assistant_message.

      • :"chatkit.assistant_message"

ChatKit Thread Item List

  • class ChatKitThreadItemList

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

    • data: Array[ChatKitThreadUserMessageItem | ChatKitThreadAssistantMessageItem | ChatKitWidgetItem | 3 more]

      A list of items

      • class ChatKitThreadUserMessageItem

        User-authored messages within a thread.

        • id: String

          Identifier of the thread item.

        • attachments: Array[ChatKitAttachment]

          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

            Preview URL for rendering the attachment inline.

          • type: :image | :file

            Attachment discriminator.

            • :image

            • :file

        • content: Array[InputText{ text, type} | QuotedText{ text, type}]

          Ordered content elements supplied by the user.

          • class InputText

            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.

              • :input_text
          • class QuotedText

            Quoted snippet that the user referenced in their message.

            • text: String

              Quoted text content.

            • type: :quoted_text

              Type discriminator that is always quoted_text.

              • :quoted_text
        • created_at: Integer

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

        • inference_options: InferenceOptions{ model, tool_choice}

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

          • model: String

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

          • tool_choice: ToolChoice{ id}

            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.

          • :"chatkit.thread_item"
        • thread_id: String

          Identifier of the parent thread.

        • type: :"chatkit.user_message"

          • :"chatkit.user_message"
      • class ChatKitThreadAssistantMessageItem

        Assistant-authored message within a thread.

        • id: String

          Identifier of the thread item.

        • content: Array[ChatKitResponseOutputText]

          Ordered assistant response segments.

          • annotations: Array[File{ source, type} | URL{ source, type}]

            Ordered list of annotations attached to the response text.

            • class File

              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.

                  • :file
              • type: :file

                Type discriminator that is always file for this annotation.

                • :file
            • class URL

              Annotation that references a URL.

              • source: Source{ type, url}

                URL referenced by the annotation.

                • type: :url

                  Type discriminator that is always url.

                  • :url
                • url: String

                  URL referenced by the annotation.

              • type: :url

                Type discriminator that is always url for this annotation.

                • :url
          • text: String

            Assistant generated text.

          • type: :output_text

            Type discriminator that is always output_text.

            • :output_text
        • created_at: Integer

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

        • object: :"chatkit.thread_item"

          Type discriminator that is always chatkit.thread_item.

          • :"chatkit.thread_item"
        • thread_id: String

          Identifier of the parent thread.

        • type: :"chatkit.assistant_message"

          Type discriminator that is always chatkit.assistant_message.

          • :"chatkit.assistant_message"
      • class ChatKitWidgetItem

        Thread item that renders a widget payload.

        • id: String

          Identifier of the thread item.

        • created_at: Integer

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

        • object: :"chatkit.thread_item"

          Type discriminator that is always chatkit.thread_item.

          • :"chatkit.thread_item"
        • thread_id: String

          Identifier of the parent thread.

        • type: :"chatkit.widget"

          Type discriminator that is always chatkit.widget.

          • :"chatkit.widget"
        • widget: String

          Serialized widget payload rendered in the UI.

      • class ChatKitClientToolCall

        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: Integer

          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.

          • :"chatkit.thread_item"
        • output: String

          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.

          • :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.

          • :"chatkit.client_tool_call"
      • class ChatKitTask

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

        • id: String

          Identifier of the thread item.

        • created_at: Integer

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

        • heading: String

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

        • object: :"chatkit.thread_item"

          Type discriminator that is always chatkit.thread_item.

          • :"chatkit.thread_item"
        • summary: String

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

        • task_type: :custom | :thought

          Subtype for the task.

          • :custom

          • :thought

        • thread_id: String

          Identifier of the parent thread.

        • type: :"chatkit.task"

          Type discriminator that is always chatkit.task.

          • :"chatkit.task"
      • class ChatKitTaskGroup

        Collection of workflow tasks grouped together in the thread.

        • id: String

          Identifier of the thread item.

        • created_at: Integer

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

        • object: :"chatkit.thread_item"

          Type discriminator that is always chatkit.thread_item.

          • :"chatkit.thread_item"
        • tasks: Array[Task{ heading, summary, type}]

          Tasks included in the group.

          • heading: String

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

          • summary: String

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

          • type: :custom | :thought

            Subtype for the grouped task.

            • :custom

            • :thought

        • thread_id: String

          Identifier of the parent thread.

        • type: :"chatkit.task_group"

          Type discriminator that is always chatkit.task_group.

          • :"chatkit.task_group"
    • first_id: String

      The ID of the first item in the list.

    • has_more: bool

      Whether there are more items available.

    • last_id: String

      The ID of the last item in the list.

    • object: :list

      The type of object returned, must be list.

      • :list

ChatKit Thread User Message Item

  • class ChatKitThreadUserMessageItem

    User-authored messages within a thread.

    • id: String

      Identifier of the thread item.

    • attachments: Array[ChatKitAttachment]

      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

        Preview URL for rendering the attachment inline.

      • type: :image | :file

        Attachment discriminator.

        • :image

        • :file

    • content: Array[InputText{ text, type} | QuotedText{ text, type}]

      Ordered content elements supplied by the user.

      • class InputText

        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.

          • :input_text
      • class QuotedText

        Quoted snippet that the user referenced in their message.

        • text: String

          Quoted text content.

        • type: :quoted_text

          Type discriminator that is always quoted_text.

          • :quoted_text
    • created_at: Integer

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

    • inference_options: InferenceOptions{ model, tool_choice}

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

      • model: String

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

      • tool_choice: ToolChoice{ id}

        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.

      • :"chatkit.thread_item"
    • thread_id: String

      Identifier of the parent thread.

    • type: :"chatkit.user_message"

      • :"chatkit.user_message"

ChatKit Widget Item

  • class ChatKitWidgetItem

    Thread item that renders a widget payload.

    • id: String

      Identifier of the thread item.

    • created_at: Integer

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

    • object: :"chatkit.thread_item"

      Type discriminator that is always chatkit.thread_item.

      • :"chatkit.thread_item"
    • thread_id: String

      Identifier of the parent thread.

    • type: :"chatkit.widget"

      Type discriminator that is always chatkit.widget.

      • :"chatkit.widget"
    • widget: String

      Serialized widget payload rendered in the UI.

Thread Delete Response

  • class ThreadDeleteResponse

    Confirmation payload returned after deleting a thread.

    • id: String

      Identifier of the deleted thread.

    • deleted: bool

      Indicates that the thread has been deleted.

    • object: :"chatkit.thread.deleted"

      Type discriminator that is always chatkit.thread.deleted.

      • :"chatkit.thread.deleted"