MyScale Python SDK (clickhouse-connect)

The recommended Python access path is the clickhouse-connect client, which wraps the ClickHouse HTTP interface (host, port 8443, username, password). It executes the same SQL over HTTP transport for table creation, inserts, and distance()-based vector queries, and is the path used by the LangChain and LlamaIndex MyScale integrations.

OpenAPI Specification

myscale-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: MyScale SQL (ClickHouse HTTP) Interface
  description: >-
    MyScale is a SQL vector database built on a ClickHouse fork (MyScaleDB). Its
    primary programmatic interface is SQL executed over the ClickHouse-compatible
    HTTP interface, exposed per cluster on HTTPS port 8443. A client sends a SQL
    statement (SELECT, INSERT, CREATE TABLE, ALTER, DROP) and authenticates with
    the cluster username and password via HTTP Basic auth or the X-ClickHouse-User
    and X-ClickHouse-Key headers. Vector similarity search is expressed in SQL
    using a VECTOR INDEX column and the distance() function rather than a separate
    REST surface. This OpenAPI document models that HTTP query interface. The
    underlying MyScaleDB engine is open source under Apache-2.0; cluster lifecycle
    management is performed through the MyScale Cloud web console and has no
    documented public REST management API.
  termsOfService: https://myscale.com/terms/
  contact:
    name: MyScale Support
    url: https://docs.myscale.com/en/
  license:
    name: Apache 2.0 (MyScaleDB engine)
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: '1.0'
servers:
  - url: https://{clusterHost}:8443
    description: Per-cluster ClickHouse-compatible HTTP endpoint (HTTPS).
    variables:
      clusterHost:
        default: your-cluster-host.aws.myscale.com
        description: >-
          Cluster host from the MyScale Cloud console Connection Details
          (MYSCALE_CLUSTER_URL).
paths:
  /:
    get:
      operationId: ping
      tags:
        - Query
      summary: Health / ping check.
      description: >-
        A GET to the root of the HTTP interface returns a simple "Ok." body when
        the server is reachable, used as a liveness check.
      responses:
        '200':
          description: Server is reachable.
          content:
            text/plain:
              schema:
                type: string
                example: "Ok.\n"
    post:
      operationId: query
      tags:
        - Query
      summary: Execute a SQL statement over HTTP.
      description: >-
        Executes an arbitrary SQL statement against the cluster. The SQL is sent
        as the raw request body (text/plain). This single endpoint covers all DDL
        and DML - SELECT, INSERT, CREATE TABLE (including VECTOR INDEX
        definitions), ALTER, and DROP - exactly as the ClickHouse HTTP interface
        behaves. Vector search is performed by issuing a SELECT that orders rows
        by the distance() function. Results may be requested in formats such as
        JSON, JSONEachRow, CSV, or TabSeparated via the default_format setting or
        a FORMAT clause.
      parameters:
        - name: query
          in: query
          required: false
          description: >-
            SQL statement, when supplied as a query-string parameter instead of
            the request body. Body and query parameter may be combined (e.g.
            DDL in query, data in body for INSERT).
          schema:
            type: string
        - name: database
          in: query
          required: false
          description: Default database for the statement.
          schema:
            type: string
            default: default
        - name: default_format
          in: query
          required: false
          description: >-
            Output format when the SQL does not include a FORMAT clause (e.g.
            JSON, JSONEachRow, CSV, TabSeparated).
          schema:
            type: string
            example: JSON
      requestBody:
        required: false
        description: Raw SQL statement.
        content:
          text/plain:
            schema:
              type: string
            examples:
              createVectorTable:
                summary: Create a table with a vector index
                value: |
                  CREATE TABLE IF NOT EXISTS default.articles
                  (
                      id UInt64,
                      title String,
                      content_vector Array(Float32),
                      CONSTRAINT cons_vec_len CHECK length(content_vector) = 768,
                      VECTOR INDEX article_idx content_vector TYPE HNSWFLAT('metric_type=Cosine')
                  )
                  ENGINE = MergeTree ORDER BY id
              vectorSearch:
                summary: Vector similarity search with distance()
                value: |
                  SELECT id, title, distance(content_vector, [0.1, 0.2, 0.3]) AS dist
                  FROM default.articles
                  ORDER BY dist ASC
                  LIMIT 10
      responses:
        '200':
          description: >-
            Statement executed successfully. The body contains the result set in
            the requested format (empty for statements that return no rows).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryResult'
            text/plain:
              schema:
                type: string
            text/tab-separated-values:
              schema:
                type: string
        '400':
          description: SQL parse or execution error.
          content:
            text/plain:
              schema:
                type: string
        '401':
          description: Authentication failed (bad username or password).
          content:
            text/plain:
              schema:
                type: string
        '403':
          description: User not authorized for the requested operation.
          content:
            text/plain:
              schema:
                type: string
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Cluster username and password (from the MyScale Cloud console Connection
        Details) supplied as HTTP Basic credentials.
    clickhouseUserHeader:
      type: apiKey
      in: header
      name: X-ClickHouse-User
      description: Cluster username, paired with X-ClickHouse-Key.
    clickhouseKeyHeader:
      type: apiKey
      in: header
      name: X-ClickHouse-Key
      description: Cluster password, paired with X-ClickHouse-User.
  schemas:
    QueryResult:
      type: object
      description: >-
        Result of a SELECT returned in the ClickHouse JSON format. Shape varies
        with the query; the common envelope includes meta, data, rows, and
        statistics.
      properties:
        meta:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              type:
                type: string
        data:
          type: array
          items:
            type: object
            additionalProperties: true
        rows:
          type: integer
        statistics:
          type: object
          properties:
            elapsed:
              type: number
            rows_read:
              type: integer
            bytes_read:
              type: integer
security:
  - basicAuth: []
  - clickhouseUserHeader: []
    clickhouseKeyHeader: []