Cortex Analyst API

The Snowflake Cortex Analyst API is a REST API that allows end user to chat with their data leveraging semantic models to generate SQL queries.

OpenAPI Specification

cortex-analyst.yaml Raw ↑
openapi: 3.0.0
servers:
- description: Snowflake API
  url: https://org-account.snowflakecomputing.com
info:
  version: 0.0.1
  title: Cortex Analyst API
  description: The Snowflake Cortex Analyst API is a REST API that allows end user to chat with their data leveraging semantic models to generate SQL queries.
  contact:
    name: Snowflake, Inc.
    url: https://snowflake.com
    email: support@snowflake.com
paths:
  /api/v2/cortex/analyst/feedback:
    post:
      operationId: sendFeedback
      tags:
      - cortex-analyst
      description: Send a user feedback of Cortex Analyst response
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendFeedbackRequest'
            examples:
              SendfeedbackRequestExample:
                summary: Default sendFeedback request
                x-microcks-default: true
                value:
                  request_id: '500123'
                  positive: true
                  feedback_message: example_value
      responses:
        '200':
          $ref: common.yaml#/components/responses/200SuccessResponse
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/v2/cortex/analyst/message:
    post:
      operationId: sendMessage
      tags:
      - cortex-analyst
      summary: Send a Data Question to the Cortex Analyst
      description: Send a data question to the Cortex Analyst
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendMessageRequest'
            examples:
              SendmessageRequestExample:
                summary: Default sendMessage request
                x-microcks-default: true
                value:
                  semantic_model_file: example_value
                  semantic_model: example_value
                  semantic_view: example_value
                  semantic_models:
                  - semantic_model_file: example_value
                    semantic_view: example_value
                    inline_semantic_model: example_value
                  stream: true
                  operation: sql_generation
                  warehouse: example_value
                  messages:
                  - role: user
                    content: {}
                  source: example_value
                  experimental: example_value
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendMessageResponse'
              examples:
                Sendmessage200Example:
                  summary: Default sendMessage 200 response
                  x-microcks-default: true
                  value:
                    message:
                      role: user
                      content:
                      - {}
                    request_id: '500123'
                    warnings:
                    - message: example_value
                    semantic_model_selection:
                      index: 10
                    response_metadata: example_value
            text/event-stream:
              schema:
                type: string
              examples:
                Sendmessage200Example:
                  summary: Default sendMessage 200 response
                  x-microcks-default: true
                  value: example_value
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/v2/cortex/analyst/verified-query-suggestions:
    post:
      operationId: generateVerifiedQuerySuggestions
      tags:
      - cortex-analyst
      summary: Generate Vq Suggestions for a Semantic Model
      description: Generate VQ suggestions for a semantic model
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateVerifiedQuerySuggestionsRequest'
            examples:
              GenerateverifiedquerysuggestionsRequestExample:
                summary: Default generateVerifiedQuerySuggestions request
                x-microcks-default: true
                value:
                  semantic_model:
                    semantic_model_file: example_value
                    semantic_view: example_value
                    inline_semantic_model: example_value
                  warehouse: example_value
                  experimental: example_value
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateVerifiedQuerySuggestionsResponse'
              examples:
                Generateverifiedquerysuggestions200Example:
                  summary: Default generateVerifiedQuerySuggestions 200 response
                  x-microcks-default: true
                  value:
                    request_id: '500123'
                    vq_suggestions:
                    - score: 42.5
                    warnings:
                    - message: example_value
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/v2/cortex/analyst/token:
    get:
      operationId: getScopedToken
      summary: Internal Endpoint to Exchange a Cortex Analyst Oauth Token
      description: Internal endpoint to exchange a Cortex Analyst Oauth token
      tags:
      - cortex-analyst
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenInfo'
              examples:
                Getscopedtoken200Example:
                  summary: Default getScopedToken 200 response
                  x-microcks-default: true
                  value:
                    token: example_value
                    expiration_seconds: 10
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    TokenInfo:
      type: object
      properties:
        token:
          type: string
          example: example_value
        expiration_seconds:
          type: integer
          example: 10
    StatusUpdate:
      type: object
      properties:
        status:
          description: The latest status for processing the request
          type: string
          example: example_value
        status_message:
          description: A human readable description on the current request processing status
          type: string
          example: example_value
        request_id:
          type: string
          description: Unique request ID.
          example: '500123'
      required:
      - status
    SemanticModelSelection:
      type: object
      properties:
        index:
          description: The index of the selected semantic model
          type: integer
          format: int32
          example: 10
        identifier:
          $ref: '#/components/schemas/SemanticModelObject'
    MessageContentDelta:
      type: object
      properties:
        type:
          type: string
          example: example_value
        index:
          type: integer
          description: The index of the content array this delta object represents
          example: 10
      discriminator:
        propertyName: type
        mapping:
          text: '#/components/schemas/MessageContentDeltaTextObject'
          sql: '#/components/schemas/MessageContentDeltaSqlObject'
          suggestions: '#/components/schemas/MessageContentDeltaSuggestionsObject'
          chart: '#/components/schemas/MessageContentChartObject'
    MessageContentDeltaTextObject:
      allOf:
      - $ref: '#/components/schemas/MessageContentDelta'
      - title: Text
        type: object
        description: The text content that is part of a message.
        properties:
          text_delta:
            type: string
            description: The delta of the text content, clients should concatenate all deltas for the same index
            example: To answer the question "What is the profit per store?" we must aggregate sales at the store level
        required:
        - text_delta
    MessageContentDeltaSqlObject:
      allOf:
      - $ref: '#/components/schemas/MessageContentDelta'
      - title: SQL
        type: object
        description: The SQL content that is part of a message.
        properties:
          statement_delta:
            type: string
            description: The delta of the sql statement, clients should concatenate all deltas for the same index
            example: SELECT store, SUM(profit) FROM sales GROUP BY store
          confidence:
            $ref: '#/components/schemas/Confidence'
        required:
        - statement_delta
    MessageContentDeltaSuggestionsObject:
      allOf:
      - $ref: '#/components/schemas/MessageContentDelta'
      - title: Suggested Questions
        type: object
        description: If SQL cannot be generated, a list of questions the semantic model can generate SQL for.
        properties:
          suggestions_delta:
            $ref: '#/components/schemas/SuggestionDelta'
        required:
        - suggestions_delta
    SuggestionDelta:
      type: object
      properties:
        index:
          type: integer
          description: The index of the suggestions array this delta object represents
          example: 10
        suggestion_delta:
          type: string
          description: The delta of a suggestion text, clients should concatenate all deltas for the same index
          example: example_value
    StreamingError:
      type: object
      properties:
        message:
          type: string
          description: A description of the error
          example: example_value
        code:
          type: string
          description: The Snowflake error code categorizing the error
          example: example_value
        request_id:
          type: string
          description: Unique request ID
          example: '500123'
    SendMessageResponse:
      type: object
      description: The non-streaming response object for the sendMessage
      properties:
        message:
          $ref: '#/components/schemas/MessageObject'
        request_id:
          type: string
          description: Unique request ID
          example: '500123'
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/Warning'
          example: []
        semantic_model_selection:
          $ref: '#/components/schemas/SemanticModelSelection'
        response_metadata:
          type: object
          additionalProperties: true
          example: example_value
      required:
      - message
    Warning:
      type: object
      title: The warning object
      description: Represents a warning within a chat.
      properties:
        message:
          type: string
          description: A human-readable message describing the warning
          example: example_value
    Warnings:
      type: object
      description: Represents a wrapper schema around Warning for streaming case
      properties:
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/Warning'
          example: []
    SemanticModelObject:
      type: object
      title: the semantic model object
      description: Represents a semantic model object
      properties:
        semantic_model_file:
          description: The path to a file stored in a Snowflake Stage holding the semantic model yaml. Must be a fully qualified stage url
          type: string
          example: '@db.schema.stage/path/to/file.yaml'
        semantic_view:
          description: The name of the Snowflake native semantic model object
          type: string
          example: db.schema.semantic_view
        inline_semantic_model:
          description: A string containing the entire semantic model yaml
          type: string
          example: 'name: my_semantic_model\ntables:\n  - name: orders\n...'
    MessageObject:
      type: object
      title: The message object
      description: Represents a message within a chat.
      properties:
        role:
          description: The entity that produced the message. One of `user` or `analyst`.
          type: string
          enum:
          - user
          - analyst
          example: user
        content:
          description: The content of the message in array of text or SQL.
          type: array
          items:
            $ref: '#/components/schemas/MessageContent'
          example: []
      required:
      - content
    MessageContent:
      type: object
      properties:
        type:
          type: string
          enum:
          - text
          - sql
          - suggestions
          - results
          - chart
          example: text
      discriminator:
        propertyName: type
        mapping:
          text: '#/components/schemas/MessageContentTextObject'
          sql: '#/components/schemas/MessageContentSqlObject'
          suggestions: '#/components/schemas/MessageContentSuggestionsObject'
          results: '#/components/schemas/MessageContentResultsObject'
          chart: '#/components/schemas/MessageContentChartObject'
    MessageContentTextObject:
      allOf:
      - $ref: '#/components/schemas/MessageContent'
      - title: Text
        type: object
        description: The text content that is part of a message.
        properties:
          text:
            type: string
            example: To answer the question "What is the profit per store?" we must aggregate sales at the store level
        required:
        - text
    MessageContentSqlObject:
      allOf:
      - $ref: '#/components/schemas/MessageContent'
      - title: SQL
        type: object
        description: The SQL content that is part of a message.
        properties:
          statement:
            type: string
            description: The executable SQL statement
            example: SELECT store, SUM(profit) FROM sales GROUP BY store
          confidence:
            $ref: '#/components/schemas/Confidence'
        required:
        - statement
    MessageContentSuggestionsObject:
      allOf:
      - $ref: '#/components/schemas/MessageContent'
      - title: Suggested Questions
        type: object
        description: If SQL cannot be generated, a list of questions the semantic model can generate SQL for.
        properties:
          suggestions:
            type: array
            items:
              type: string
              example: What is the lifetime revenue for the top 5 clients?
        required:
        - suggestions
    MessageContentResultsObject:
      allOf:
      - $ref: '#/components/schemas/MessageContent'
      - title: Results
        type: object
        description: Query ID of the executed query
        properties:
          query_id:
            type: string
        required:
        - query_id
    MessageContentChartObject:
      allOf:
      - $ref: '#/components/schemas/MessageContent'
      - title: Chart
        type: object
        description: The chart specification that is part of a message.
        properties:
          chart_spec:
            type: string
        required:
        - chart_spec
    SendMessageRequest:
      type: object
      description: The request object for sendMessage requests
      properties:
        semantic_model_file:
          type: string
          description: The path to a file stored in a Snowflake Stage holding the semantic model yaml. Must be a fully qualified stage url
          example: '@db.schema.stage/path/to/file.yaml'
        semantic_model:
          type: string
          description: A string containing the entire semantic model yaml
          example: 'name: my_semantic_model\ntables:\n  - name: orders\n...'
        semantic_view:
          type: string
          description: The name of the Snowflake native semantic model object
          example: db.schema.semantic_view
        semantic_models:
          type: array
          description: A list of semantic model objects. If set, other semantic model properties are ignored
          items:
            $ref: '#/components/schemas/SemanticModelObject'
          example: []
        stream:
          type: boolean
          description: Whether to stream the response or not
          default: false
          example: true
        operation:
          type: string
          enum:
          - sql_generation
          - answer_generation
          description: Whether to response with SQL or natural language. One of 'sql_generation' or 'answer_generation'
          default: sql_generation
          example: sql_generation
        warehouse:
          type: string
          description: Warehouse name to use for result set handling. Only used when 'operation' is 'answer_generation'
          example: example_value
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageObject'
          example: []
        source:
          type: string
          description: an optional field to specify the source of the request. e.g "eval", "prod"
          example: example_value
        experimental:
          type: string
          description: JSON serialized string of experimental API fields (undocumented).
          example: example_value
      required:
      - messages
    Confidence:
      type: object
      description: The verified query the response is based on
      properties:
        verified_query_used:
          $ref: '#/components/schemas/VerifiedQuery'
    VerifiedQuery:
      type: object
      description: VerifiedQuery represents a (question, sql) pair that has been manually verified (e.g. by an analyst) to be correct.
      properties:
        name:
          type: string
          description: A name for this verified query. Mainly used for display purposes.
          example: Example Title
        question:
          type: string
          description: The question being answered.
          example: example_value
        sql:
          type: string
          description: The correct SQL query for answering the question.
          example: example_value
        verified_at:
          type: integer
          format: int64
          description: Timestamp at which the query was last verified - measures in seconds since epoch, in UTC.
          example: '2026-01-15T10:30:00Z'
        verified_by:
          type: string
          description: Name of the person who verified this query.
          example: example_value
    SendFeedbackRequest:
      type: object
      description: The request object for sending user feedback on Cortex Analyst responses
      properties:
        request_id:
          type: string
          description: Request id associated with the feedback
          example: '500123'
        positive:
          type: boolean
          description: Whether the response was good (true) or bad (false)
          example: true
        feedback_message:
          type: string
          description: The text for the detailed feedback message
          example: example_value
      required:
      - request_id
      - positive
    GenerateVerifiedQuerySuggestionsRequest:
      type: object
      description: The request object for getting VQ suggestions
      properties:
        semantic_model:
          $ref: '#/components/schemas/SemanticModelObject'
        warehouse:
          type: string
          description: Warehouse name to use for processing suggestions.
          example: example_value
        experimental:
          type: string
          description: JSON serialized string of experimental API fields (undocumented).
          example: example_value
      required:
      - semantic_model
    GenerateVerifiedQuerySuggestionsResponse:
      type: object
      description: The non-streaming response object for the VQ Suggestions request
      properties:
        request_id:
          type: string
          description: Unique request ID
          example: '500123'
        vq_suggestions:
          type: array
          items:
            $ref: '#/components/schemas/VerifiedQuerySuggestion'
          example: []
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/Warning'
          example: []
    VerifiedQuerySuggestion:
      type: object
      description: A suggestion to add or remove or replace a Verified Query to a semantic model.
      properties:
        score:
          type: number
          description: Score of the suggestion, higher is better.
          format: float
          example: 42.5
        vq_to_add:
          $ref: '#/components/schemas/VerifiedQuery'
        vq_to_remove:
          $ref: '#/components/schemas/VerifiedQuery'
  securitySchemes:
    KeyPair:
      $ref: common.yaml#/components/securitySchemes/KeyPair
    ExternalOAuth:
      $ref: common.yaml#/components/securitySchemes/ExternalOAuth
    SnowflakeOAuth:
      $ref: common.yaml#/components/securitySchemes/SnowflakeOAuth
security:
- KeyPair: []
- ExternalOAuth: []
- SnowflakeOAuth: []